AVR 倒计时器

AVR Countdown timer

我正在尝试使用主频为 8 MHz 的 ATmega32 制作倒数计时器。

我想使用 ATmega 计时器在按下开关时开始倒计时 8 分钟,输出应打开 8 分钟,当倒计时为零时,输出应关闭,倒计时返回到零。 (所有这些我都想在 16*2 LCD 上展示)。我知道我必须为此使用计时器,但我真的不确定该怎么做。有什么建议吗?

AVR 计时器是否可能造成这么长的延迟?

请不要生我的气(我不想通过回答我自己的问题来不尊重你们)。我曾尝试自己解决我的问题并且我已经做到了,这段代码有效谢谢你宝贵的时间回答我的问题。我已经发布了代码,以便新人可以从中受益。谢谢你的时间。

volatile uint16_t second_count = 0;

void init_timer1(void);

void init_timer1()
{
    TCCR1B |= (1<<WGM12);//CTC mode
    TCNT1 = 0;//initializing timer
    OCR1A = 31249;//preloading timer so that it can count with 1 sec 
    TIMSK |= (1<<OCIE1A);//Timer compare A Match interrupt
    TCCR1B |= (1<<CS12);//Starting timer and clock prescaler(256)
}

ISR(TIMER1_COMPA_vect)
{
    second_count++;
    if(second_count == 180)//turing the output on for 180 seconds on power on
    {
        PORTD |= (1<<PD6);
    }   
    else
    {
        PORTD &= ~(1<<PD6);
        second_count = 0;
    }

}
int main(void)
{
    init_timer1();
    sei();
    DDRD = 0xff;
    PORTD = 0x00;
    DDRB = 0x00;
    PORTB = 0xff;
    while(1)
    {

    }
}