AVR定时器编程

时间:2013-09-30 16:47:54

标签: timer microcontroller avr

我正在那本书中学习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可以清楚地显示它?

1 个答案:

答案 0 :(得分:0)

1+FFFF-7A12 = 0x8255 //what this step means

这不是使用计时器的常用方法,但它会从0减去数字(相当于0xFFFF + 1),以便“倒计时”并在计时器达到0时跳闸。

对我们TOC(定时器输出比较)更有意义。

TIFR = 0x1 //clears TIFR??

是。该寄存器不是存储单元。它映射到内存位置。有些寄存器以这种方式工作。