第 8 章定时计数器的结构与应用定时计数器(Timer/Counter)是单片机中最基本的接口之一,它的用途非常广泛,常用于计数、延时、测量周期、频率、脉宽、提供定时脉冲信号等。在实际应用中,对于转速,位移、速度、流量等物理量的测量,通常也是由传感器转换成脉冲电信号,通过使用定时计数器来测量其周期或频率,再经过计算处理获得。相对于一般 8 位单片机而言,AVR 不仅配备了更多的定时计数器接口,而且还是增强型的,如通过定时计数器与比较匹配寄存器相互配合,生成占空比可变的方波信号,即脉冲宽度调制输出 PWM 信号,用于 D/A、马达无级调速控制、变频控制等,功能非常强大。ATmega16 一共配置了 2 个 8 位和 1 个 16 位,共 3 个定时计数器,它们是 8 位的定时计数器 T/C0、T/C2 和 16 位的定时计数器 T/C1。本章将着重对 AVR 的 8 位定时计数器的结构、功能和应用进行讲解,并介绍基本的使用设计方法。8.1定时计数器的结构在单片机内部,一般都会集成由专门硬件电路构成的可编程定时计数器。定时计数器最基本的功能就是对脉冲信号“自动”进行计数。这里所谓的“自动”,指计数的过程是由硬件完成的,不需要 MCU 的干预。但 MCU 可以通过指令设置定时计数器的工作方式,以及根据定时计数器的计数值或工作状态做必要的处理和响应。学习和使用定时计数器时,必须注意以下的基本要素:定时计数器的长度。定时计数器的长度是指计数单元的位长度,一般为 8 位(一个字节)或 16 位(2 个字节)。脉冲信号源。脉冲信号源是指输入到定时计数器的计数脉冲信号。通常用于定时计数器计数的脉冲信号可以由外部输入引脚提供,也可以由单片机内部提供。计数器类型。计数器类型是指计数器的计数运行方式,可分为加一(减一)计数器,单程计数或双向计数等。计数器的上下限。计数器的上下限指计数单元的最小值和最大值。一般情况下,计数器的下限值为零,上限值为计数单元的最大计数值,即 255(8 位)或65535(16 位)。需要注意的是,当计数器工作在不同模式下时,计数器的上限值并不都是计数单元的最大计数值 255 或 65535,它将取决于用户的配置和设定。计数器的事件。计数器的事件指计数器处于某种状态时的输出信号,该信号通常可以向 MCU 申请中断。如当计数器计数到达计数上限值 255 时,产生“溢出”信号,向 MCU 申请中断。8.1.1 8 位定时计数器 T/C0 的结构ATmega16 中有...