TL 做计数器,TH 做初值寄存器,工作前 TL1,TH1 分别预置相同的初值,TL1 计数时,产生溢出的同时,将 TH1 中的初值自动重装 TL1,TL1 继续计数。

模式 3:组合扩展模式(仅适用于 T0)

如何利用51单片机内部定时器实现对时间的操作

将 T0 和 T1 重新进行“拆分、组合”,将 T0 变为由 TH0,TL0 组成的两个独立的 8 位定时/计数器。

补充:四种模式比较:

如何利用51单片机内部定时器实现对时间的操作

3、定时器参数:

(1)、定时器的个数:网上见到的 51 单片机教程都说定时器有 2 个:定时器 0 和定时器 1,实际上有的单片机有 3 个定时器,如博主买的开发板上的单片机:STC89C54RD+,因此,编程时注意看好有几个定时器……

(2)、TL,TH:初值寄存器,分别是低 8 位,高 8 位,后边加上一个数字 0 或 1,代表定时器 0 或定时器 1

(3)、TMOD:模式控制寄存器,属于 SFR 特殊功能寄存器,地址:89H,决定定时/计数器的四种工作模式,8 位

如何利用51单片机内部定时器实现对时间的操作

GATE 选通门:GATE=0 时,只要 TR=1,计数器就开始工作

GATE=1 时,只有 INT=TR=1 时,计数器工作(用来测量 INT 脚高电平脉冲的宽度)

C/T:计数器输入脉冲选择开关,决定着计数器的“定时”或“计数”的两种工作方式

C/T=0:定时方式:计数器接收内部时钟信号 fosc

C/T=1:计数方式:计数器接收引脚上的外部信号

M1、M0 模式选择:确定 4 种工作模式

(4)、TCON:控制寄存器,属于 SFR 特殊功能寄存器,地址:88H,8 位

如何利用51单片机内部定时器实现对时间的操作

TF:定时器溢出标志,计数器溢出时硬件自动置位,即 TF=1,进入中断后再由硬件自动清除(TF=0)

TR:计数器的控制位

TR=1:计数器开始工作

TR=0:计数器停止计数

IE:外部中断 INT 的请求标志

当单片机检测到 INT 引脚上有下降沿时,IE=1 申请中断,进入中断服务程序时,硬件自动清除 IE 标志

IT:外中断触发类型控制