在单片机的实际应用系统中,经常会使用到精确延时,定时扫描,统计事件的发生次数和长生一定频率的声音等功能。
这些功能都需要在时序电路中实现定时和计数的功能。
80C51系列单片机内部集成了两个可编程的16位定时/计数器,简称T0和T1。每个定时器可以独立工作,可以设置成定时和计数两种模式,有4种工作方式可供选择。
定时/计数器的结构
80C51单片机内部的定时计数器的核心由两个16位加1计数寄存器T0和T1组成,每个计数寄存器都分为高8位THx和低8位TLx分别访问。
时钟源可以选择内部时钟源,也可以选择外部时钟源,当选择内部时钟源时,时钟脉冲序列由单片机内部产生;当选择外部时钟源时,由引脚P3.4、P3.5输入外部时钟脉冲序列。
定时/计数器的功能
作定时器时,常选用内部时钟源,由单片机内部提供时钟信号,频率固定;
作计数器时,常用外部时钟源,信号由相应的引脚输入,统计外部事件发生的次数。
1)计数功能
时钟信号的下降沿有效,单片机在每个机器周期的S5P2期间会采样外部输入时钟信号的电平状态,当连续两次采样得到的信号先后为1和0时,单片机认为外部输入了一个下降沿,此时在下一个机器周期的S3P1期间计数器的计数值加1。
由于采样一个下降沿需要两个机器周期,即需要24个振荡周期,因此外部输入的计数脉冲的最高频率为单片机振荡频率的1/24。
2)定时功能
选用内部时钟源,频率是单片机主时钟的12分频。根据定时时间的长度和单片机的主时钟频率,要计算出定时/计数器的初值,然后启动定时器开始计时。
当定时时间到,产生中断或者软件查询等待时间结束。
定时与计数在本质是一致的,都是通过计数时钟信号的下降沿个数实现。
定时/计数器的方式寄存器和控制寄存器
1)工作方式寄存器TMOD
TMOD用来设置定时/计数器的启动方式,选择的时钟源,设置工作方式。不可按位寻址,只能对整个寄存器进行编程。
高4位控制定时/计数器1,低4位控制定时/计数器0。
GATE:计数器门控制位,用来决定启动是否受外部中断输入引脚的输入电平控制。
为0时,引脚INTx电平不产生影响,只要启动控制位TRx,就开始工作;为1时,则需要INTx为1,且TRx也为1时,计数器才开始工作,这种设置常用来测量INTx引脚高电平的脉冲宽度。
C/T:时钟选择控制位;
M1M0:工作方式选择位。
2)控制寄存器TCON
高4位用作控制定时/计数器的启动,停止和中断请求标志位;低4位用作外部中断的中断请求标志位和触发方式控制位。
TF1:定时/计数器1中断请求标志位;
TR1:定时/计数器1启动控制位;
TF0:定时/计数器0中断请求标志位;
TR0:定时/计数器0启动控制位;
定时/计数器的4种工作方式
1)方式1:16位定时/计数器
2)方式0:13位定时/计数器
13位定时器由THx的8位再加上TLx的低5位,构成的定时/计数器。当TLx的低5位计满溢出时,直接向THx进位。
3)方式2:自动重装的8位定时/计数器
16位计数器分成独立的两个部分,其中THx作为计数初值寄存器,由于存放和保持初值,初值由软件设置,而TLx用作8位计数器。
4)方式3
对于T1,设置为方式3时,相当于使TR1=0,使其停止计数,没有什么实际意义。因此只有定时/计数器0可以工作在方式3。