文章目录
引言
定时器和计数器是用于测量时间间隔或计数事件的硬件模块。它们可以在许多应用中使用,例如生成精确的时间延迟、测量频率、计数外部事件等。51单片机的定时器属于单片机的内部资源,其电路的连接和运转均在单片机内部完成。本文将详细介绍51单片机中的定时器和计数器的工作原理、配置方法及其应用。
本章节将涉及中断相关的知识,具体内容可参考:中断系统讲解
注意:定时器的资源和单片机的型号是关联在一起的,不同型号的单片机可能会有不同的定时器数量和操作方式,但一般来说,T0和T1的操作方式是所有51单片机所共有的。
定时器工作原理
定时器在单片机内部就像一个小闹钟,根据时钟的输出信号,每隔“一秒”,计数单元的数值就增加一。当计数单元数值增加到“设定的闹钟提醒时间”时,计数单元就会向中断系统发出中断申请,产生“响铃提醒”,使程序跳转到中断服务函数中执行。
定时器/计数器的工作原理基于时钟脉冲。定时器模式下,它们使用内部时钟源来计数;计数器模式下,它们使用外部脉冲源来计数。每个定时器/计数器都有一个寄存器,用于存储当前的计数值。
TMOD定时器/计数器工作模式寄存器
定时和计数功能由特殊功能寄存器TMOD的控制位 C T C\sqrt{T} CT进行选择,TMOD寄存器的各位信息如下表所列。可以看出,2个定时/计数器有四种操作模式,通过TMOD的M1和M0选择。2个定时/计数器的模式0、1和2都相同,模式3不同,各模式下的功能如下所述:
定时器工作模式
通过对寄存器TMOD寄存器中的M1、M0的设置,定时器/计数器0和1有四种不同的工作模式。
模式0(13位定时器/计数器)
工作模式图如下:
模式1(16位定时器/计数器)
模式1除了使用了TH0及TL0全部16位外,其他与模式0完全相同。此模式下,TL0的8位溢出向TH0进位,TH0溢出置位TCON中的溢出标志位TF0。
当GATE=0(TMOD.3)时,如TR0=1,则定时器计数。GATE=1时,允许由外部输入INTO控制定时器0,这样可实现脉宽测量。TRO为TCON寄存器内的控制位,TCON寄存器各位的具体功能描述见上节TCON寄存器的介绍。
注意:STC89C51RC/RD+系列单片机的定时器有两种计数速率:一种是12T模式,每12个时钟加1,与传统8051单片机相同;另外一种是6T模式,每6个时钟加1,速度是传统8051单片机的2倍T0的速率在烧录用户程序时在STC-ISP编程器中设置。
模式2(8位自动重装模式)
此模式下定时器/计数器可自动重装载8位计数器,TL0的溢出不仅置位TF0,而且将TH0内容重新装入TL0。(TH0可先设置好,重装时TH0内容不变)
模式3(两个8位计数器)
对定时器0,在此模式中,定时器1停止计数,效果与将TR1设置为0相同。
对定时器0,此模式下定时器0的TL0及TH0作为2个独立的8位计数器。下图为模式3时的定时器0逻辑图。TL0占用定时器0的控制位: C T C\sqrt{T} CT、GATE、TRO、INTO及TFO。THO限定为定时器功能(计数器周期),占用定时器1的TR1及TF1。此时,TH0控制定时器1中断。
模式3是为了增加一个附加的8位定时器/计数器而提供的,使单片机具有三个定时器/计数器。模式3只适用于定时器/计数器0,定时器T1处于模式3时相当于TR1-0,停止计数,而T0可作为两个定时器用。
定时器配置流程
- 对TMOD赋值,以确定T0和T1的工作方式。
- 根据所要定时的时间计算初值,并将其写入TH0、TL0或TH1、TL1。
- 如果使用中断,则对EA赋值,开放定时器总中断。
- 使TR0或TR1置位,启动定时/计数器定时或计数。
注意:STC-ISP烧写工具自带计算所要定时的时间计算初值,可根据自己选择的模式,进行复制代码即可