哪些寄存器与定时/计数器相关?如何初始化定时/计数器?
扫描二维码
随时随地手机看文章
单片机可以通过“定时/计数模式选择位C/T”令定时/计数器工作于定时或计数模式下,也可通过“工作方式选择位M1M0”设定其工作方式。C/T和M1M0等与定时/计数器有关的位在寄存器TCON或TMOD中,见表4-8和表4-9。
TCON寄存器(见表4-8)的高4位与定时器有关,其作用分别如下:
1)TR0:定时/计数器0(T0)的运行控制位,若TR0=0,则定时/计数器0停止工作,若TR0=1,则定时/计数器0开始工作;TR0可以由软件置1和清0,因此可以通过程序控制定时/计数器的启动和停止。
2)TF0:定时/计数器0(T0)的溢出中断请求标志位,定时/计数器溢出时,由单片机硬件置1;进入定时/计数器的中断服务处理程序后,单片机硬件自动将TF0清0。另外,TF0也可以被位操作指令SETB和CLR置1和清0,其作用与硬件的自动置1和清0相同。
3)TR1:定时/计数器1(T1)的运行控制位,其作用与TR0相似。
4)TF1:定时/计数器1(T1)的溢出中断请求标志位,其作用与TF0相似。
TMOD寄存器(见表4-9)是不可按位寻址的寄存器,低4位属于T0,高4位属于T1,其中各位的作用分别如下:
1)C/T:定时/计数器模式选择位,若C/T=0,则为定时模式,若C/T=1,则为计数模式。
2)M1M1:定时/计数器工作方式选择位,M1M0与工作方式的对应关系见表4-10。
3)GATE:门控位,可以辅助TR0和TR1控制定时/计数器的启动和停止。当GATE=0时,定时/计数器的启动和停止仅受TR0和TR1控制。当GATE=1时,要启动定时/计数器工作,除了将TR0和TR1置为1,还要求外部中断引脚INT0和INT1为高电平。GATE=1常用于测量外部中断引脚INT0和INT1上高电平信号持续的时间,除此之外,通常将GATE清0。
定时/计数器的初始化
1.定时/计数器的初始化编程步骤MCS-51单片机的定时/计数器是可编程的,在工作前需要进行初始化,其步骤如下:1)通过TMOD寄存器中的M1和M0位确定工作方式。2)根据要求设定定时/计数器的初值M,并将其存入相关的特殊功能寄存器。3)根据需要设定中断优先级别寄存器IP的值,以确定各中断源的优先级别。
4)根据需要设定中断允许寄存器IE,以开放相应的中断。
5)将TCON中的TR0(TR1)置1,以启动定时/计数器工作。
2.定时/计数器初值的计算
在定时/计数器工作过程中,定时“时间到”或计数“个数到”的标志是定时/计数器产生溢出,并将中断请求标志位TF0或TF1置1。定时/计数器初值的计算即以此为基础。
(1)定时方式的初值计算
假设:单片机的机器周期为Tm,定时器的位数和初值分别为N和M,则在定时方式下,当定时器溢出时,定时器累计的机器周期个数Q=2N-M,而Q个机器周期对应的时长T=Q×Tm。
基于上述理解可知,定时器定时时间T与Tm、N和M有关,即
由式(4-1)可知,定时器初值M与定时时间T的关系为
3.定时/计数器最大定时时间和计数值的计算
在定时/计数器的实际应用中,往往需要根据定时/计数器的最大定时时间和计数值初步确定定时/计数器的工作方式,以方便后续的程序处理。
(1)最大定时时间的计算
由式(4-1)可知,定时/计数器进行定时操作时,其最大定时时间与单片机的机器周期Tm、定时/计数器的初值N和工作方式有关。当N和Tm确定后,若初值M=0,即可获得最大的定时时间Tmax为
(2)最大计数值的计算
由式(4-3)可知,定时/计数器进行计数操作时,其最大计数值Qmax与定时/计数器的初值N和工作方式有关。当定时/计数器的工作方式确定后,若初值M=0,即可获得最大的计数值为