gpt4 book ai didi

c - 不懂ATmega32定时器延时程序

转载 作者:行者123 更新时间:2023-12-05 09:22:48 25 4
gpt4 key购买 nike

我有以下程序...

“编写一个程序,以一定的延迟连续切换 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;
}

在“TODelay()”函数中,“while ((TIFR&01)==0)”语句的作用是什么?为什么这个循环设置 TCCR0=0 和 TIFR=0x01?谁能解释一下这段代码?

最佳答案

语句 while ((TIFR&01)==0); 是整个循环。后面的两个语句不是这个循环的一部分,在循环结束后执行。

这个循环的目的是等到 TIFR 的最低有效位被设置。大概这在某处被声明为一个易失整数,并映射到控制输入端口的地址(否则这个循环将永远不会终止)。

关于c - 不懂ATmega32定时器延时程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24599118/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com