相关知识
1.2.1 单片机定时器
1.2.1 定时计数器的结构
1.定时/计数器的基本知识
定时/计数器是单片机系统一个重要的部件,其工作方式灵活、编程简单、使用方便,可用来实现定时控制、延时、频率测量、脉宽测量、信号发生、信号检测等。此外,定时/计数器还可作为串行通信中波特率发生器。定时/计数器的结构如图1-45所示。
图1-45 定时/计数器结构
8051单片机内有两个定时/计数器,分别为T0和T1。
T0和T1有两种功能:定时和计数。
(1)定时功能 启动后,开始定时,定时时间到,中断标志位TF0/TF1自动置1,向CPU申请中断。
定时功能也是以计数方式来工作的,此时是对单片机内部的脉冲进行加1计数,此脉冲的周期正好等于机器周期。
定时时间=(溢出值-计数初值)×机器周期
(2)计数功能 启动后,对外部输入脉冲(负跳变)进行加1计数,T0的脉冲由P3.4输入,T1的脉冲由P3.5输入。
计数器加满溢出时,将中断标志位TF0/TF1置1,向CPU申请中断。
计数脉冲个数=溢出值-计数初值
2.定时/计数器寄存器
(1)定时器、计数器模式控制寄存器TMOD(见表1-2)
表1-2 控制寄存器TMOD
TMOD的高4位与低4位是相似的。只要了解了高4位的含义,低4位也就相应地知晓了。下面介绍每一位的含义。
GATE位:门控位,当GATE=0,只要软件控制TR0或TR1即可启动定时计数器工作,称为软件启动。
GATE=1时,称为硬件启动,只有TR0或TR1等于1且INT0或INT1为高电平时才能启动相应的定时器开始工作。
对于定时器T0,定时器的启动与P3.2有关,对于定时器T1,定时器的启动与P3.3有关。
C/T:定时计数功能选择位。
M1M0:定时/计数器工作方式设置位。
M1M0=00 工作方式0 13位定时/计数器,最大计数值213=8192。
M1M0=01 工作方式1 16位定时/计数器,最大计数值216=65536。
M1M0=10 工作方式2 初值自动重装8位定时/计数器,最大计数值28=256。
M1M0=11 工作方式3 两个独立8位定时/计数器,仅适用于T0。
(2)定时/计数器控制寄存器TCON
1)TF1:定时器1溢出标志位。当定时器1计满数产生溢出时,由硬件自动置TF1=1。
2)TR1:定时器1运行控制位。由软件置1或清0来启动或关闭定时器1。当GATE=1,且为高电平时,TR1置1启动定时器1;当GATE=0时,TR1置1即可启动定时器1。
3)TF0:定时器0溢出标志位。其功能及操作情况同TF1。
4)TR0:定时器0运行控制位。其功能及操作情况同TR1。
(3)定时/计数器的工作过程
定时/计数器的工作过程主要包含以下四个步骤:
1)确定定时/计数器工作方式。
2)预置定时/计数器的初值。
3)启动定时器/计数器。
4)等待定时/计数溢出。
3.定时/计数器的工作方式
(1)工作方式0 T0有四种工作方式,T1有三种工作方式。
方式0——13位计数器方式,溢出值是:213=8192。
方式1——16位计数器方式,溢出值是:216=65536。
方式2——8位自动重装初值方式,溢出值是:28=256。
方式3——T0分成两个独立的8位计数器方式。
当方式控制寄存器TMOD中定时/计数器的M1M0=00时,定时/计数器处于工作方式0。工作方式0是13位计数器工作方式,其计数器由TH0或TH1的8位和TL0或TL1的低5位构成,TL0和TL1的高3位未使用,组成13位的定时计数器。TL0或TL1低5位计数满(32)时不向TL0或TL1第6位进位,而是向TH0或TH1进位,高8位计数满(256)时发生溢出,TF0或TF1置“1”,并申请中断。
当寄存器TMOD中的计数/定时(C/T)控制位=0时,多路开关接通振荡脉冲的12分频输出,13位计数器依次进行计数,这就是定时工作方式。
当C/T=1时,多路开关接通计数引脚P3.4,外部计数脉冲由单片机引脚P3.4输入。当计数脉冲发生负跳变时,计数器加1,这就是T0的计数工作方式,如图1-46所示。
图1-46 定时/计数器T0工作方式0的电路逻辑结构
(2)定时/计数器的工作方式1 当方式控制寄存器TMOD中定时/计数器的M1M0=01时,定时/计数器处于工作方式1。工作方式1为16位的定时计数器,计数范围为216=65536。计数值由定时器的低8位和高8位组成。低8位计数满时向高8位进位,16位计满溢出,溢出标志TF0或TF1置“1”,申请中断,其电路逻辑结构如图1-47所示。
图1-47 定时/计数器T0工作方式1的电路逻辑结构
(3)定时/计数器的工作方式2 当方式控制寄存器TMOD中定时/计数器的M1M0=10时,定时/计数器处于工作方式2。工作方式2为8位初值自动重装的定时/计数器,计数范围为256。计数值由定时器的低8位数值确定,高8位用以存放计数初值。当低8位计数器计数满溢出时,高8位初值自动重装到低8位中。此步骤由单片机自动完成,不需要硬件操作和软件编程实现。电路逻辑结构如图1-48所示。
图1-48 定时/计数器T0工作方式2的电路逻辑结构
(4)定时/计数器的工作方式3 在51单片机中,定时器T0才有工作方式3,定时器T1没有此种工作方式。
当方式控制寄存器TMOD中定时/计数器T0的M1M0=11时,定时/计数器处于工作方式3。在工作方式3模式下,定时/计数器T0被拆成两个独立的8位计数器TL0和TH0。TL0由T0的控制位来控制,而TH0则由T1的控制位来控制。其中TL0既可以作为计数器使用,也可以作为定时器使用,定时/计数器T0的各控制位和引脚信号全归它使用。其功能和操作与方式0或方式1完全类似。而TH0只能作为简单的定时器使用。
定时/计数器T0工作方式3的电路逻辑结构如图1-49所示。
由于TL0既能作定时器也能作计数器使用,而TH0只能作定时器使用而不能作计数器使用,因此在方式3模式下,定时/计数器T0可以构成两个定时器或者一个定时器和一个计数器。
图1-49 定时/计数器T0工作方式3的电路逻辑结构