一、基础核心寄存器(标准 51 通用)
1. 模式寄存器 TMOD(地址 0x89)
表格
| 位 7 | 位 6 | 位 5 | 位 4 | 位 3 | 位 2 | 位 1 | 位 0 |
|---|---|---|---|---|---|---|---|
| GATE1 | C/T1 | M11 | M10 | GATE0 | C/T0 | M01 | M00 |
- GATE=0:仅 TRx 控制定时器启停(常用)
- C/T=0:定时器模式(系统时钟分频计数);=1 计数器(外部引脚脉冲)
- M1 M0 四种工作模式:
00模式 0:13 位定时器(TL 低 5 位,TH 高 8 位)极少用01模式 1:16 位定时器(0~65535,最常用)10模式 2:8 位自动重装(0~255,高频短定时)11模式 3:T0 拆两个 8 位定时器,T1 仅作波特率发生器
2. 控制寄存器 TCON(地址 0x88)
- TR0=1:开启定时器 0;TR0=0 关闭
- TR1=1:开启定时器 1;TR1=0 关闭
- TF0/TF1:溢出中断标志,溢出硬件置 1,中断响应后硬件清零
3. 计数寄存器
- TH0、TL0:定时器 0 高低 8 位
- TH1、TL1:定时器 1 高低 8 位
4. 中断寄存器 IE(0xA8)
- ET0=1:使能定时器 0 中断
- ET1=1:使能定时器 1 中断
- EA=1:总中断开关(必须打开)
标准 51 默认:机器周期 = 系统晶振 / 12
例:12MHz 晶振 → 1 机器周期 = 1μs
新唐 8051 大多支持6T 模式(6 分频),速度翻倍,由 CKCON 寄存器配置。
定时计算公式:单次定时时长 = 计数次数 × 机器周期
三、两种最常用模式配置示例
示例 1:模式 2 8 位自动重装(12MHz,100μs 定时)
12T 模式,1 机器周期 1μs,需要计数 100 次溢出
初值 = 256 – 100 = 156 (0x9C)
c
运行
#include <N79E814.H>
void Timer0_Init(void)
{
TMOD |= 0x02; // T0模式2,定时器
TH0 = 0x9C; // 重装初值
TL0 = 0x9C;
ET0 = 1; // 开T0中断
EA = 1; // 总中断
TR0 = 1; // 启动定时器0
}
// 定时器0中断服务函数
void Timer0_ISR(void) interrupt 1
{
// 定时100μs进入一次,TH0硬件自动重装无需手动赋值
}
示例 2:模式 1 16 位定时器(12MHz,5ms 定时)
单次计数 5000 次,16 位最大值 65536
初值 = 65536 – 5000 = 60536 (0xECB8)
TH0=0xEC,TL0=0xB8
c
运行
void Timer0_Init(void)
{
TMOD |= 0x01; // T0模式1 16位定时
TH0 = 0xEC;
TL0 = 0xB8;
ET0 = 1;
EA = 1;
TR0 = 1;
}
void Timer0_ISR(void) interrupt 1
{
// 模式1无自动重装,溢出必须手动重载初值
TH0 = 0xEC;
TL0 = 0xB8;
// 用户定时任务
}
四、新唐特有扩展功能
1. 6T/12T 时钟切换 CKCON 寄存器
多数新唐 8051 CKCON.0 = X6
- X6=0:12T 标准模式
- X6=1:6T 高速模式,机器周期缩短一半
c
运行
CKCON |= 0x01; // 开启6T
2. 独立看门狗定时器(WDT)
3. 额外 T2 定时器(部分型号 N89E516 等)
T2 自带捕获 / 自动重装,适合高精度定时、串口波特率,寄存器:T2CON、TH2、TL2、RCAP2H、RCAP2L。
五、查询方式(不使用中断)
无需开 IE 中断,循环判断 TF 溢出标志:
c
运行
void Delay100us(void)
{
TMOD |= 0x02;
TH0=0x9C; TL0=0x9C;
TR0=1;
while(TF0 == 0); // 等待溢出
TF0 = 0; // 软件清标志
TR0 = 0;
}
六、常见踩坑点
- 模式 1 溢出忘记手动重装 THx/TLx,定时时长越来越长
- 未打开 EA 总中断,中断函数不会进入
- GATE 置 1 后,定时器启停受 INT0/INT1 引脚控制,定时器不跑
- 6T/12T 切换后未重新计算定时初值,定时误差翻倍
- 新唐头文件未包含,寄存器名识别报错,需引入对应型号
.h
七、快速配置步骤总结
- 配置 TMOD:选择定时器、模式、定时 / 计数
- 计算初值,赋值 THx、TLx
- 如需中断:ETx=1,EA=1
- TRx=1 启动定时器
- 中断模式:模式 1 手动重装;模式 2 自动重装
- 6T 高速场景修改 CKCON 分频位

我爱单片机