
89c51定时器怎么用
一、相关概念
1、定时器/计数器核心:其核心是计数器,基本功能是对脉冲进行计数,对外部事件脉冲(下降沿)计数时为计数器;对片内机器周期脉冲计数时为定时器。

2、时钟周期与机器周期:时钟周期T是时序中最小的时间单位,计算方法为1/时钟源频率;机器周期是单片机完成一个基本操作所需的最短时间,对于标准51单片机,一个机器周期等于12个时钟周期,即12/时钟源频率。
3、计数频率:当T/C工作在定时器模式时,对振荡源12分频的脉冲计数,每个机器周期计数值加1,计数频率=当前单片机工作频率/12;当T/C工作在计数器模式时,计数脉冲来自外部引脚T0或T1,且外部脉冲的最高频率不能超过时钟频率的1/24。
二、寄存器介绍
1、TMOD(工作模式寄存器):用于控制定时器0和定时器1的工作方式,地址为89H,不可位寻址,只能用字节方式设置工作方式,其各位定义如下:
C/T:计数工作方式/定时工作方式选择位,C/T=0,设置为定时工作方式;C/T=1,设置为计数工作方式。
GATE:选通控制位,GATE=0,只要用软件对TR0(或TR1)置1就可启动定时器;GATE=1,只有INT0(或INT1)引脚为1,且用软件对TR0(或TR1)置1才可启动定时器工作。
M1、M0:用于设置定时器的工作模式,具体对应关系如下:
M1 | M0 | 工作方式 | 说明 | 12M晶振下最大计数值 |
0 | 0 | 0 | 13位定时/计数器(最大值8192) | 8.192ms |
0 | 1 | 1 | 16位定时/计数器(最大值65535) | 65.535ms |
1 | 0 | 2 | 8位自动重装载定时/计数器(最大值255) | 256us |
1 | 1 | 3 | 定时器0为双8位定时器,可独立使用 | 256us |
2、TCON(控制寄存器):用于控制定时器的启动、停止以及锁存定时器的溢出和中断情况,可以进行位寻址,各位定义如下:
TF1:T1的溢出标志位,T1被允许计数以后,从初值开始加1计数,计满回零后由硬件自动使TF1位置1,并向CPU申请中断,当CPU响应中断进入中断服务子程序后,TF1又被硬件自动清0,也可以用软件清0。

TR1:T1的运行控制位,TR1=1时,启动定时器T1;TR1=0时,停止定时器T1。
TF0:T0溢出标志位,其功能和操作情况同TF1。
TR0:T0的运行控制位,其功能及操作情况同TR1。
3、THx、TLx(计数寄存器):用来存放计数初值,其中THx存放高8位,TLx存放低8位,通过设置不同的初值,可以调整定时时间和计数值。
三、工作模式
1、模式0(13位定时/计数器):由TLx的低5位和THx的8位构成13位的计数器,TLx的低5位溢出时向THx进位,THx计数溢出时置位TCON中的溢出标志位TFx,常用于简单的定时或计数应用。
2、模式1(16位定时/计数器):由THx和TLx组成16位的计数器,计数范围是065535,当计数溢出时,溢出标志位TFx置1,并向CPU申请中断,该模式应用广泛,可用于各种需要较长定时或计数的场景。
3、模式2(8位自动重装载定时/计数器):只有TLx做加1计数,当TLx计数溢出时,会自动将THx中的内容重新装载到TLx中,继续计数,这种模式下,计数范围是0255,常用于串口通信等需要固定波特率的场合。
4、模式3(仅适用于定时器0):定时器0分为两个独立的8位计数器TL0和TH0,可以分别进行计数和控制,但定时器1在模式3下停止计数。
四、使用步骤

1、确定工作模式:根据实际需求选择合适的工作模式,如定时、计数等,并配置TMOD寄存器以确定定时器的工作方式。
2、设置初值:通过向THx和TLx寄存器写入初值来设定定时时间或计数的起始值,初值的计算方法根据不同的工作模式和时钟频率有所不同。
3、启动定时器:通过设置TCON寄存器中的TRx位来启动相应的定时器。
4、等待中断或查询状态:可以选择使用中断方式或查询方式来判断定时是否结束,若使用中断方式,需使能相应的中断(如ET0、ET1等),并在中断服务子程序中处理定时器溢出的相关操作;若使用查询方式,则在主程序中不断查询TFx的状态,当TFx为1时表示定时时间到达。
5、停止定时器:当不需要定时器工作时,可以通过清除TCON寄存器中的TRx位来停止定时器。
AT89C51的定时器功能强大且灵活多变,通过合理配置和编程可以实现多种精确的时间控制和计数功能,掌握其工作原理和使用方法对于开发基于51单片机的应用系统至关重要。
作者:豆面本文地址:https://www.jerry.net.cn/articals/32472.html发布于 2025-02-16 13:11:16
文章转载或复制请以超链接形式并注明出处杰瑞科技发展有限公司