我正在那本书中学习avr计时器(Mazidi),其中一个程序在计时器章节中给出,它表示每当我们需要计算输入TCNT0内部的值时,我们应该像这样计算。例如8Mhz,256个预标度,1 s延迟
8 Mhz = .125 usec
256 x 0.125 = 32 usec
for 1 ms delay
1sec / 32usec = 31250 clock cycles = 0x7A12
so the value for TCNT0 is
1+FFFF-7A12 = 0x8255 //what this step means
同样在轮询时,我们寻找TIFR第0位为1.当它变为1时,我们停止计时器并停止时钟源,但为什么我们这样做
TIFR = 0x1 //clears TIFR??
在书中写道,它清除了TIFR。当该位已经为1时,如何将其写为1可以清楚地显示它?
答案 0 :(得分:0)
1+FFFF-7A12 = 0x8255 //what this step means
这不是使用计时器的常用方法,但它会从0减去数字(相当于0xFFFF + 1),以便“倒计时”并在计时器达到0时跳闸。
对我们TOC(定时器输出比较)更有意义。
TIFR = 0x1 //clears TIFR??
是。该寄存器不是存储单元。它映射到内存位置。有些寄存器以这种方式工作。