定时器/计数器结构
定时器/计数器的本质是一个递增计数器(16位),它由两个寄存器组成:高8位和低8位。 TMOD是定时器/计数器的工作模式寄存器,决定了定时器/计数器的工作模式和功能; TCON是控制寄存器,控制T0和T1的启动和停止,并设置溢出标志。
定时器/计数器的工作原理
计数器输入的计数脉冲源
系统的时钟振荡器输出脉冲是经过12分频后产生的;
外部脉冲源从T0或T1引脚输入。
计数过程
每有一个脉冲到来,计数器就加 1。 当计数器全为 1(即 FFFFH)时,再输入一个脉冲将使计数器清零,计数器溢出会将 TCON 中的 TF0 或 TF1 置 1,并向 CPU 发出中断请求(当定时器/计数器中断已启用)。 如果定时器/计数器工作在计时模式,则表示计时时间已到; 如果工作在计数模式,则表示计数值已满。
预约申请
用作定时器:此时设置为定时器模式,计数器加1计数内部机器周期(1个机器周期等于12个振荡周期,即计数频率为晶振频率的1/12)。 计数值N乘以机器周期Tcy即为计时时间t。
计数应用
用作计数器:此时设置为计数器模式,外部事件计数脉冲从T0或T1引脚输入到计数器。 每有一个外部脉冲到来,计数器就加1。但是,单片机对外部脉冲有一个基本要求:脉冲的高低电平持续时间必须大于1个机器周期。
工作模式寄存器(TMOD)
GATE:门控制位。
当GATE=0时,只要用软件将TCON中的TR0或TR1置1,即可启动定时器/计数器; (即需要启动条件)
当GATE=1时,必须用软件将TR0或TR1设置为1,并且外部中断引脚也为高电平,定时器/计数器才能启动,即需要两个启动条件。
C/T:定时/计数模式选择位。
C/T =0 为定时模式; C/T =1 为计数模式。
M1M0:工作模式设置位。
计数器工作模式选择
M1 M0工作模式功能说明
0 0 模式 0 13 位计数器
0 1 模式 1 16 位计数器
1 0 模式 2 自动重载 8 位计数器
1 1 模式 3 定时器 0:分为两个 8 位
定时器1:停止计数
定时器/计数器控制
控制寄存器TCON
TCON的低4位用于控制外部中断,前面已经介绍过。 TCON 的高 4 位用于控制定时器/计数器的启动和中断应用。 其格式如下:
TF1(TCON.7):T1 溢出中断请求标志位。 当T1计数溢出时,TF1由硬件自动置1。 CPU响应中断后,TF1自动被硬件清0。 TR1(TCON.6):T1 启动/停止控制位。 1:启动 0:停止
TF0(TCON.5):T0溢出中断请求标志,其功能与TF1类似。
TR0(TCON.4):T0 启动/停止控制位。 1:启动 0:停止
定时器/计数器的工作原理
模式0
模式0为13位计数,由TL0的低5位(高3位未使用)和TH0的8位组成。 当TL0的低5位溢出时,进位至TH0。 当TH0溢出时,TCON中的TF0标志位被置位,TCON中的TF0标志位被置位。 CPU发出中断请求。
方式一
模式1的计数位数为16位,以TL0(TL1)为低8位,TH0(TH1)为高8位,组成16位加1计数器。
方式2
模式2是8位计数模式,自动重新加载初始值。
在模式2下,当计数器达到255(FFH)并溢出时,CPU自动将TH的值加载到TL中,无需用户干预。 因此,特别适合用作较精确的脉冲信号发生器。
方式3
模式3仅适用于定时器/计数器T0。 定时器T1的模式3相当于TR1=0,停止计数。
工作模式3将T0分为两个独立的8位计数器TL0和TH0。