1 / 69

第 章 定时 / 中断系统

第 章 定时 / 中断系统. 本章内容. 定时器及其应用 中断源和中断标 志 单片机中断系统. 定时器 / 计数器. 本章内容: 定时 / 计数器的结构与工作原理 定时 / 计数器的方式寄存器与控制寄存器 定时 / 计数器的 4 种工作方式 定时器应用举例. 一、 MCS-51 单片机定时器/计数器组成: 定时器 / 计数器 0(T0) : 16 位的加计数器( TH0,TL0 ) 定时器 / 计数器 1(T1) : 16 位的加计数器 (TH1,TL1) 定时器方式寄存器: TMOD (用于设定定时器工作方式)

lindley
Download Presentation

第 章 定时 / 中断系统

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. 第章定时/中断系统 本章内容 定时器及其应用 中断源和中断标 志 单片机中断系统

  2. 定时器/计数器 • 本章内容: • 定时/计数器的结构与工作原理 • 定时/计数器的方式寄存器与控制寄存器 • 定时/计数器的4种工作方式 • 定时器应用举例

  3. 一、MCS-51单片机定时器/计数器组成: • 定时器/计数器0(T0):16位的加计数器(TH0,TL0) • 定时器/计数器1(T1):16位的加计数器(TH1,TL1) • 定时器方式寄存器:TMOD(用于设定定时器工作方式) • 定时器控制寄存器:TCON(用于控制定时器启动/停止) • 二、定时器/计数器的功能 • 对外部输入信号的计数功能。芯片引脚P3.4 、P3.5 外来脉冲进行计数。 • 定时功能。定时器/计数器的定时功能也是通过计数实现的,对机器周期计数。

  4. 定时器/计数器的控制 • 定时器/计数器的控制主要是通过以下几个寄存器实现的: • TCON---定时器/计数器控制寄存器 • TMOD---定时器/计数器工作方式控制寄存器 • IE ---中断允许控制寄存器

  5. GATE —— 门控位。 GATE = 0 启动不受 /INT0或 /INT1的控制; GATE = 1 启动受/INT0 或/INT1 的控制。 C/T —— 外部计数器 / 定时器方式选择位 C//T = 0 定时方式; C //T = 1 计数方式。 M1M0—— 工作模式选择位(编程可决定四种工作模式)。 TMOD 89H

  6. T N个方波 = 0 ——定时; = 1 —— 对外计数。 定时:fosc / 12 = 1 /(12/fosc)= 1 / T 波形等间隔,次数已定,时间确定 即对机器周期进行计数。 左图定时时间为 N*T 计数:脉冲不等间隔。 每个下降沿计数一次 确认一次负跳变需两个机器周期, 所以,计数频率最高为fosc / 24。

  7. TR0 —— 定时 / 计数器0运行控制位。 软件置位,软件复位。 TR1 —— 定时 / 计数器1运行控制位。(用法与TR0类似) TCON 88H TF0、TF1 分别是定时、计数器T0、T1的溢出标志位。

  8. (1)定时/计数器的工作方式 • M1M0—— 工作模式选择位(编程可决定四种工作模式) • 0 0 13位定时/计数器 模式0 • 0 1 16位定时/计数器 模式1 • 0 8 位定时/计数器(自动重装初值) 模式2 • 1 1 T0 8位定时/计数 模式3 • 1 1 T1 停止工作 模式3

  9. 1)工作方式0 T0的等效逻辑结构

  10. 2)工作方式1 T0的等效逻辑结构

  11. 3)工作方式2 T0的等效逻辑结构

  12. 4)工作方式3

  13. 定时/计数器的初始化 定时/计数器初始化就是它运行前的一些准备工作: (1)确定工作方式——对TMOD赋值; (2)预置定时计数器中计数的初值——直接写入TH和TL; (3)根据需要开放定时器/计数器的中断——对IE位赋值; (4)启动定时器/计数器; 如:任务中的SETB TR0 指令

  14. 初值的计算方法 X=M-计数值 M是定时器的最大计数值。视工作方式不同而不同。 工作方式0: 13位定时/计数方式,因此,最多可以计到2的13次方,也就是8192次。 工作方式1: 16位定时/计数方式,因此,最多可以计到2的16次方,也就是65536次。 工作方式2和工作方式3:都是8位的定时/计数方式,因此,最多可以计到2的8次方,也说是256次。

  15. 预置值计算: 用最大计数量减去需要的计数次数即可。 通过上面的任务,我们掌握了计数程序的编制方法,下面我们再看看定时程序怎样编制。 首先我们看一下下面的程序段。 MOV TMOD,#01H MOV TL0,#00H MOV TH0,#4CH SETB TR0 以上程序是任务一中的定时程序段,它的初始化过程和计数方式类似。

  16. 定时器应用举例 定时器是单片机应用系统中的重要部件,利用它可以简化程序设计、简化外围电路和减轻CPU负担。以下是应用举例: • 方式0、方式1的应用 • 方式2的应用

  17. 实例一:定时器/计数器实现固定时间的定时 • 题目:利用T0,使用工作方式0,在单片机的P1.0输出一个周期为2ms,占空比为1:1的方波信号。 • 解:周期为2ms,占空比为1:1的方波信号,只需要利用T0产生定时,每隔1ms将P1.0取反即可。 • 编程步骤: • 计算TMOD的值 •        由于GATE=0;M1M0=00;C/T=0; •        所以 (TMOD)=00H • 计算初值(单片机振荡频率为12MHZ) •  所需要的机器周期数: • n=(1000us/1us)=1000 • 计数器的初始值: • X=8192-1000=7192 • 所以:(TH0)=0E0H,(TL0)=18H

  18. 程序清单 • ORG 0000H • LJMP MAIN • ORG 0100H • MAIN:MOV SP,#50H ;开辟堆栈 • MOV TMOD,#00H ;工作方式设置 • MOV TH0,#0E0H ;初始值设置 • MOV TL0,#18H • SETB TR0 ;运行T0 • DEL:JBC TF0,REP • AJMP DEL • REP:CPL P1.0 ;定时到,输出取反 • MOV TH0,#0E0H ;重新加载初战值 • MOV TL0,#18H • AJMP DEL • END

  19. 实例二:利用方式1定时 • 题目:用定时器T1,使用工作方式1,在单片机的P1.0输出一个周期为2分钟、占空比为1:1的方波信号。 • 解:周期为2分钟,占空比为1:1的方波信号,只需要利用T1产生定时,每隔1分将P1.0取反即可。由于定时器定时时间有限,设定T1的定时为50ms,软件计数1200次,可以实现1分钟定时。 • 编程步骤: • 1、计算TMOD的值 •        由于:GATE=0;M1、M0=0、1;C/T=0; •        所以:(TMOD)=10H • 2、计算初值(单片机的振荡频率为12MHZ) •  所需要的机器周期数: • n=(50000us/1us)=50000 • 计数器的初始值:X=65536-50000=15536 • 所以:(TH0)=3CH;(TL0)=0B0H

  20. 程序清单 • ORG 0000H • LJMP MAIN • ORG 0100H • MAIN:MOV SP,#50H ; 开辟堆栈 • MOV TMOD,#10H ; 工作方式设置 • MOV TH1,#3CH ; 初始值设置 • MOV TL1,#0B0H • SETB TR1 ; 运行T0 • MOV 20H,#20 • MOV 21H,#60 • LP1:JBC TF0,LP2 • SJMP LP1 • LP2: MOV TH1,#3CH ;初始值重新设置 • MOV TL1,#0B0H • DJNZ 20H,LP1 • MOV 20H,#20 • DJNZ 21H,LP1 • MOV 21H,#60 • CPL P1.0 ;定时到,输出取反 • SJMP LP1 • END

  21. 例5.4 用单片机定时器/计数器设计一个秒表,由P1口连接的LED采用BCD码显示,发光二极管亮表示0,暗则表示1。计满60s后从头开始,依次循环。 解:定时器T0工作于定时方式1,产生1s的定时,程序类似于实训5步骤1),这里不再重复。定时器T1工作在方式2,当1s时间到,由软件复位T1(P3.5)脚,产生负跳变,再由定时器T1进行计数,计满60次(1分种)溢出,再重新开始计数。 按上述设计思路可知: 方式寄存器TMOD的控制字应为:61H 定时器T1的初值应为:256  60 = 196 = C4H

  22. 其源程序可设计如下: ORG 0000H MOV TMOD,#61H;T0方式1定时,T1方式2计数 MOV TH1,#0C4H ;T1置初值 MOV TL1,#0C4H SETB TR1 ;启动T1 DISP: MOV A,#00H ;计数显示初始化 MOV P1,A CONT: ACALL DELAY CLR P3.5 ;T1引脚产生负跳变 NOP NOP SETB P3.5 ;T1引脚恢复高电平 INC A ;累加器加1 DA A ;将16进制数转换成BCD数 MOV P1,A ;点亮发光二极管

  23. JBC TF1,DISP ;查询T1计数溢出 SJMP CONT ;60s不到继续计数 DELAY: MOV R3,#14H ;置50ms计数循环初值 MOV TH0,#3CH ;置定时器初值 MOV TL0,#0B0H SETB TR0 ;启动T0 LP1: JBC TF0,LP2 ;查询计数溢出 SJMP LP1 ;未到50ms继续计数 LP2:MOV TH0,#3CH ;重新置定时器初值 MOV TL0,#0B0H DJNZ R3,LP1;未到1s继续循环 RET ;返回主程序 END

  24. 测量每1秒钟之内的按键按下次数 要求: • 每秒的次数用发光管显示出来 • 每秒钟按键的按下次数不超过255次

  25. 第章中断系统 Single Chip Microcomputer 本章内容 中断的基本概念 MCS-51的中断系统 中断源和中断标志 中断的允许和优先权 中断的处理过程 外部中断源的扩展 中断的应用

  26. 中断的基本概念 • 日常生活中断的例子 • 单片机中的中断概念 • 中断技术的优点

  27. 日常中断的例子 你正在专心看书,突然电话铃响,于是你记下正在看的书的页数,去接电话,接完电话后再回来接着看书。 返回

  28. 计算机中的中断概念 • 中断是指由于某种随机事件的发生,计算机暂停现行程序的运行,转去执行另一程序,以处理发生的事件,处理完毕后又自动返回原来的程序继续运行。 • 将能引起中断的事件称为中断源。 • CPU现行运行的程序称为主程序。 • 处理随机事件的程序称为中断服务子程序。 中断过程动画演示 返回

  29. 中断技术的优点 • 分时操作 • ——CPU可以同多个外设“同时”工作 • 实时处理 • ——CPU及时处理随机事件 • 故障处理 • ——电源掉电、存储出错、运算溢出

  30. MCS-51中断系统 • 中断源 • 中断标志 • 中断允许 • 中断优先级 • MCS-51中断系统结构 • 中断寄存器

  31. 外部输入中断源INT0(P3.2) INT0 或 或 T0 • 外部输入中断源INT1(P3.3) INT1 T1 • 片内定时器T0的溢出 • 片内定时器T1的溢出 串行口 • 片内串行口发送或接收中断源 MCS-51的中断系统——中断源 8051单片机有5个中断请求源: 单片机

  32. TI RI MCS-51的中断系统——中断标志 CPU 中断源 中断标志位 IE0 INT0 TF0 T0 主程序 IE1 INT1 TF1 T1 串口 • 每一个中断源都有相应的中断标志位; • 某一个中断源申请中断,相应中断标志位置1。

  33. TI RI MCS-51的中断系统——中断允许 CPU 中断源 中断标志位 中断允许 IE0 INT0 EX0 TF0 ET0 T0 主程序 IE1 INT1 EX1 TF1 T1 ET1 串口 ES EA • EA——总中断允许位,EA=1开放所有中断,EA=0,禁止所有中断; • 某一个中断源还有相应的中断允许位,1允许相应中断源的中断,0禁止相应中断源的中断。

  34. TI 低 SI MCS-51的中断系统——中断优先级 CPU 自然优先级 中断源 中断标志位 中断允许 优先控制 IE0 INT0 PX0 EX0 TF0 PT0 ET0 T0 主程序 IE1 PX1 INT1 EX1 TF1 T1 PT1 ET1 串口 PS ES EA • 单片机中有两个中断优先级,即高优先级中断和低优先级中断,前者优先权高于后者(在程序中设置,相应位=1,为高优先级); • 同一优先级别的中断源按照自然优先级顺序确定优先级别(硬件形成,无法改变)。

  35. IT0=0 INT0 INT1 IT0=1 IT1=0 IT1=1 MCS-51的中断系统结构图 TCON IE IP 自然优先级 高级中断请求 PX0 IE0 EX0 PT0 TF0 T0 ET0 矢量地址 PX1 IE1 EX1 PT1 TF1 T1 自然优先级 ET1 低级中断请求 TI TXD PS RI RXD ES EA SCON 中断标志位 中断优先级 中断源允许 总允许 矢量地址

  36. TF1 TF0 IE1 IT1 IE0 IT0 7 6 5 4 3 2 1 0 TCON寄存器——T0和T1控制寄存器 TCON T1溢出中断标志(TCON.7): T1启动计数后,计满溢出由硬件置位TF1=1,向CPU请求中断,此标志一直保持到CPU响应中断后,才由硬件自动清0。也可用软件查询该标志,并由软件清0。

  37. TF1 TF0 IE1 IT1 IE0 IT0 7 6 5 4 3 2 1 0 TCON寄存器——T0和T1控制寄存器 TCON 88H • 外部中断INT1触发方式控制位(TCON.2): • IT1=0,电平触发方式 • IT1=1, 下降沿触发方式 外部中断INT1中断标志位(TCON.3) : IE1=1,外部中断1向CPU申请中断 • 注意:该寄存器可以位寻址。

  38. TI RI 7 6 5 4 3 2 1 0 SCON寄存器——串行口控制寄存器 SCON 98H • TI (SCON.1)——串行发送中断标志。 • RI (SCON.0)——串行接收中断标志。 • 注意:该寄存器可以位寻址。 返回

  39. EA ES ET1 EX1 ET0 EX0 7 6 5 4 3 2 1 0 IE寄存器——中断允许寄存器 IE A8H 例:允许定时器T0中断: SETB EA SETB ET0 或 MOV IE,#82H • 注意:该寄存器可以位寻址。 

  40. PS PT1 PX1 PT0 PX0 7 6 5 4 3 2 1 0 IP寄存器——中断优先级寄存器 IP B8H • 51单片机有两个中断优先级——高级和低级 • 专用寄存器IP为中断优先级寄存器,用户可用软件设定 • 相应位为1,对应的中断源被设置为高优先级,相应位为0,对应的中断源被设置为低优先级 • 系统复位时,均为低优先级 • 该寄存器可以位寻址

  41. 响 断 中 中 断 返 回 中断处理过程 • 中断处理过程分为三个阶段:中断响应、中断处理和中断返回。 • 中断响应 • 中断处理(又称中断服务) • 中断返回 • 中断请求的撤除

  42. 响 断 中 中断响应 中断服务子程序的入口地址 • 中断响应:在满足CPU的中断响应条件之后,CPU对中断源中断请求予以处理。 • 中断响应过程: • 保护断点地址; • 把程序转向中断服务程序的入口地址(通常称矢量地址)。 断点地址 • 特别注意:这些工作是硬件自动完成的! 

  43. 响 断 中 中断响应 中断服务子程序的入口地址 • 中断服务子程序入口地址又称为中断矢量或中断向量。 • 单片机中5个中断源的矢量地址是固定的,不能改动。 断点地址 

  44. 使用时,通常在这些入口地址处存放一条跳转指令,使程序跳转到用户安排的中断服务程序起始地址上去!使用时,通常在这些入口地址处存放一条跳转指令,使程序跳转到用户安排的中断服务程序起始地址上去! 程序存储器ROM 002AH 0023H:串行口中断入口  001BH:定时器1溢出中断入口  0013H:外部中断1入口  000BH:定时器0溢出中断入口  0003H:外部中断0入口 0000H:复位后,程序的入口地址(PC=0000H)

  45. 包含T0中断服务子程序的程序结构: ORG 0000H AJMP MAIN ORG 000BH AJMP INTT0 ORG 0100H MAIN: . . . INTT0:. . . RETI END 程序存储器ROM 002AH 0023H:串行口中断入口  001BH:定时器1溢出中断入口  0013H:外部中断1入口 AJMP INTT0  000BH:定时器0溢出中断入口  0003H:外部中断0入口 AJMP MAIN 0000H:复位后,程序的入口地址(PC=0000H)

  46. 响 断 中 中断处理 入口地址 • 中断服务程序从入口地址开始执行,直到返回指令RETI为止,这个过程称为中断处理(或中断服务)。 • 中断服务子程序一般包括两部分内容,一是保护和恢复现场,二是处理中断源的请求。 RETI

  47. 中断处理 INTT0: PUSH ACC PUSH DPH PUSH DPL PUSH PSW 中断源服务 POP PSW POP DPL POP DPH POP ACC RETI 保护现场 恢复现场

  48. 响 断 中 中 断 返 回 中断返回 • 中断返回是指中断服务完后,计算机返回到原来暂停的位置(即断点),继续执行原来的程序。 • 中断返回由专门的中断返回指令RETI来实现。

  49. 响 断 中 中 断 返 回 中断返回 • RETI指令功能:把断点地址取出,送回到程序计数器PC中去。另外,它还通知中断系统已完成中断处理,将清除优先级状态触发器。 • 特别注意:不能用RET指令代替RETI指令!

More Related