1 / 37

第 5 章 中断系统

第 5 章 中断系统. 5.1 微机的输入 / 输出方式 程序控制传送方式 无条件传送方式 查询传送方式 中断传送方式 直接存储器存取方式 (DMA). 5.2 中断的概念. CPU 中止正在运行的程序,转向为外部设备服务的过程称为 中断 。当完成中断后, CPU 再回到原来的“ 断点 ”继续原来的程序。 中断是由外部产生,具有 随机性、不可知性 。. 主程序. 响应中断请求. 中断服务子程序. 断点. 继续执行主程序. 采用中断可 提高 CPU 的工作效率 , 实现以下功能 : 1. 分时操作 2. 实时处理 3. 故障处理. 返回主程序.

Download Presentation

第 5 章 中断系统

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. 第5章中断系统

  2. 5.1 微机的输入/输出方式 程序控制传送方式 无条件传送方式 查询传送方式 中断传送方式 直接存储器存取方式(DMA)

  3. 5.2 中断的概念 • CPU中止正在运行的程序,转向为外部设备服务的过程称为中断。当完成中断后,CPU再回到原来的“断点”继续原来的程序。 • 中断是由外部产生,具有随机性、不可知性。 主程序 响应中断请求 中断服务子程序 断点 继续执行主程序 采用中断可提高CPU的工作效率,实现以下功能: 1.分时操作 2.实时处理 3.故障处理 返回主程序 RETI

  4. 一、中断系统结构 8051共有五个中断源,两个中断优先级 INT0-----外部中断0请求,通过P3.2脚输入 INT1-----外部中断1请求,通过P3.3脚输入 T0--------定时器/计数器0溢出中断请求 T1--------定时器/计数器1溢出中断请求 TX/RX ---串行口中断请求,当串行口完成一帧数据的发送或接收时,便请求中断 每个中断源都对应一个中断请求标志位,它们分别设置在TCON和SCON中。 5.3 8051的中断系统

  5. INTA INTR 数据总线缓冲器 DB 控 制 逻 辑 RDWRA0 读 / 写逻辑 优先权电路 中断请求寄存器 IRR IR0 在服务寄存器 ISR :: CS IR7 CAS0CAS1CAS2 级连缓冲 / 比较器 中断屏蔽寄存器IMR 内部总线 SP / EN 中断控制器8259A方框图

  6. MCS-51的中断系统结构图 返回优先级结构

  7. 定时器控制寄存器TCON (用6位) 串行口控制寄存器SCON (用2位) 中断允许寄存器IE 中断优先级寄存器IP 二、中断控制

  8. 中断请求标志 TCON中的中断标志位

  9. SCON中的中断标志位 TI RI 串行口发送中断请求标志位 串行口接收中断请求标志位 SCON中的中断标志位

  10. EA:总允许位。EA=0:禁止一切中断;EA=1中断开放。EA:总允许位。EA=0:禁止一切中断;EA=1中断开放。 ES:串行口中断允许位。ES=1:允许RI、TI引发中断; ES=0:禁止中断。 ET1、ET0:定时器T1、T0允许位。ET=1允许,=0禁止。 EX1、EX0:外中断/ int1、/int0允许位。 ET =1允许,=0禁止。 中断允许控制位(IE) 中断允许寄存器IE(0A8H)

  11. 中断优先级控制位(IP) • PS:串行口中断优先级设定位; • PT1、PT0:定时器T1、T0中断优先级设定位; • PX1、PX0:外中断 int1、0中断优先级设定位; • =1: 高优先级,=0:为低优先级。 中断优先级寄存器IP(0B8H)

  12. 表 同级内第二优先级次序

  13. 例如, 某软件中对寄存器IE、 IP设置如下: MOV IE, # 8FH MOV IP, # 06H 则此时该系统中:  · CPU中断允许;  ·允许外部中断 0、 外部中断 1、 定时器 /计数器 0、 定时器 /计数器1提出的中断申请;  ·允许中断源的中断优先次序为:  定时器 /计数器 0>外部中断 1>外部中断 0>定时器/计数器 1。

  14. 由于IP寄存器的设定,将5个中断源分为两个级别。中断的发生将遵循下面的3条基本原则:由于IP寄存器的设定,将5个中断源分为两个级别。中断的发生将遵循下面的3条基本原则: 1. 低级中断在响应执行中可被高级中断所中断,反之则不能。 2. 一个中断(不论是什么优先级)一旦得到响应,与它同级的中断则不能再中断它。 3. 当CPU同时收到几个同一级别的中断要求时,CPU响应哪个中断源取决于硬件的查询顺序(见图)。 优先级结构

  15. 如何改变中断源的优先级顺序 • 从中断系统的结构图可以清楚地看出同一级别中5个中断源的查询顺序。很明显,要改变这种顺序只能通过IP的设置。 • 如:要想将串行口的级别设为最高时,将IP中的PS置1。 即使用指令:setb ps 或 mov 0b8h,#10h 完成对IP设置。 IP寄存器

  16. 例: 能否由高到低安排下列中断源的优先级结构?定时器0 串行口中断 外部中断0 外部中断1 定时器1 解答:能。 设定时器0、串行口中断为高级别中断;设外部中断0、外部中断1 、定时器1为低级别中断。再由内部查询顺序即可得到。

  17. 在每一个机器周期中,所有的中断源都要按照其顺序检查一遍。到S6状态时,就查找到所有被激活的中断申请并排好优先权。在下一个机器周期的S1状态,只要不受阻断,就开始响应高级中断。在每一个机器周期中,所有的中断源都要按照其顺序检查一遍。到S6状态时,就查找到所有被激活的中断申请并排好优先权。在下一个机器周期的S1状态,只要不受阻断,就开始响应高级中断。 如果发生下列情况,中断将被阻止: 1,同级或高级中断正在执行时; 2,当前的机器周期不是指令的最后一个机器周期; 3,CPU正在执行的指令是RETI或访问IE、IP寄存器时,CPU是不会响应中断,而且要等到该指令的下一条指令执行完后中断才能响应。 三、中断查询与响应条件

  18. 四、中断响应过程 CPU查询到某一中断源后,使相应的“优先级激活触发器”置位,用以阻断同级或低级中断。 在硬件控制下,将当前程序计数器PC的内容——断点地址进栈,并将相应的中断矢量装入PC,使CPU转向对应的中断服务程序,同时清除中断请求标志(TI、RI除外)。 中断服务程序最后一条指令是RETI,它将清除“优先级激活触发器”,从堆栈中弹出断点地址并装入PC中,使CPU回到原来的主程序继续运行。 矢量入口的指令应当是转移指令。 0000H 0003H 000BH 0013H 001BH 0023H

  19. 1、上述过程只保护断点而不保护现场(如PSW的内容)。1、上述过程只保护断点而不保护现场(如PSW的内容)。 2、不能清除RI、TI以及外部输入申请信号/INT0和/INT1。 3、中断服务子程序的最后一条指令应是RETI,它将清除“优先级激活”触发器。 注意:

  20. 编程中应注意:  (1) 在 0000H放一条跳转到主程序的跳转指令, 这是因为 MCS-51单片机复位后, PC的内容变为 0000H, 程序从 0000H 开始执行, 紧接着 0003H是中断程序入口地址, 故在此中间只能插入一条转移指令;  (2) 响应中断时, 先自动执行一条隐指令“LCALL 0013H”, 而 0013H至 001BH(定时器 1 溢出中断入口地址)之间可利用的存储单元不够, 故放一条无条件转移指令。  (3) 在中断服务程序的末尾, 必须安排一条中断返回指令RETI, 使程序自动返回主程序。

  21. 在MCS-51引脚上有/INT0、/INT1两个外部的中断输入,作为外部事件的触发信号。在MCS-51引脚上有/INT0、/INT1两个外部的中断输入,作为外部事件的触发信号。 CPU在每一个机器周期对它们进行一次检测。 系统设定了两种触发方式: 边沿触发(下降沿); 电平触发(低电平)。 具体由TCON中的IT0、IT1来确定。 五、 外部中断 MCS-51 /INT0 /INT1

  22. 1. 边沿触发方式:在相邻的两个机器周期,如果第一次采集是高电平,第二次采集是低电平时,则TCON中的标志IE0或IE1置位。所以,在边沿触发方式时:外部设备发出的边沿信号(高电平和低电平)的时间应大于一个机器周期,否则信号将可能漏检。 2.“电平”触发方式:CPU采集到/INT0或/INT1的引脚为低电平时将激活中断。所以在这种触发方式中,外部的低电平至少应保留一个机器周期。 如果外电路的信号不能满足要求,可使用触发器解决。 MCS-51单片机对/INT信号的要求

  23. 以外中断电平触发为例:当CPU响应该中断并进入到服务程序后,在执行RETI返回主程序前,必须将外部的低电平撤掉,否则,当CPU返回主程序后,会因为外部的低电平信号而再次进入中断,使主程序无法正常运行。以外中断电平触发为例:当CPU响应该中断并进入到服务程序后,在执行RETI返回主程序前,必须将外部的低电平撤掉,否则,当CPU返回主程序后,会因为外部的低电平信号而再次进入中断,使主程序无法正常运行。 同理,其它中断源也存在类似的问题。所以在使用中断时必须清楚在响应某一中断时,其中断请求(标志)是否要撤除,如何撤除等问题。 六、中断请求的撤除

  24. MCS-51的中断标志的撤除方法 注:此表指使用中断服务程序来处理中断事件时的情况。 如果采用查询的方法来处理事件时,都需要软件来清除标志。

  25. CLR P1.0 MCS-51 INTX P1 .0 D型触发器 SETB P1.0 外部 设备 D Q CP S 服务程序 主体 外设(CP) 触发器Q P1.0 RETI 中断服务程序 撤除外部电平请求信号的方案

  26. 每个机器周期的S5P2时刻,INTx引脚的电平被锁存到内部寄存器中,待下一个周期查询。每个机器周期的S5P2时刻,INTx引脚的电平被锁存到内部寄存器中,待下一个周期查询。 1、最短时间:中断请求有效,查询后在下一个周期便开始执行一条硬件的子程序的调用(时间是两个周期),然后开始执行服务程序的第一条指令。这样从锁存电平的周期到执行中断服务程序,中间相隔3个机器周期。 C1 C2 C3 C4 C5 电平锁存 中断查询 长调用 执行入口地址中的指令 保护断点,关闭CPU中断 转移到中断的入口地址 七、中断响应时间(以外部中断INTx为例)

  27. 2、最长时间:如果中断信号发生在前面所说的3种情况时,响应时间就要变长:2、最长时间:如果中断信号发生在前面所说的3种情况时,响应时间就要变长: 第1种情况: 响应时间取决于正在执行的同级或高级中断的执行时间; 第2种情况: 指当前CPU执行的指令是多周期指令,如乘除法指令(4个周期),最坏情况,还要等3个周期。这样响应周期变为3+3=6个周期; 第3种情况: CPU当前执行的指令是RETI或访问IE、IP寄存器时,本指令(1个周期)没有响应,且下一条指令执行完后才能响应,这样附加的等待时间最长不会超过5个周期(1+4)。整个响应为5+3=8个周期。若为单中断源系统,整个中断响应的时间范围应当是:3~8个机器周期。

  28. 例1: 将P1口的P1.4~P1.7作为输入口,P1.0~P1.3作为输出口,要求利用8031将开关所设的数据读入单片机内,并依次通过P1.0~P1.3输出,驱动发光二极管,以检查P1.4~P1.7输入的电平情况.采用中断边沿触发方式,每次中断完成一次读/写操作. 5.4中断应用程序举例

  29. ORG 0000H AJMP MAIN ORG 0003H AJMP INSER ORG 0030H MAIN: SETB EX0 SETB IT0 SETB EA HERE: SJMP HERE INSER: MOV A,#0F0H ;P1.4~P1.7为输入口 MOV P1,A MOV A,P1 SWAP A MOV P1,A RETI END

  30. 例2: 用中断电路实现系统的故障显示,当系统的各部分正常工作时,四个故障源的输入均为低电平,显示灯不亮,当某个部分出现故障时,则相应的低电平变为高电平,相应的灯亮。

  31. ORG 0000H AJMP MAIN ORG 0003H AJMP INSER ORG 0030H MAIN: ANL P1,#55H SETB EX0 SETB IT0 SETB EA HERE: SJMP HERE INSER: JNB P1.0,L1 SETB P1.1 L1: JNB P1.2,L2 SETB P1.3 L2: JNB P1.4,L3 SETB P1.5 L3: JNB P1.6,L4 SETB P1.7 L4: RETI END

  32. 5.5.1 利用定时器扩展外部中断源 当设定时器为计数方式,计数初值设置为满量程FFH,一旦外部信号从计数器引脚输入一个负跳变时,计数器加1产生溢出中断从而可实现外部中断。 5.5.2 中断加查询扩展中断源 利用8051的两根外部中断输入线,每个中断输入线可以通过“线或”的关系连接多个外部中断源,同时利用输入端口线作为各中断源的识别线。 5.5 外部中断的扩展

  33. ORG 0003H LJMP INTRP ;INT0中断服务程序入口 …. INTRP: PUSH PSW PUSH ACC JB P1.0,DV1 JB P1.1,DV2 JB P1.2,DV3 JB P1.3,DV4 EXIT: POP ACC POP PSW RETI DV1: …;装置1中断服务程序 AJMP EXIT DV2: …;装置2中断服务程序 AJMP EXIT DV3: …;装置3中断服务程序 AJMP EXIT DV4: …;装置4中断服务程序 AJMP EXIT

  34. 作业 P 95 2、9、12、 13 (2)、(4)

More Related