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