1 / 21

4. 8051 的定时器/计数器

4. 8051 的定时器/计数器. 4-1 定时器/计数器的结构及工作原理. 4-1-1 定时器/计数器的结构. 8051 系列单片机有 2 个 16 位的定时 / 计数器 T0 、 T1 , 8052 以上系列单片机还有一个可用于捕获的 16 位加减定时 / 计数器。其记数值存放在内部特殊寄存器 TH0 、 TL0 和 TH1 、 TL1 以及 TH2 、 TL2

carys
Télécharger la présentation

4. 8051 的定时器/计数器

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. 4. 8051的定时器/计数器 4-1 定时器/计数器的结构及工作原理 4-1-1定时器/计数器的结构 8051系列单片机有2个16位的定时/计数器T0、T1,8052以上系列单片机还有一个可用于捕获的16位加减定时/计数器。其记数值存放在内部特殊寄存器TH0、TL0和TH1、TL1以及TH2、TL2 定时器T0、T1的工作方式及启停控制用2个特殊功能寄存器TMOD、TCON来实现,T2的工作方式及启停控制则用特殊功能寄存器T2MOD、T2CON来实现。另外T2还具有2个特殊功能寄存器RCAP2H、RCAP2L用于实现16位的自动装载和捕获功能

  2. T0 INT0 T1 INT1 T2 内部时钟 T0 T1 T2 TH0 TL0 TH1 TL1 TH2 TL2 微 处 理 器 TCON (88H) TMOD (89H) T2CON (C8H) T2CON (C9H) 图4-1 定时器/计数器的结构框图

  3. C/ T =0 系统 时钟 ÷12 计数器 中断 TFi TL TH 启动控制 溢出标志 模式控制C/T 外部引脚Ti TRi & 工作方式选择 M1 M0 GATE + GATE C/ T M1 M0 GATE C/T M1 M0 TMOD 外部引脚INTi T1 T0 TCON TF1 TR1 TF0 TR0 IE1 IT1 IE0 IT9 4-1-2定时器/计数器的工作原理 图4-2定时器/计数器工作原理框图

  4. GATE C/ T M1 M0 GATE C/T M1 M0 TMOD T1 T0 4-1-3 定时器/计数器的控制寄存器 1 T0/T1的方式控制寄存器TMOD 特殊寄存器TMOD用来设置T0/T1的工作方式和启停控制方式。

  5. 1 T0/T1的控制寄存器TCON TCON(88H) TF1 TR1 TF0 TR0 IE1 IT1 IE0 IT9 TF0/TF1:定时器溢出标志,由硬件置1,向CPU申请中断,中断响应 后,由硬件清0。查询方式,需软件清0 TR0/TR1: 定时器启停控制(必要条件),由软件设置。另一个条件是 GATE IE0/IE1: 外部中断INT0/INT1中断请求标志 IT0/IT1: 外部中断INT0/INT1的触发方式 ITi=1, INTi为边沿触发方式,当外部中断引脚由高电平变为低 电平时, 则自动触发IEi, CPU响应中断后,自动 ( 硬件 ) 清除IEi, 当 INTi引脚再次由高电平变为低电平时,才能响应第2次中断。 ITi=0, INTi为电平触发方式, 当外部中断引脚为低电平时, 则 自动触发IEi, 中断返回后, 若外部中断引脚仍为低电平,则会再次 触发中断,只有将外部中断引脚置为高电平,才能停止中断响应。

  6. C/ T =0 方式0 系统 时钟 ÷12 计数器+1 TFi TL5 TH 启动控制 溢出标志 模式控制C/ T 外部引脚Ti TRi & 工作方式选择 M1 M0=00 GATE + 外部引脚INTi 4-2 T0/T1的工作方式 中断 记数范围1~8192

  7. C/ T =0 ÷12 系统 时钟 计数器+1 中断 TFi TH TL 溢出标志 启动控制 模式控制C/ T 外部引脚Ti & TRi 工作方式选择 M1 M0=01 GATE + 外部引脚INTi 方式1 记数范围1~65536

  8. C/ T =0 系统 时钟 ÷12 中断 TFi TL0 启动控制 溢出标志 模式控制C/ T 外部引脚Ti TRi & TH GATE + 工作方式选择 M1 M0=10 外部引脚INTi 方式2 记数范围1~256;常用作定时脉冲发生器

  9. C/ T =0 系统 时钟 ÷12 中断 TF0 TL0 中断 ÷12 系统 时钟 TF1 TH0 启动控制 溢出标志 模式控制C/ T 外部引脚T0 溢出标志 启动控制 TR0 & TR1 GATE 工作方式选择 M1 M0=10 + 外部引脚INT0 方式3 T1在方式3时 = 停止

  10. - - - - - - T2OE DCEN TF2 EXF2 RCLK TCLK EXEN2 TR2 C/ T2 CP/ RL2 4-3 T2的工作方式 8052以上单片机除具有T0、T1外,还有一个具有16位自动装载或捕获功能的加减定时器/计数器T2,通过特殊寄存器T2MOD、T2CON,T2具有4种工作方式。 T2MOD T2CON

  11. CP/ RL2 = 1 系统 时钟 ÷12 计数器 溢出标志 C/ T2 =0 TL2 TH2 TF2 中断 TR2 + T2(P1.0) C/ T2 RCAP2L RCAP2H 边沿检测 EXF2 T2EX(P1.1) EXEN2 - - - - - - T2OE DCEN TF2 EXF2 RCLK TCLK EXEN2 TR2 C/ T2 CP/ RL2 4-3-1 自动捕获方式 T2MOD T2CON

  12. CP/ RL2 = 0 C/ T2 =0 系统 时钟 ÷12 计数器 溢出标志 TL2 TH2 TF2 中断 C/ T2 + TR2 T2(P1.0) + RCAP2L RCAP2H 边沿检测 EXF2 T2EX(P1.1) EXEN2 4-3-2 自动装载方式 1)向上计数方式DCEN = 0

  13. CP/ RL2 = 0 系统 时钟 0FFH 0FFH C/ T2 =0 EXF2 ÷12 C/ T2 中断 TL2 TH2 TF2 TR2 T2(P1.0) 溢出标志 1:递增 0:递减 RCAP2L RCAP2H T2EX(P1.1) 计数方向 2)双向计数方式DCEN = 1

  14. CP/ RL2 = 0 C/ T2 =0 系统 时钟 ÷2 TL2 TH2 C/ T2 TR2 T2(P1.0) RCAP2L RCAP2H T2OE=1 4-3-3 可编程时钟输出 DCEN =0 T2OE=1

  15. CP/ RL2 = 0 C/ T2 =0 系统 时钟 ÷2 TX/RX波特率 TL2 TH2 C/ T2 TR2 T2(P1.0) RCAP2L RCAP2H EXF2 T2中断 T2EX(P1.1) EXEN2 4-3-4 波特率发生器方式 TCLK或RCLK为1 DCEN =0

  16. 波特率计算公式

  17. 4-3 定时器/计数器的应用 例 4.1 设8051单片机的系统时钟为12MHz,利用定时器 ,在P1.7上实现1kHz的脉冲发生器,要求占空比为1:1。 分析:根据题义,P1.7上高低电平的时间分别为500μs,若采用T0方式1定时来实现电平翻转,定时初值为:8192-500=7192=11110000 01100B。利用中断,可减少CPU的等待时间,编程如下: org 0000h ljmp main org 0003h ljmp int_T0 …… Main: mov tmod,#00H ;设定时器 0 为方式 0 mov th0, #0f0H ;置定时器初值 mov tl0, #0cH setb tr0 ;启动 T1 mov ie, #81h ;开中断 … …

  18. int_T0: mov th0, #0f0H ;重置定时器初值 mov tl0, #0cH jbc p1.7, T_end ;p1.7=1  p1.7=0, jump to T_01 setb p1.7 ;p1.7=0  p1.7=1, T_end:reti 该程序由于要在中断程序中重新设置定时器的值,可能会带来一定的误差,并会产生较大的累积误差。利用自动装载(方式2)可减小累积误差误差,但T0方式2最大定时时间为256µs,可设定时时间为250µs,利用1位标志进行翻转判断,编程如下: T_250us equ 00h org 0000h ljmp main org 0003h ljmp int_T0 …… Main: mov tmod,#02H ;设定时器 0 为方式 0 mov th0, #06H ;置定时器装载值 setb tr0 ;启动 T1 mov ie, #81h ;开中断 …

  19. int_T0: jbc T_250us, T_01 ;后250 us, jump to 翻转 setb T_250us ;准备翻转 reti T_01: jbc p1.7, T_end ;p1.7=1  p1.7=0, jump to T_01 setb p1.7 ;p1.7=0  p1.7=1, T_end:reti 若将本例中P1.7改为内部RAM位(如T_1ms),配合T_250us,可将主程序分成4个节拍,分别对不同响应频率要求的信号进行处理,以提高系统的性能 若采用8052以上单片机,也可使用定时器2,编程如下:

  20. T_1ms equ 02h org 0000h ljmp main org 002bh ljmp int_T2 …… Main: mov t2mod, #00H ;设定时器 2 为方式 +计数 mov rcap2H,#0feH ;置定时器装载值 mov rcap2L, #0cH ;置定时器装载值 setb tr2 ;启动 T1 mov ie, #0a0h ;开中断 … int_T2: clr tf2 ;中断撤消 jbc T_1ms, T2_end ; T_1ms =1  T_1ms =0 setb T_1ms ; T_1ms =0  T_1ms =1 T2_end: reti

  21. 作业 利用T2和查表法,在P1.7上输出脉冲宽度按正弦变化的SPWM方波,SPWM载波的频率为1KHz, 正弦函数的频率为10Hz、幅值为4V(即占空比为10%~90%).

More Related