51-单片机-第四话-Timer
2025-11-06 来源:bilibili
一.写在前面
stc89c51有两个定时/计数器,今天主要测试它的定时功能。使用定时器来进行时间计算要比使用循环来的更精准一些。
这里我使用的晶振为12MHz,至于为什么使用12MHz的晶振,原因是stc89c51的机器周期是12个时钟周期,选用12MHz晶振后单片机执行一个机器周期的时间刚好是1us。而定时器的工作原理就是每过一个机器周期就自动加一直到溢出。
stc89c51的定时器为16位,下图给出的是定时/计数器相关的寄存器TCON


此寄存器可以按位寻址,就是说你可以这样赋值TR1 = 1(开启定时器1);对于那些不能按位寻址的寄存器比如TMOD就不能这样赋值了。
TF1:定时器/计数器T1溢出标志。T1被允许计数以后,从初值开始加1计数。当最高位产生溢出时由硬件置‘1’TF1,向CPU发送中断请求,一直保持到CPU响应中断时,由硬件自动清零,当不执行中断时,也可以通过查询的方式对TF1标志位进行软件清零
TR1:定时器T1的运行控制位。由软件置位和清零。当GATE(TMOD.7)=0,TR1=1时就运行T1开始计数,TR1=0时禁止T1计数。当GATE(TMOD.7)=1,TR1=1且INTI外部输入高电平时,才允许T1计数
TF0:同TF1拥有两种清零方式。
本次测试只使用TCON的高四位,低四位为中断使用,下一次在测试。
还有一个寄存器TMOD需要使用


对于TMOD的模式选择
•模式 1(M1=0,M0=1),是THn和TLn组成了一个16位的定时器,计数范围是0~65535,溢出后,只要不对THn和TLn重新赋值,则从0开始计数。(最常用的一种定时模式)
•模式 2 (M1=1,M0=0),是8位自动重装载模式,只有TLn做加1计数,计数范围0~255,THn的值并不发生变化,而是保持原值,TLn溢出后,TFn就直接置1了,并且THn原先的值直接赋给TLn,然后TLn从新赋值的这个数字开始计数。 (常用于串口通信)


二.具体使用方法
本次在P0^0口接上一个LED灯希望LED灯能够1s亮,1s灭。

/* Main.c file generated by New Project wizard
*
* Created: 周一 6月 17 2019
* Processor: AT89C51
* Compiler: Keil for 8051
单片机时钟周期为12MHz
12/12MHz = 1us
*/
#include <reg51.h>
#include <stdio.h>
//初始化LED灯,和计数器counter
int counter = 0;
sbit LED = P0^0;
void main(void)
{
// Write your code here
TMOD = 0x01;//定时器工作在模式1
//设置定时器初始值(每次定时50ms)
TH0 = (65536 - 50000) / 256;
TL0 = (65536 - 50000) % 256;
TR0 = 1;//开启定时器
while (1){
if(TF0 == 1){//定时器溢出
//对定时器重新初始化
TF0 = 0;
TH0 = (65536 - 50000) / 256;
TL0 = (65536 - 50000) % 256;
//counter计数
counter++;
if(counter == 20){//计数满1s
LED = ~LED;
counter = 0;
}
}
}
}
说明:由于定时器是16位的所以当计数到65536时就会溢出,单片机会置TF0 = 1作为溢出标志。
因为我们希望一次溢出为50ms所以要对它设置初始值即为该十六位寄存器的初始值,
但是我们不能直接对该十六位寄存器赋值,只能通过高位TH0和低位TL0进行赋值
此时就会有初始值的求模运算结果赋值给TH0;求余运算结果赋值给TL0。
- 意法半导体发布Stellar P3E 汽车MCU内置AI加速
- 德州仪器 (TI) 扩展微控制器产品组合及软件生态系统,助力边缘 AI 在各种器件中落地
- 3D打印“狂飙”背后:兆易创新GD32 MCU多元方案驱动性能升级
- 基于恩智浦MCU的人形机器人灵巧手解决方案
- 国民技术发布N32H49x系列MCU:以澎湃性能与全链路可靠赋能工业控制、储能与光通信
- 英飞凌推出基于PSOC™ Control C3微控制器的ModusToolbox™电源套件
- 让AI为你优化代码,提升MCX MCU程序开发效率!攻略在此~
- 六大全新产品系列推出,MCX A微控制器家族迎来创新
- 英飞凌强化车规级微控制器产品组合:符合ISO/SAE 21434标准、获中汽研认证
- 国产高性能MCU芯片DF30量产,突破进口依赖,国产汽车“大脑”升级
- 六大全新产品系列推出,MCX A微控制器家族迎来创新
- 意法半导体全新STM32C5系列,重新定义入门级微控制器性能与价值,赋能万千智能设备
- 模组复用与整机重测在SRRC、CCC、CTA/NAL认证中的实践操作指南
- 有源晶振与无源晶振的六大区别详解
- 英飞凌持续巩固全球微控制器市场领导地位
- 使用 Keil Studio for Visual Studio Code开发 STM32 设备
- 从控制到系统:TI利用边缘AI重塑嵌入式MCU的边界
- 蓝牙信道探测技术原理与开发套件实践
- Microchip 推出生产就绪型全栈边缘 AI 解决方案,赋能MCU和MPU实现 智能实时决策
- LoRa、LoRaWAN、NB-IoT与4G DTU技术对比及工业无线方案选型分析




