梦想51-单片机学习  
当前位置:主页 > 信息共享 > 心得交流 >

单片机定时器与计数器详解

发布时间:2017-03-20 来源: 浏览: 关键词: 定时器 计数器

之所以把定时器与计数器放到一起,是因为它们两者的工作原理类似,都是对信号进行计数,差别在于定时器是对内部时钟脉冲进行计数,而计数器则是通过对普通信号进行计数

,内部时钟脉冲是具有特定周期的脉冲信号,计数结果则是某特定周期的整数倍,因此时间一定,可用作定时作用。下图是STC89C51芯片这部分的目录截图:



下面我们分别对这部分所用到的寄存器部分进行介绍:

上图即是芯片手册关于T0、T1部分的配置寄存器,T2部分的暂不做介绍,下面我们单独分析下各个寄存器,

1、TCON(控制寄存器)

TF1表示定时器/计数器T1的溢出标志,即定时器计时达到我们设定的值。TR1表示定时器/计数器T1启动控制位,设置为1表示启动定时器/计数器T1。而TF0与TR0意义与TF1、TR1意义一样,只是针对定时器/计数器T0进行配置。后面四位表示外部中断控制,与本文所讲解的内容无关,因此不做说明。

2、TMOD(工作模式寄存器)

最高位GATE置1表示需要外部中断INT1引脚为高同时TR1控制位为1时才可以打开定时器1工作。

第6位C/T置0表示T1为定时器模式,置1表示计数器模式。

第5位M1与4位M0组合用作工作模式控制,控制定时器/计数器工作未13位、16位或者8位等,从而控制时长会有所不同。

后四位这里不做分析,其作用于高四位类似,只是用作控制定时器计数器T0。

3、TH1/TL1(TH0与TL0不做分析,方法一样)

定时器计数器T1定时计数寄存器,配置不同的值,从而控制溢出时间的长短,单片机会由初始化的值进行计数,然后计数到最大时,产生溢出中断。根据此原理可以分析到16位定时器可计时最长,最大可到65536个计数周期。具体的使用方法,大家可参看实例程序或者芯片手册上的C语言参考程序。


下面再为大家介绍一下,定时初值设置问题:

以16位为例,如果采用晶振为FOSC(单位HZ),则单片机晶振周期为1/FOSC s,单片机的机器周期为12/FOSC s(也等于1000*12/FOSC ms),如果需要定时1ms,则需要1/((1000*12)/FOSC)个计时周期,也就是FOSC/12/1000,因此初值设置就如芯片手册所示

这是16位模式下计时最大值65536来减去我们需要的计时数,即是我们定时器所需设置的初值,13位与8位模式类似,具体的参看芯片手册。

到此,我们对定时器、计数器讲解结束!


责任编辑:


心得交流
心得交流
编程日记
2017-2027 织梦58模板网 版权所有
蜀ICP备19000922号-1 联网备案号51011502000302