AVR单片机定时器0的程序···结果不是每隔1秒闪烁···八个灯是一直亮着··求高手指点,用的AVRSTUDIO5

2025-05-18 18:17:12
推荐回答(1个)
回答1:

我觉的你的for循环有些问题,给你的main改一下,你参考一下
void main(void)
{
DDRB=0xff;
TCNT0=55;
TCCR0|=0X02;
while(1)
{
if(!(TIFR&(1<{
TCNT0=55;
PORTB=0XFF;
此处如过想让灯亮长点可以加延时函数,我个人认为一般是亮一秒灭一秒这样的闪烁比较好看,所以最好不用延时函数,而是重新修改下程序。
}
else
PORTB=0;
}
如果做一秒亮一秒灭程序我认为如下
void main(void)
{
unsigned char i=0;
DDRB=0xff;
TCNT0=55;
TCCR0|=0X02;
while(1)
{
if(!(TIFR&(1< {i=~i;TCNT0=55;}
if(i)
PORTB=0;
else
PORTB=0XFF;
}
}