1.01k likes | 1.2k Views
第 6 章 MCS-51 单片机定时器 / 计数器. 曲阜师范大学杏坛学院 王艳玲. 目 录 6.1 MCS-51 定时器 / 计数器的结构及原理 6.2 定时器 T0 、 T1 6.3 定时器 T2 6.4 定时器应用举例. 第 6 章 MCS-51 单片机的定时器 / 计数器. 本章主要讨论 MCS-51 单片机定时器 / 计数器的逻辑结构和工作原理。内容主要有 MCS-51 单片机定时器 T0 、 T1 、 T2 的逻辑结构,工作方式的选择和应用。 本章为单片机的主要内容,也是第七章串行口的学习的基础。.
E N D
第6章 MCS-51单片机定时器/计数器 曲阜师范大学杏坛学院 王艳玲
目 录 6.1 MCS-51定时器/计数器的结构及原理 6.2 定时器T0、T1 6.3 定时器T2 6.4 定时器应用举例
第6章 MCS-51单片机的定时器/计数器 本章主要讨论MCS-51单片机定时器/计数器的逻辑结构和工作原理。内容主要有MCS-51单片机定时器T0、T1、T2的逻辑结构,工作方式的选择和应用。 本章为单片机的主要内容,也是第七章串行口的学习的基础。
6.1 MCS-51单片机定时器/计数器的结构及原理 主要内容 6.1.1 MCS-51单片机定时器的结构 6.1.2 MCS-51单片机定时器的工作原理 6.1.3 定时器/计数器的控制寄存器
T2EX(P1.1) T 0 ( P 3 . 4 ) T 1 ( P 3 . 5 ) T 2 ( P 1 . 0 ) 定时器 2 定时器 0 定时器 1 TH 1 TL 1 TH 0 TL 0 TH 2 TL 2 溢 溢 溢 重装 出 出 出 模 控 模 捕获 式 制 式 控 RCAP 2 H RCAP 2 L 制 CPU 控 模 制 式 中断 TCON TMOD T 2 CON T 2 MOD 中断 6.1.1 MCS-51单片机定时器的结构 MCS-51单片机定时器/计数器逻辑结构图:
6.1.1 MCS-51单片机定时器的结构 MCS-51主要由如下构成: • 三个16位的可编程定时器/计数器:定时器/计数器0、1和2。 • 每个定时器有两部分构成:THx和TLx • 特殊功能寄存器T2MOD和T2CON ,主要对T2进行控制。 • 特殊功能寄存器TMOD和TCON ,主要对T0和T1进行控制。
6.1.1 MCS-51单片机定时器的结构 • 引脚P3.5、P3.4、P1.0,输入计数脉冲。 • 定时器T0、T1和T2是3个中断源,可以向CPU 发出中断请求。 • 定时器/计数器T2增加了两个8位的寄存器: RCAP2H和RCAP2L。 • 特殊功能寄存器之间通过内部总线和控制逻辑电路连接起来。
C/T=0 振荡器 12 分频 T L x THx 中断请求 TFx ( 8 ) ( 8 ) 位 位 Tx 控制 C/T=1 TRx 6.1.2 MCS-51单片机定时器的工作原理 定时器/计数器T0、T1、T2 的内部结构简图如下图所示。
6.1.2 MCS-51单片机定时器/计数器的工作原理 从上图可以看出: • 定时器的实质是一个加1计数器。 • C/T =0 ,为定时器方式。 • 计数信号由片内振荡电路提供,振荡脉冲12分频送给计数器,每个机器周期计数器值增1。 • 例如:如果晶振频率为12MHz,则最高计数频率为0.5MHz
6.1.2 MCS-51单片机定时器/计数器的工作原理 • C/T =1 ,为计数方式。 • 计数信号由Tx引脚(P3.4、P3.5和P1.0)输入,每输入一有效信号,相应的计数器中的内容进行加1。 • 控制信号TRx=1时,定时器启动。 • 当定时器由全1加到全0时计满溢出,从0开始继续计数,TFx=1 ,向CPU申请中断。
6.1.3 定时器/计数器的方式和控制寄存器 1、T0、T1 工作模式寄存器TMOD 功能:确定定时器的工作模式。 其格式如图6-3所示: GATE——外部门控制位。 GATE=1,使用外部控制门。 TRx=1, P3.2(P3.3)=1时,启动定时器。
6.1.3 定时器/计数器的方式和控制寄存器 GATE=0,不使用外部门控制计数器 C/T——定时或计数方式选择位。 C/T=0时,为定时器 C/T=1时,为计数器 采样过程:CPU在每机器周期S5P2期间,输入信号进行采样。若前一机器周期采样值为1,下一机器周期采样值为0,则计数器增1,随后的机器周期S3P1期间,新的计数值装入计数器。
6.1.3 定时器/计数器的方式和控制寄存器 M1、M0——工作模式选择位。 如下表所示:
6.1.3 定时器/计数器的方式和控制寄存器 2、T0、T1的控制寄存器TCON TF1、TF0:T1、T0的溢出标志位 计数溢出,TFx=1。 中断方式:自动清零; 查询方式:软件清零。
6.1.3 定时器/计数器的方式和控制寄存器 TR1、TR0:T1、T0启停控制位。 置1,启动定时器; 清0,关闭定时器。 IE1、IE0:外部中断1、0请求标志位 IT1、IT0:外部中断1、0触发方式选择位 注意: GATE=1 ,TRx与P3.2(P3.3) 的配合。
6.2 定时器T0、T1的工作模式及应用 主要内容 6.2.1 模式0的逻辑结构及应用 6.2.2 模式1的逻辑结构及应用 6.2.3 模式2的逻辑结构及应用 6.2.4 模式3的逻辑结构及应用
6.2.1 模式0的逻辑结构及应用 M1M0=00,选择模式0。逻辑结构如图6-5所示。(以T0为例) T0的结构:13位定时器/计数器。 由TH0的8位、TL0的低5位构成(高3位未用) 工作过程:TL0溢出后向TH0进位,TH0溢出后将TF0置位,并向CPU申请中断。 定时时间=(213-定时初值)×机器周期 最大定时时间:213×机器周期
6.2.1 模式0的逻辑结构及应用 C/T=1,计数方式。计数脉冲由P3.4引脚输入。 C/T=0时,定时方式。 图6-5 模式0的逻辑结构图
6.2.2 模式1的逻辑结构及应用 M1M0=01时,选择模式1。逻辑结构如下页图所示。 T0的结构:16位定时器/计数器。 TL0:存放计数初值的低8位。 TH0存放计数初值的高8位; 定时时间=(216-定时初值)×机器周期 最大定时时间:216×机器周期
6.2.2 模式1的逻辑结构及应用 工作过程:当TL0计满时,向TH0进1;当TH0计满时,溢出使TF0=1,向CPU申请中断。 MCS-51单片机之所以设置几乎完全一 样 的方式0和方式1,是出于与 MCS-48单片机兼容的。
6.2.3 模式2的逻辑结构及应用 M1 M0 =10时,选择模式2。逻辑结构如图6-7所示。 T0的结构: TL0:8位的定时器/计数器; TH0:8位预置寄存器,用于保存初值。 工作过程:当TL0计满溢出时,TF0置1,向CPU发出中断请求;同时引起重装操作(TH0的计数初值送到TL0),进行新一轮计数。
12 振荡器 分频 C / T = 0 TL 0 TF 0 中断 C / T = 1 8 ( 位 ) T 0 P 3 . 4 ( ) TR 0 & + GATE TH 0 P 3 . 2 8 ( 位 ) 6.2.3 模式2的逻辑结构及应用 图6-7 模式2的逻辑结构图
6.2.3 模式2的逻辑结构及应用 定时时间=(28 - 初值)×机器周期 最大定时时间=28 ×机器周期 优点:模式2能够进行自动重装载。模式0和1计数溢出后,计数器为全0。循环定时或计数时,需要重新设置初值。 说明:在模式2能够满足计数或定时要求时,尽可能使用模式2。
6.2.4 模式3的逻辑结构及应用 1、T0模式3的结构特点 M1 M0 =11,选择模式3。逻辑结构如图 6-8和6-9所示: 结构: TL0、TH0分为两个独立的8位计数器 TL0: 8位定时器/计数器 使用T0所有的资源和控制位 TH0:8位定时器 使用T1所有的资源(中断向量、中断控制ET1、PT1)和控制位 (TR1、TF1)
6.2.4 模式3的逻辑结构及应用 图6-8 模式3下T0的逻辑结构图
6.2.4 模式3的逻辑结构及应用 2、T0模式3时T1的工作模式 T1可以模式0~模式2工作。 T1的结构如图6-9所示 由于TF1及中断矢量被TH0占用,所以T1仅用作波特率发生器或其它不用中断的地方。 T1作波特率发生器,其计数溢出直接送至串行口。设置好工作方式,串行口波特率发生器开始自动运行。 TMOD中T1的M1M0=11,T1停止工作。
6.2.4 模式3的逻辑结构及应用 图6-9 模式3下,T1的逻辑结构图
C / T = 0 12 振荡器 分频 TL 1 8 ( 位 ) T 1 ( P 3 . 5 ) C / T = 1 重新装入 TH 1 8 ( 位 ) 串行口 思考:T0工作在模式3,T1怎么进行方式设置?
6.2.4 模式3的逻辑结构及应用 1、定时器/计数器工作模式的选择方法 (1)首先计算计数值N (2)确定工作模式 原则是尽可能地选择模式2 若 N ≤ 256选择模式2,否则选择模式1 (3)如果需要增加一个定时器/计数器 选择模式3。
6.2.4 模式3的逻辑结构及应用 2、定时器/计数器初值X的计算方法 因为 X + N = 28或216 所以 X = 28或216-N (1)对定时器 设定时时间为t N = t/机器周期 所以 X = 28或216- t/机器周期 (2)对计数器 X = 28或216- N
6.2.4 模式3的逻辑结构及应用 例6-1设单片机的振荡频率为12MHz,用定时器/计数器0的模式1编程,在P1.0引脚产生一个周期为1000µs的方波,定时器T0采用中断的处理方式。 定时器的分析过程。 工作方式选择 需要产生周期信号时,选择定时方式。定时时间到了对输出端进行周期性的输出即可。 工作模式选择 根据定时时间长短选择工作模式。 首选模式2,可以省略重装初值操作。
6.2.4 模式3的逻辑结构及应用 定时时间计算:周期为1000µs的方波要求定时器的定时时间为500µs,每次溢出时,将P1.0引脚的输出取反,就可以在P1.0上产生所需要的方波。 定时初值计算: 振荡频率为12MHz,则机器周期为1µs。 设定时初值为X, (65536-X)×1µs=500µs X=65036=0FE0CH 定时器的初值为:TH0=0FEH,TL0=0CH
6.2.4 模式3的逻辑结构及应用 C语言程序: #include <reg52.h> //包含特殊功能寄存器库 sbit P1_0=P1^0; //进行位定义 void main( ) { TMOD=0x01; //T0做定时器,模式1 TL0=0x0c; TH0=0xfe; //设置定时器的初值 ET0=1; //允许T0中断 EA=1; //允许CPU中断 TR0=1; //启动定时器 while(1); //等待中断 }
6.2.4 模式3的逻辑结构及应用 void time0_int(void) interrupt 1 { //中断服务程序 TL0=0x0c; TH0=0xfe; //定时器重赋初值 P1_0=~P1_0; //P1.0取反,输出方波 } 汇编语言程序: ORG 0000H SJMP MAIN ORG 000BH LJMP TIME0
6.2.4 模式3的逻辑结构及应用 MAIN: MOV TMOD,#01H ;T0定时,模式1 MOV TL0,#0CH ;置定时初值 MOV TH0,#0FEH SETB ET0 ;定时器T0开中断 SETB EA ;CPU开中断 SETB TR0 ;启动定时器T0 SJMP $ ;等待定时器溢出 TIME0: ;中断服务程序 MOV TL0,#0CH MOV TH0,#0FEH ;重装定时初值 CPL P1.0 ;P1.0取反 RETI ;中断返回 END
6.2.4 模式 3的逻辑结构及应用 例6-2设单片机的振荡频率为12MHz,用定时器/计数器0编程实现从P1.0输出周期为500μs的方波。 分析:方法同例6-1 定时时间: 方波周期为500μs,定时250μs。 模式选择: 定时器0可以选择模式0、1和2。模式2最大的定时时间为256μs,满足250μs的定时要求,选择模式2。
6.2.4 模式 3的逻辑结构及应用 (1)初值计算 (256-X)×1µs=250µs X=6; 则TH0=TL0=6 (2)程序: 采用中断处理方式的程序 : C语言程序 : # include <reg52.h> //包含特殊功能寄存器库 sbit P1_0=P1^0;
6.2.4 模式3的逻辑结构及应用 void main( ) { TMOD=0x02; //选择工作模式 TL0=0x06; TH0=0x06; //为定时器赋初值 ET0=1; //允许定时0中断 EA=1; TR0=1; //启动定时器0 while(1); //等待中断 } void time0_int(void) interrupt 1 { P1_0=~P1_0; }
6.2.4 模式3的逻辑结构及应用 汇编语言程序: ORG 0000H LJMP MAIN ORG 000BH ;中断处理程序 CPL P1.0 RETI ORG 0030H ;主程序 MAIN: MOV TMOD,#02H MOV TL0,#06H MOV TH0,#06H SETB ET0 ;允许定时器0中断 SETB EA ;允许CPU中断 SETB TR0 ;启动定时器0 SJMP $ ;等待中断 END
6.2.4 模式3的逻辑结构及应用 采用查询方式处理的程序: C语言程序: # include <reg52.h> sbit P1_0=P1^0; void main() { TMOD=0x02; TL0=0x06; TH0=0x06; TR0=1; while (1) { while(!TF0) ; //查询计数溢出 TF0=0; P1_0=~P1_0; } }
6.2.4 模式3的逻辑结构及应用 汇编语言程序: MAIN: MOV TMOD,#02H ;主程序 MOV TL0,#06H MOV TH0,#06H SETB TR0 LOOP: JNB TF0,$ ;查询计数溢出 CLR TF0 CPL P1.0 SJMP LOOP END
6.3 定时器/计数器T2 主要内容 6.3.1 定时器T2的特殊寄存器 6.3.2 定时器T2的工作方式及结构
6.3.1 定时器/计数器T2的特殊寄存器 89C52中的T2是一个16位的、具有自动重装载和捕获能力的定时器/计数器。 T2的结构:除TL2、TH2和控制寄存器T2CON及T2MOD之外,还增加了捕获寄存器RCAP2L(低字节)和RCAP2H(高字节)。 T2的计数脉冲源有两个:一个是内部机器周期,另一个是由T2(P1.0)端输入的外部计数脉冲。
6.3.1 定时器/计数器T2的特殊功能寄存器 T2有4种工作方式∶自动重装、捕获和波特率发生器、可编程时钟输出。 增加了两个引脚: T2(P1.0),T2EX(P1.1)。 1、定时器/计数器2的控制寄存器T2CON 可位寻址和字节寻址。 功能:选择T2的工作方式和工作模式。 允许位寻址和字节寻址。其格式如下:
6.3.1 定时器/计数器T2的特殊功能寄存器 TF2 :定时器/计数器2的溢出中断标志位 T2溢出时置位,申请中断。软件清零。 波特率发生器方式下,RCLK=1或TCLK=1时,定时器溢出不对TF2进行置位。 EXF2(T2CON.6):定时器/计数器2外部触发标志位
6.3.1 定时器/计数器T2的特殊功能寄存器 EXEN2=1,且T2EX引脚上有负跳变将触发捕获或重装操作,EXF2=1,向CPU发出中断请求。 软件复位。 RCLK:串行口接收时钟允许标志位 RCLK=1时,T2溢出信号分频后做串行口工作在模式1和3的接收波特率。 RCLK=0时,T1溢出信号分频信后做串行口接收波特率。
6.3.1 定时器/计数器T2的特殊功能寄存器 TCLK:串行口发送时钟允许标志位 TCLK=1时,T2溢出信号分频后做串行口工做在模式1和3的发送波特率。 TCLK=0时,T1溢出信号分频后做串行口的发送波特率。
6.3.1 定时器/计数器T2的特殊功能寄存器 EXEN2 ( T2CON.3) :定时器/计数器2外部允许标志位 EXEN2=1,定时器/计数器2没有工作在波特率发生器方式,如T2EX(P1.1)引脚上产生负跳变时,将激活“捕获”或“重装”操作。 EXEN2=0,T2EX引脚上的电平变化对定时器/计数器2不起作用。
6.3.1 定时器/计数器T2的特殊功能寄存器 TR2 :定时器/计数器2启动控制位 TR2=1,启动定时器/计数器2。 TR2=0,停止定时器/计数器2。 C/T2:T2的定时器或计数器方式选择位。 C/T2=1,T2为计数器。 对T2(P1.0)引脚输入脉冲进行计数(下降沿触发);当T2(P1.0)产生负跳变时,计数器增1。
6.3.1 定时器/计数器T2的特殊功能寄存器 C/T2=0, T2做定时器。 每个机器周期T2加1。 CP/RL2 :捕获和重装载方式选择控制位 捕获方式: CP/RL2=1,EXEN2=1,T2EX(P1.1)引脚负跳变将触发捕获操作。 重装载方式: CP/RL2=0,EXEN2=1,T2EX引脚有负跳变或T2计满溢出时,触发自动重装操作。