首页 理论教育51单片机定时/计数器工作方式

51单片机定时/计数器工作方式

【摘要】:定时/计数器T1与定时/计数器T0的描述完全一致,下面以T0为例讨论4种工作方式。这就是定时工作方式。此时定时器寄存器TL0配置为可以自动重装载的8位计数器,TH0作为预置寄存器。图3-17 定时/计数器工作方式3电路结构图TH0规定只用作定时器,由T1控制位TR1和TF1控制,计数溢出置位TF1、TR1控制TH0定时的启动和停止。

定时/计数器具有定时和计数两种功能,每种功能具有4种工作方式,TMOD控制寄存器通过对M0、M1的设置选择4种不同工作方式,把计数初始值写入TH和TL中控制计数长度;通过对TCON的有关位置数和清零启动定时器工作和停止计数。定时/计数器T1与定时/计数器T0的描述完全一致,下面以T0为例讨论4种工作方式。

1.工作方式0

当M1 M0=00时T0工作在工作方式0模式下,其工作方式0电路结构如图3-14所示,工作方式0是13位定时/计数器,其中TL0的高3位没有使用,计数器由TH0的高8位和TL0的低5位构成。当TL0低5位溢出时向TH0进位,TH0溢出向中断标志TF0进位,申请中断。关于T0计数溢出通过查询TF0是否置位或者产生定时器T0中断获得。

978-7-111-47690-0-Part01-122.jpg

图3-14 T0工作方式0电路结构图

当C/T=0时,多路开关接通振荡脉冲的12分频输出,13位计数器依次进行计数。这就是定时工作方式。

当C/T=1时,多路开关与引脚(P3.4)相连,外部计数脉冲由引脚T0输入。当外部信号电平发生1到0跳变时,计数器加1,此时T0为外部事件计数器。

当GATE=0时,封锁或门输出常为1,使得引脚P3.2输入信号无效。TR0控制定时器T0开启和关闭,当TR0=1时,启动定时器T0,TR0=0则关闭控制开关停止计数。

当GATE=1且TR0=1时,或门与门全部打开,外部信号电平通过INT0开启或者关闭定时器计数,输入1电平时,计数工作,输入0电平时,停止计数。

(1)作为计数工作

计数范围:1~213

计数值计算公式:计数值=213-计数初值

针对T0定时器,其计数初值为TH0高8位和TL0低5位的初始值。

(2)作为定时器工作

定时范围:1~213机器周期

定时计算公式:定时时间=(213-定时初值)×机器周期

针对T0定时器,其定时初值为TH0高8位和TL0低5位的初始值。

机器周期时间=12/fosc,其中fosc为晶体振荡频率。

2.工作方式1

当M1 M0=01时,定时/计数器处于工作方式1,方式1和方式0工作模式几乎完全相同,区别就在于工作方式1定时器寄存器TH0和TL0是16位计数结构,定时/计数器电路结构如图3-15所示。

978-7-111-47690-0-Part01-123.jpg

图3-15 定时/计数器工作方式1电路结构图

方式16位定时/计数器,TH0作为高8位,TL0为低8位,有关控制状态字(GATA、978-7-111-47690-0-Part01-124.jpg、TF0、TR0)和工作方式0相同。

(1)作为计数器工作

计数范围:1~216

计数值计算公式:计数值=216-计数初值

针对T0定时器,其计数初值为TH0高8位和TL0低8位的初始值。(www.chuimin.cn)

(2)作为定时器工作

定时范围:1~216机器周期

定时时间计算公式:定时时间=(216-定时初值)×机器周期

针对T0定时器,其定时初值为TH0高8位和TL0低8位的初始值。

机器周期时间=12/fosc,其中fosc为晶体振荡频率。

3.工作方式2

当M1 M0=10时,定时/计数器处于工作方式2。此时定时器寄存器TL0配置为可以自动重装载的8位计数器,TH0作为预置寄存器。TL0计数溢出时,TF0置1同时TH0中的内容重装载到TL0中,TH0的内容由软件预置,重装载后内容不变。电路结构如图3-16所示。

978-7-111-47690-0-Part01-125.jpg

图3-16 定时/计数器工作方式2电路结构图

初始化时,TL0和TH0赋初值,当TL0计数溢出时,置位TF0的同时把预置寄存器TH0中的初值自动加载TL0,TL0重新计数。如此反复,这一过程省去了用户程序中重装指令,有利于提高定时精度,但这种工作模式计数值有限,最大只能到256。所以这种工作方式很适合于连续定时和计数应用。

(1)作为计数器工作

计数范围:1~28

计数值计算公式:计数值=28-计数初值

针对T0定时器,其计数初值为TH0高8位和TL0低8位的初始值。

(2)作为定时器工作

定时范围:1~216机器周期

定时时间计算公式:定时时间=(28-定时初值)×机器周期

针对T0定时器,其定时初值为TH0高8位和TL0低8位的初始值。

机器周期时间=12/fosc,其中fosc为晶体振荡频率。

4.工作方式3

当M1 M0=11时,定时/计数器处于工作方式3,此时T0分成两个独立的8位计数器TL0和TH0。其中TL0既可作计数器,也可作为定时器使用,前3种工作方式下,定时/计数器的使用完全相同,但是在工作方式3下,两个定时/计数器工作是不同的,电路结构如图3-17所示。

978-7-111-47690-0-Part01-126.jpg

图3-17 定时/计数器工作方式3电路结构图

TH0规定只用作定时器,由T1控制位TR1和TF1控制,计数溢出置位TF1、TR1控制TH0定时的启动和停止。由于TL0既能作定时器也能作计数器使用,而TH0只能作定时器不能作计数器,因此在工作方式3模式下,定时/计数器0可以构成两个定时器或者一个定时器和一个计数器。

总之,若T0设置为工作方式3,T1只能设置为方式0、1、2,因为T0占据TR1和TF1,此时TF1作为串行口波特率发生器,计数溢出输入串行口,决定串行通信的速率。

经过上述对定时/计数器的讨论,对定时/计数器初始化,首先设定定时器工作方式,设置TMOD工作方式控制字,根据需要给978-7-111-47690-0-Part01-127.jpg赋初值确定定时时间或计数初值;设置中断允许寄存器IE控制字,开放中断和设定中断优先级;设置TCON启动或禁止978-7-111-47690-0-Part01-128.jpg运行。关于定时/计数器的实际应用在第10章单片机定时控制项目中重点介绍。