第 6章 MCS-51单片机的定时器 /计数器计算机电路的基础是时序电路,利用计算机实现计时和计数的工作任务,
对计算机是最容易的事。在检测和控制中,大多数时候都要求进行定时和计数处理,所以定时器/计数器在计算机中是必不可少的。
6.1 定时器/计数器的结构
MCS-51单片机定时器 /计数器逻辑结构图
6.2 MCS-51的定时器/计数器控制
6.2.1和时器 /计数器有关的寄存器
计数器 THx和 TLx
两个定时器/计数器被分别命名为定时器
0(T0)和定时器 1(T1),其低位计数器分别被称为 TL0和 TL1,高位计数器分别是 TH0和
TH1,TL0和 TH0组成 T0,TLl和 TH1组成 T1。
工作方式控制寄存器 TMOD
两个定时器/计数器有几种不同的工作方式,
通过编程进行选择控制。
控制寄存器 TCON 两个定时器/计数器的启动和停止都通过编程进行控制,由程序写入特殊功能寄存器 TCON相应的控制字实现 。
6.2.2 定时器/计数器的工作方式
(1) 当 TMOD寄存器中的 M0,Ml位为 00时,
定时器/计数器被选为工作方式 0。定时器
/计数器为工作方式 0工作时,使用低字节的 5位和高字节的 8位组成 13位的计数器 。
(2)当 TMOD寄存器中的 M0,Ml位为 01时,
定时器/计数器被选为工作方式 1。定时器
/计数器为工作方式 1 工作时,使用低字节和高字节的 16位组成 16位计数器。
(3)当 TMOD寄存器中的 M0,Ml位为 10时,
定时器/计数器被选为工作方式 2。定时器
/计数器为工作方式 2工作时是自动预置方式的 8位计数器,其使用低字节的 8位做计数器,高字节的 8位作为预置常数的寄存器。
(4)方式 3只适用于定时器/计数器 T0,T0
分为两个独立的 8位计数器 TH0,TL0。
6.2.3 应用实例例 6.1 已知单片机晶振频率为 6MHz,要求使用 T0
定时 1ms,使单片机 P1.0脚上连续输出周期为
2ms的方波。
解:先确定定时 lms 的初值,
可知不能使用 8位计数器。如果用方式 0 的 13
位定时器,T0 的计算初值 N应为但因为 13位定时器时,低 8位 TL0 只使用低 5位,
其余的均计入高 8位 TH0 的初值,则 T0 的初值初调整为 TH0= 0F0H( 11110000B),TL0=
0CH( 01100B)
CH0E176925002N 13
50021M sms?
ORG 0000H;
RESET,AJMP START ;复位入口
ORG 000BH ; T0中断入口
AJMP T0INT ;转中断服务程序
ORG 0100H ;初始化程序
START,MOV SP,# 60H ;给 SP赋初值
MOV TH0,# 0F0H ; T0赋初值
MOV TL0,# 0CH
SETB TR0 ;启动 T0
SETB ET0 ;允许 T0中断
SETB EA ;开总中断
MAIN,AJMP MAIN ;主程序,
T0INT,CPL P1.0 ; P1.0脚取反
MOV TL0,# 0CH;重新赋 TL0
MOV TH0,# 0F0H;重新赋 TH0
RETI ;中断返回例 6.2 设单片机 8031使用的晶振频率为
6MHz,编程使 Pl.7脚输出 1kHz连续方波 。
解:在 6MHz时钟下,机器周期为 2μS。而
1kHz方波的高、低电平持续时间都是
500μS,折合 250个机器周期,允许使用 8
位定时器,选用 T0 方式 2的定时功能。
ORG 0000H ;复位入口
LJMP 100H
ORG 000BH ; T0中断入口
LJMP 200H
ORG 100H
START,MOV SP,# 60H;初始化
MOV TMOD,# 2; T0方式 2
MOV TL0,# 6;计数器赋予初值
MOV TH0,# 6
MOV IP,# 2 ; T0高中断优先权
SETB TR0 ;启动 T0
MOV IE,#82H;开 T0 和总中断
MAIN,SJMP MAIN ;主程序
ORG 200H
T0INT,CPL P1.7;中断服务子程序
RETI ;中断返回