3.6.4 定时器/计数器的四种工作模式

3.6.4 定时器/计数器的四种工作模式

对M1、M0位的设置,可选择模式0、模式1、模式2和模式3等4种工作模式。在模式0、模式1和模式2时,TO和T1的工作模式相同,但在模式3时,两个定时器的工作过程不同。

1.模式0

模式0是一个13位定时器/计数器。

(1)定时器TO,由TH0的8位和TLO的低5位构成,TL0的高3位未用。

(2)定时器T1,由TH1的8位和TL1的低5位构成,TL1的高3位未用。

当TL0和TL1的低5位溢出时,TH0或TH1溢出就向中断标志位TFO或TF1进位,并请求中断,如图3.28所示。

图3.28 模式0结构

1)定时方式

当C/=0时,控制开关接通振荡器12分频输出端,TO对机器周期计数,这是定时方式,其定时时间为

t=(213-TO的初值)×机器周期

例如,外接1个12 MHz晶体,则机器周期为1μs,所以这种工作方式最大的时间间隔是在TO的初值等于0时,定时时间为(213-1)μs=8.192 ms。

2)计数器方式

当C/=1时,控制开关使引脚TO与13位计数器相连,外部计数脉冲由引脚TO输入。当外部信号电平发生从“1”到“0”跳变时,计数器加1,这时,T0成为外部时间计数器。这就是计数方式。

当GAET=0时,使或门输出A点电位为常“1”,或门被封锁,于是,引脚INTO输入信号无效,这时或门输出的“1”打开与门。B点电位取决于TR0状态,于是由TR0一位就可以控制计数器开关S1,开启或关断T0。或软件使TR0置1,便接通计数开关S2,启动T0在原值上加1计数,直至溢出。溢出时,13位寄存器清0,TFO置位,并申请中断,TO仍从0重新开始计数。若TR0=0,则关断计数来管S2,停止计数。

当GAET=1时,A点电位取决于引脚INTO输入电平。仅当INTO输入高电平TRO=1时,B点才是高电平,计数开关S2闭合,T0开始计数,当INTO由1变0时,T0停止计数。这一特性可以用于测量在INTO端出现的正脉冲的宽度。

2.模式1

模式1是一个16位定时器/计数器,除定时器/计数器位数与模式0不同外,其结构与操作几乎与模式0完全相同。当为定时方式时,定时时间为

t=(216-T0的初值)×振荡周期×12

当为计数方式时,计数长度为216-1=65535(个外部脉冲)。模式1结构如图3.29所示。

图3.29 模式1结构

3.模式2

模式2把TL0或TL1配置成一个可以自动重装载的8位定时器/计数器,如图3.30所示。

图3.30 模式2结构

TLO计数溢出时,不仅使TO溢出标志位TF0置1,而且还自动把TH0中的内容装载到TL0中。这里16位的计数器被拆成两个,TL0用于8位计数器,TH0用于保持初值。

在程序初始化时,TL0和TH0由软件赋予相同的初值。一旦T L0计数溢出,置位TFO,硬件就会将TH0中的初值再次装入TL0,继续计数,循环重复。

定时器工作方式时,其定时时间(TF0溢出周期)为

t=(28-TH0的初值)×振荡周期×12

计数器工作方式时,最大计数长度为28个=256个(外部脉冲)。

这种工作方式可省去用户软件重装常数的程序,并可产生相当精度的定时时间。特别适于串行口波特率发生器。

T1和TO操作完全相同。

4.模式3

模式3对TO和T1是不相同的。

(1)若将TO设置为模式3,TL0和TH0被分成两个互相独立的8位计数器,如图3.31所示。

图3.31 模式3结构

T L0用原TO的各位控制位、引脚和中断源,即C/T、GAET、TR0、TF0和TO引脚,以及INTO引脚。TL0除仅用8位寄存器外,其功能和操作与模式0、模式1完全相同。TL0也可工作为定时方式或计数方式。

TH0只可用简单的内部定时功能,它占用了定时器T1的控制位TR1和T1的中断标志位TF1,其启动和关闭仅受TR1的控制。

(2)对于T1,定时器T1无操作模式3,若将T1设置为模式3,就会使T1立即停止计数,也就是保持原有的计数值,其作用相当于使TR1=0,封锁与门,断开计数开关S3

在定时器T0作用模式3时,T1仍可设置为模式0~2。

通常,当定时器T1用于串行口波特率发生器时,定时器T0才设置为模式3。