首页 > 生活常识 >

问 51 单片机定时器的原理与使用 实战教程

2026-11-02 12:31:32
最佳答案

答

51 单片机定时器是芯片内部自带的定时计数外设,核心原理是对内部机器周期脉冲进行累加计数,当计数值溢出之后就会置位溢出标志,还可以触发定时器中断,定时器既可以做精准定时,也可以切换成计数模式对外部脉冲进行计数,常用的经典 8051 内核单片机一般拥有定时器 0 和定时器 1,部分扩展型号还带有定时器 2,每个定时器都由 TH 高八位寄存器和 TL 低八位寄存器组成,工作模式由 TMOD 寄存器配置,启动停止由 TCON 寄存器里面的 TR 位控制,使用的时候需要提前给 TH 和 TL 装载初值,设定工作方式,开启中断之后就可以实现精准延时 定时触发任务,是单片机项目里做毫秒级定时 周期扫描 PWM 输出 波特率生成最基础的外设,掌握它的原理与使用是单片机入门必备知识点。

定时器基础寄存器说明

表格

寄存器名称主要作用关键位说明
TMOD定时器工作模式配置低四位管 T0 高四位管 T1 包含 GATE C T M1 M0 位
TCON定时器控制与标志位TR0 TR1 是启动位 TF0 TF1 是溢出标志位
TH0 TL0定时器 0 计数寄存器TH0 存高八位 TL0 存低八位
TH1 TL1定时器 1 计数寄存器TH1 存高八位 TL1 存低八位
IE中断允许寄存器EA 总中断 ET0 ET1 定时器中断使能位

四种工作模式介绍

模式 0 13 位计数模式,由 TL 低五位加上 TH 高八位组成 13 位计数器,现在项目很少使用。

模式 1 16 位计数模式,TL 八位加 TH 八位组成完整 16 位计数器,是最常用的定时模式,定时范围最大。

模式 2 8 位自动重装模式,TL 做计数 TH 保存重装初值,溢出之后自动把 TH 数值载入 TL,适合连续精准定时,串口波特率经常使用这个模式。

模式 3 拆分模式,定时器 0 拆成两个独立 8 位定时器,定时器 1 此时只能作为波特率发生器,使用场景比较特殊。

定时器初值计算方法

经典 51 单片机晶振常用 11.0592MHz 或者 12MHz,机器周期等于 12 除以晶振频率,以 12MHz 晶振举例,一个机器周期就是 1 微秒,16 位模式最大计数值是 65536,如果需要定时 1 毫秒,需要计数 1000 个机器周期,初值等于 65536 减去定时需要的计数值,算出初值之后拆成高八位和低八位,分别赋值给 TH 和 TL 寄存器。

使用操作步骤

第一步 确定晶振频率,选定定时器编号 T0 或者 T1,确定需要的定时时长。

第二步 计算定时初值,把初值拆分高八位低八位。

第三步 配置 TMOD 寄存器,设置定时器对应的工作模式,选择定时模式也就是 C T 位设置为 0。

第四步 给 TH TL 寄存器装载计算好的初值。

第五步 如果需要中断方式,打开 EA 总中断,打开对应的 ET 中断使能位。

第六步 置位 TR 启动定时器,等待计数溢出,溢出之后进入中断服务函数,在中断函数里面重新装载初值,编写需要周期执行的业务代码。

两种使用方式区别

查询方式 程序循环查询 TF 溢出标志位,标志置 1 之后处理任务,这种方式会占用 CPU,适合简单小项目。

中断方式 溢出自动进入中断服务程序,主程序可以同时运行其他任务,是工程项目最推荐的使用方式。

综合来看 51 单片机定时器的原理核心就是脉冲累加溢出,使用流程就是计算初值配置寄存器装载初值启动定时器,配合中断或者查询实现周期定时任务,写代码的时候重点注意初值计算 中断开启 模式选择这几个要点,就可以稳定实现定时功能。

【相关 FAQ】

问题 1 51 单片机定时器的原理与使用里面为什么模式 1 最常用

回答 1 51 单片机定时器的原理与使用当中模式 1 是 16 位计数结构,定时范围大,配置简单,大部分普通定时项目都会优先选用模式 1。

问题 2 51 单片机定时器的原理与使用中自动重装是哪个模式

回答 2 51 单片机定时器的原理与使用里模式 2 是 8 位自动重装模式,溢出之后自动载入初值,不需要在中断里面手动重装初值。

问题 3 51 单片机定时器的原理与使用初值计算和晶振有关系吗

回答 3 51 单片机定时器的原理与使用初值计算和晶振直接相关,晶振决定机器周期,晶振不同同样定时时长对应的初值也不一样。

【免责申明】

本文仅为 51 单片机定时器的原理与使用科普教学内容,不同厂商增强型 51 内核单片机寄存器定义可能存在差异,实际开发请对照对应芯片官方数据手册,本文不替代原厂技术文档,不构成硬件设计决策依据。