use*_*573 2 c microcontroller avr atmega
我有以下程序......
"编写一个程序,以一定的延迟连续切换PORTB的所有位.使用Timer0,正常模式,没有预分频器选项."
#include….
void T0Delay()
int main ()
DDRB= 0xFF;
while (1) {
PORTB=0x55;
T0Delay();
PORTB=0xAA;
T0Delay();
}
void T0Delay ()
{
TCNT0=0x20;
TCCR0=0x01;
while ((TIFR&01)==0);
TCCR0=0;
TIFR=0x01;
}
Run Code Online (Sandbox Code Playgroud)
在"TODelay()"函数中,"while((TIFR&01)== 0)"的功能是什么?为什么这个循环设置TCCR0 = 0和TIFR = 0x01?有人可以解释这段代码吗?
声明while ((TIFR&01)==0);是整个循环.后面的两个语句不是此循环的一部分,并在循环结束后执行.
此循环的目的是等到TIFR设置的最低有效位.据推测,这被声明为易失整数,并映射到控制输入端口的地址(否则此循环将永远不会终止).