1 / 101

第 6 章 MCS-51 单片机定时器 / 计数器

第 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 的逻辑结构,工作方式的选择和应用。 本章为单片机的主要内容,也是第七章串行口的学习的基础。.

nay
Télécharger la présentation

第 6 章 MCS-51 单片机定时器 / 计数器

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 第6章 MCS-51单片机定时器/计数器 曲阜师范大学杏坛学院 王艳玲

  2. 目 录 6.1 MCS-51定时器/计数器的结构及原理 6.2 定时器T0、T1 6.3 定时器T2 6.4 定时器应用举例

  3. 第6章 MCS-51单片机的定时器/计数器 本章主要讨论MCS-51单片机定时器/计数器的逻辑结构和工作原理。内容主要有MCS-51单片机定时器T0、T1、T2的逻辑结构,工作方式的选择和应用。 本章为单片机的主要内容,也是第七章串行口的学习的基础。

  4. 6.1 MCS-51单片机定时器/计数器的结构及原理 主要内容 6.1.1 MCS-51单片机定时器的结构 6.1.2 MCS-51单片机定时器的工作原理 6.1.3 定时器/计数器的控制寄存器

  5. 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. 6.1.1 MCS-51单片机定时器的结构 MCS-51主要由如下构成: • 三个16位的可编程定时器/计数器:定时器/计数器0、1和2。 • 每个定时器有两部分构成:THx和TLx • 特殊功能寄存器T2MOD和T2CON ,主要对T2进行控制。 • 特殊功能寄存器TMOD和TCON ,主要对T0和T1进行控制。

  7. 6.1.1 MCS-51单片机定时器的结构 • 引脚P3.5、P3.4、P1.0,输入计数脉冲。 • 定时器T0、T1和T2是3个中断源,可以向CPU 发出中断请求。 • 定时器/计数器T2增加了两个8位的寄存器: RCAP2H和RCAP2L。 • 特殊功能寄存器之间通过内部总线和控制逻辑电路连接起来。

  8. C/T=0 振荡器 12 分频 T L x THx 中断请求 TFx ( 8 ) ( 8 ) 位 位 Tx 控制 C/T=1 TRx 6.1.2 MCS-51单片机定时器的工作原理 定时器/计数器T0、T1、T2 的内部结构简图如下图所示。

  9. 6.1.2 MCS-51单片机定时器/计数器的工作原理 从上图可以看出: • 定时器的实质是一个加1计数器。 • C/T =0 ,为定时器方式。 • 计数信号由片内振荡电路提供,振荡脉冲12分频送给计数器,每个机器周期计数器值增1。 • 例如:如果晶振频率为12MHz,则最高计数频率为0.5MHz

  10. 6.1.2 MCS-51单片机定时器/计数器的工作原理 • C/T =1 ,为计数方式。 • 计数信号由Tx引脚(P3.4、P3.5和P1.0)输入,每输入一有效信号,相应的计数器中的内容进行加1。 • 控制信号TRx=1时,定时器启动。 • 当定时器由全1加到全0时计满溢出,从0开始继续计数,TFx=1 ,向CPU申请中断。

  11. 6.1.3 定时器/计数器的方式和控制寄存器 1、T0、T1 工作模式寄存器TMOD 功能:确定定时器的工作模式。 其格式如图6-3所示: GATE——外部门控制位。 GATE=1,使用外部控制门。 TRx=1, P3.2(P3.3)=1时,启动定时器。

  12. 6.1.3 定时器/计数器的方式和控制寄存器 GATE=0,不使用外部门控制计数器 C/T——定时或计数方式选择位。 C/T=0时,为定时器 C/T=1时,为计数器 采样过程:CPU在每机器周期S5P2期间,输入信号进行采样。若前一机器周期采样值为1,下一机器周期采样值为0,则计数器增1,随后的机器周期S3P1期间,新的计数值装入计数器。

  13. 6.1.3 定时器/计数器的方式和控制寄存器 M1、M0——工作模式选择位。 如下表所示:

  14. 6.1.3 定时器/计数器的方式和控制寄存器 2、T0、T1的控制寄存器TCON TF1、TF0:T1、T0的溢出标志位 计数溢出,TFx=1。 中断方式:自动清零; 查询方式:软件清零。

  15. 6.1.3 定时器/计数器的方式和控制寄存器 TR1、TR0:T1、T0启停控制位。 置1,启动定时器; 清0,关闭定时器。 IE1、IE0:外部中断1、0请求标志位 IT1、IT0:外部中断1、0触发方式选择位 注意: GATE=1 ,TRx与P3.2(P3.3) 的配合。

  16. 6.2 定时器T0、T1的工作模式及应用 主要内容 6.2.1 模式0的逻辑结构及应用 6.2.2 模式1的逻辑结构及应用 6.2.3 模式2的逻辑结构及应用 6.2.4 模式3的逻辑结构及应用

  17. 6.2.1 模式0的逻辑结构及应用 M1M0=00,选择模式0。逻辑结构如图6-5所示。(以T0为例) T0的结构:13位定时器/计数器。 由TH0的8位、TL0的低5位构成(高3位未用) 工作过程:TL0溢出后向TH0进位,TH0溢出后将TF0置位,并向CPU申请中断。 定时时间=(213-定时初值)×机器周期 最大定时时间:213×机器周期

  18. 6.2.1 模式0的逻辑结构及应用 C/T=1,计数方式。计数脉冲由P3.4引脚输入。 C/T=0时,定时方式。 图6-5 模式0的逻辑结构图

  19. 6.2.2 模式1的逻辑结构及应用 M1M0=01时,选择模式1。逻辑结构如下页图所示。 T0的结构:16位定时器/计数器。 TL0:存放计数初值的低8位。 TH0存放计数初值的高8位; 定时时间=(216-定时初值)×机器周期 最大定时时间:216×机器周期

  20. 6.2.2 模式1的逻辑结构及应用 工作过程:当TL0计满时,向TH0进1;当TH0计满时,溢出使TF0=1,向CPU申请中断。 MCS-51单片机之所以设置几乎完全一 样 的方式0和方式1,是出于与 MCS-48单片机兼容的。

  21. 6.2.3 模式2的逻辑结构及应用 M1 M0 =10时,选择模式2。逻辑结构如图6-7所示。 T0的结构: TL0:8位的定时器/计数器; TH0:8位预置寄存器,用于保存初值。 工作过程:当TL0计满溢出时,TF0置1,向CPU发出中断请求;同时引起重装操作(TH0的计数初值送到TL0),进行新一轮计数。

  22. 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的逻辑结构图

  23. 6.2.3 模式2的逻辑结构及应用 定时时间=(28 - 初值)×机器周期 最大定时时间=28 ×机器周期 优点:模式2能够进行自动重装载。模式0和1计数溢出后,计数器为全0。循环定时或计数时,需要重新设置初值。 说明:在模式2能够满足计数或定时要求时,尽可能使用模式2。

  24. 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)

  25. 6.2.4 模式3的逻辑结构及应用 图6-8 模式3下T0的逻辑结构图

  26. 6.2.4 模式3的逻辑结构及应用 2、T0模式3时T1的工作模式 T1可以模式0~模式2工作。 T1的结构如图6-9所示 由于TF1及中断矢量被TH0占用,所以T1仅用作波特率发生器或其它不用中断的地方。 T1作波特率发生器,其计数溢出直接送至串行口。设置好工作方式,串行口波特率发生器开始自动运行。 TMOD中T1的M1M0=11,T1停止工作。

  27. 6.2.4 模式3的逻辑结构及应用 图6-9 模式3下,T1的逻辑结构图

  28. C / T = 0 12 振荡器 分频 TL 1 8 ( 位 ) T 1 ( P 3 . 5 ) C / T = 1 重新装入 TH 1 8 ( 位 ) 串行口 思考:T0工作在模式3,T1怎么进行方式设置?

  29. 6.2.4 模式3的逻辑结构及应用 1、定时器/计数器工作模式的选择方法 (1)首先计算计数值N (2)确定工作模式 原则是尽可能地选择模式2 若 N ≤ 256选择模式2,否则选择模式1 (3)如果需要增加一个定时器/计数器 选择模式3。

  30. 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

  31. 6.2.4 模式3的逻辑结构及应用 例6-1设单片机的振荡频率为12MHz,用定时器/计数器0的模式1编程,在P1.0引脚产生一个周期为1000µs的方波,定时器T0采用中断的处理方式。 定时器的分析过程。 工作方式选择 需要产生周期信号时,选择定时方式。定时时间到了对输出端进行周期性的输出即可。 工作模式选择 根据定时时间长短选择工作模式。 首选模式2,可以省略重装初值操作。

  32. 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

  33. 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); //等待中断 }

  34. 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

  35. 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

  36. 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。

  37. 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;

  38. 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; }

  39. 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

  40. 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; } }

  41. 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

  42. 6.3 定时器/计数器T2 主要内容 6.3.1 定时器T2的特殊寄存器 6.3.2 定时器T2的工作方式及结构

  43. 6.3.1 定时器/计数器T2的特殊寄存器 89C52中的T2是一个16位的、具有自动重装载和捕获能力的定时器/计数器。 T2的结构:除TL2、TH2和控制寄存器T2CON及T2MOD之外,还增加了捕获寄存器RCAP2L(低字节)和RCAP2H(高字节)。 T2的计数脉冲源有两个:一个是内部机器周期,另一个是由T2(P1.0)端输入的外部计数脉冲。

  44. 6.3.1 定时器/计数器T2的特殊功能寄存器 T2有4种工作方式∶自动重装、捕获和波特率发生器、可编程时钟输出。 增加了两个引脚: T2(P1.0),T2EX(P1.1)。 1、定时器/计数器2的控制寄存器T2CON 可位寻址和字节寻址。 功能:选择T2的工作方式和工作模式。 允许位寻址和字节寻址。其格式如下:

  45. 6.3.1 定时器/计数器T2的特殊功能寄存器 TF2 :定时器/计数器2的溢出中断标志位 T2溢出时置位,申请中断。软件清零。 波特率发生器方式下,RCLK=1或TCLK=1时,定时器溢出不对TF2进行置位。 EXF2(T2CON.6):定时器/计数器2外部触发标志位

  46. 6.3.1 定时器/计数器T2的特殊功能寄存器 EXEN2=1,且T2EX引脚上有负跳变将触发捕获或重装操作,EXF2=1,向CPU发出中断请求。 软件复位。 RCLK:串行口接收时钟允许标志位 RCLK=1时,T2溢出信号分频后做串行口工作在模式1和3的接收波特率。 RCLK=0时,T1溢出信号分频信后做串行口接收波特率。

  47. 6.3.1 定时器/计数器T2的特殊功能寄存器 TCLK:串行口发送时钟允许标志位 TCLK=1时,T2溢出信号分频后做串行口工做在模式1和3的发送波特率。 TCLK=0时,T1溢出信号分频后做串行口的发送波特率。

  48. 6.3.1 定时器/计数器T2的特殊功能寄存器 EXEN2 ( T2CON.3) :定时器/计数器2外部允许标志位 EXEN2=1,定时器/计数器2没有工作在波特率发生器方式,如T2EX(P1.1)引脚上产生负跳变时,将激活“捕获”或“重装”操作。 EXEN2=0,T2EX引脚上的电平变化对定时器/计数器2不起作用。

  49. 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。

  50. 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计满溢出时,触发自动重装操作。

More Related