16位定时器/计数器的计数单元
16位T/C的主要部分是可编程的l6位双向计数器单元。图2—34给出了计数器与其外围电路方框图。
count:TCNTn加1或减l。
direction:确定是加操作还是减操作。
clear:TCNTn清零。
clkTn:定时器/计数器时钟信号。
TOP:表示TCNTn计数器达到最大值。
BOTTOM:表示TCNTn计数器达到最小值(0)。
16位计数器映射到两个8位I/O存储器位置:TCNTnH为高8位,TCNTnL为低8位。CPU只能间接访问TCNTnH寄存器。CPU访问TCNTnH时,实际访问的是临时寄存器(TEMP)。读取TCNTnL时,临时寄存器的内容更新为TCNTnH的数值;而对TCNTnL执行写操作时,TCNTnH被临时寄存器的内容所更新。这就使CPU可以在一个时钟周期里通过8位数据总线完成对l 6位计数器的读、写操作。此外,还需要注意计数器在运行时的一些特殊情况。在这些特殊情况下,对TCNTn写入数据会带来未知的结果。
根据工作模式的不同,在每一个clkTn时钟到来时,计数器进行清零、加l或减l操作。clkTn由时钟选择位CSn2:0设定,当CSn2:0=0时,计数器停止计数。不过CPU对TCNTn的读取与clkTn是否存在无关。CPU写操作比计数器清零和其他操作的优先级都高。计数器的计数序列取决于寄存器TCCRnA和TCCRnB中标志位WGMn3:0的设置。计数器的运行(计数)方式与通过OCnx输出的波形发生方式有很紧密的关系。
通过WGMn3:0确定了计数器的工作模式之后,TOVn的置位方式也就确定了。TOVn可以用来产生CPU中断。
【电子街】推荐阅读: