1 / 108

第 7 章 中断及中断控制器

第 7 章 中断及中断控制器. 7.1 概述 7.2 可编程中断控制器 82C59A. 教学目的和要求. 掌握有关中断和中断源、中断处理过程、中断优先级和中断嵌套等基本知识 掌握可编程中断控制器 82C59A 外部特性及其与 CPU 的连接方式 掌握 82C59A 的初始化编程 掌握 8086/8088 可屏蔽中断的全过程 了解 82C59A 的结构及级联方式的运用等. 中断及中断控制器. 重点 中断及中断处理过程 82C59A 的初始化编程 8086/8088 可屏蔽中断的全过程 难点 8086/8088 的中断系统 中断优先权的控制机理.

radha
Download Presentation

第 7 章 中断及中断控制器

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. 第7章 中断及中断控制器 • 7.1 概述 • 7.2 可编程中断控制器82C59A

  2. 教学目的和要求 • 掌握有关中断和中断源、中断处理过程、中断优先级和中断嵌套等基本知识 • 掌握可编程中断控制器82C59A外部特性及其与CPU的连接方式 • 掌握82C59A的初始化编程 • 掌握8086/8088可屏蔽中断的全过程 • 了解82C59A的结构及级联方式的运用等

  3. 中断及中断控制器 重点 • 中断及中断处理过程 • 82C59A的初始化编程 • 8086/8088可屏蔽中断的全过程 难点 • 8086/8088的中断系统 • 中断优先权的控制机理

  4. 7.1 概述 7.1.1 中断、中断源及中断系统 一、中断、中断源 • 所谓“中断”是指在CPU正常运行程序时,由于内、外部事件引起CPU暂时中止正在运行的程序,转而去执行请求CPU暂时中止的内、外部事件的服务程序,待该服务程序处理完毕后又返回到被中止的程序。 • 能够向CPU发出中断请求的中断来源称为“中断源”。

  5. 常见的中断源 • 一般的输入/输出设备,如打印机、RS232C串行通信设备等 • 数据通道,如磁带、磁盘等 • 实时时钟,如定时器芯片82C54等的定时输出作为定时中断请求信号 • 故障信号,如电源掉电等 • 软件中断,如为调试程序而设置的单步中断

  6. 广义中断 在80286以后的处理器中均将广义中断分为中断和异常两大类:由外部事件引起的中断称为外部中断,由内部事件引起的中断称为内部异常。

  7. 二、中断系统的功能 为满足中断要求,中断系统应具有的功能可归结为中断处理和中断控制: • 中断处理 包括发现中断请求、响应中断请求、中断处理与中断返回。 • 中断控制 主要是实现中断优先级的排队和中断嵌套。

  8. 三、中断的主要用途 在微机系统中,中断的主要用途是: • 实现输入/输出操作 • 电源掉电或其他情况的报警 • 控制台或人工干预 • 多处理机系统中各处理机之间的协调 • 控制操作系统

  9. 四、可屏蔽中断与不可屏蔽中断 根据微处理器内部受理中断请求的情况,中断可分为可屏蔽中断与不可屏蔽中断两种: • 凡是微处理器内部能够“屏蔽”的中断,称为可屏蔽中断。 • 凡是微处理器内部不能“屏蔽”的中断,称为不可屏蔽中断。 • 所谓“屏蔽”是指微处理器拒绝响应中断请求信号,不允许中断微处理器所执行的主程序。这通常是由内部的中断触发器(或中断允许触发器)来控制的。

  10. 7.1.2中断处理过程 微机系统中断处理过程 的流程图如图7-1所示:

  11. 一、CPU响应中断的条件 1.设置中断请求触发器 每个中断源向CPU发出中断请求信号是随机的,而大多数CPU都是在现行周期结束时,才检测有无中断请求发出,故在现行指令执行期间,必须把随机输入的中断请求信号锁存起来,并保持到CPU响应这个中断请求后才可以清除中断请求。因此,要求每一个中断源有一个中断请求触发器,如图7-2中所示:

  12. 2.设置中断屏蔽触发器 在存在多个中断源的情况下,为增加控制的灵活性,常要求在每一个外设的接口电路中,设置一个中断屏蔽触发器,只有当此触发器为“1”时,外设的中断请求才能被送到CPU,如图7-2中所示, 可把8个外设的中断屏蔽触发器组成一个中断屏蔽寄存器端口,用输出指令来控制它们的状态。

  13. 3.CPU内部设置中断允许触发器的状态 • 在CPU内部有一个中断允许触发器,只有当其为“l”时,CPU才能响应中断;若其为“0”时,即使中断请求线上有中断请求,CPU也不响应。 • 可用允许中断和禁止中断指令来设置中断允许触发器的状态。 • 当CPU复位时,中断允许触发器也复位为“0”,即关中断。当中断响应后,CPU就自动关闭中断,以禁止接受另一个新的中断,因而通常在中断服务程序结束之前,必须要执行两条指令,即允许中断指令和中断返回指令。

  14. 4.CPU在现行指令结束后响应中断 • 在满足上面三个条件的情况下,CPU在执行现行指令的最后一个机器周期(总线周期)的最后一个时钟周期(T状态)时,才测试中断输入线INTR(或NMI),若发现中断请求有效,则把内部的中断锁存器置“1”,下一总线周期进入中断响应周期。

  15. 二、CPU对中断的响应过程 进入中断周期后,中断响应的过程如下: ⒈ 关中断 CPU在响应中断后,发出中断响应信号 ,同时内部自动地关中断,以禁止接受其他的中断请求。 ⒉ 保护断点 把断点处的标志寄存器F的内容、段寄存器CS值和指令指针IP值依次压入堆栈保存 ,以便中断处理完后能正确地返回到主程序的断点地址,接着执行被中断的程序。

  16. CPU对中断的响应过程 ⒊ 识别中断源 CPU要对中断请求进行处理,必须要找到相应中断服务程序(处理中断的程序)的入口地址,这就是中断源的识别 。

  17. 识别中断源有两种方法-1 • 查询中断 当外设没有提出中断请求时,CPU照常执行主程序,只有在接收到外设的中断请求后CPU才去查询,以识别提出中断请求的设备,主要采用软件查询。软件查询是用程序查询的方法,查询中断请求寄存器的当前值,查询程序依次查询每一个外设的中断状态位,通过测试该状态位来判断对应的外设是否发出过中断请求,如果有,则转到相应的中断服务程序。

  18. 识别中断源有两种方法-2 • 向量中断(Vectored Interrupt) 又称矢量中断,在具有向量中断的微机系统中,每个外设都预先指定一个中断向量,当CPU识别出某个外设请求中断并予以响应时,控制逻辑就将该外设的中断向量送入CPU,以自动地提供相应的中断服务程序的入口地址,转入中断服务。用向量中断来确定中断源主要是用硬件来实现的,通常在微机系统中采用可编程中断控制器来提供中断向量。

  19. CPU对中断的响应过程 ⒋ 保护现场 为了不使中断服务程序的运行影响主程序的状态,必须把断点处有关寄存器(指在中断服务程序中要使用的寄存器)内容压入堆栈保护。 ⒌ 执行中断服务程序 ⒍ 恢复现场 即把中断服务程序压入堆栈的现场信息从堆栈中弹出来,并存入到原寄存器中,这是在中断服务程序中用POP指令来实现的。

  20. CPU对中断的响应过程 ⒎ 开中断与返回 开放中断在返回之前,目的是返回主程序后能继续响应新的中断请求。从中断返回到断点处,有一条专门的中断返回指令,该指令的隐操作是将堆栈栈顶处连续的三个字依次弹出给指令指针IP、 段寄存器CS以及标志寄存器F。

  21. 7.1.3 8086/8088的中断系统 8086/8088有一个简单而灵活的中断系统,每个中断都有一个中断类型码(Type Code),以供CPU进行识别,8086/8088最多能处理256种不同的中断类型。中断可以由CPU以外的硬件设备驱动,也可由软件中断指令启动。在某些情况下,也可由CPU自身启动,8086/8088的中断源如图7-3所示。从图可见8086/8088的中断源可分为两类,即外部中断和内部中断。

  22. 8086/8088的中断系统

  23. 一、外部中断 8086/8088有两条中断信号线—INTR和NMI,可供外设向CPU发中断请求信号。 • 可屏蔽中断INTR 可屏蔽中断请求线INTR通常由中断控制器 82C59A驱动,该控制器又同需要中断服务的外部设备相连。CPU通过向82C59A写命令字来控制82C59A的工作,82C59A 负责管理多个外设以中断方式与CPU交换数据,例如,82C59A接收与其相连接的外部设备送来的中断请求,并判断提出中断请求的哪一个外部设备的优先级最高,如果被选中设备的优先级比现行正接受服务的设备(如果有的话)的优先级高,就启动8086/8088的INTR线

  24. 可屏蔽中断INTR 当INTR信号有效(为“1”)时,CPU将根据中断允许标志IF的状态而采取不同的措施。如果IF=“L”(置0),表示INTR线上的中断屏蔽(Masked)或禁止(disabled),CPU将不理会该中断请求而处理下一条指令,由于CPU并不锁存INTR信号,因此INTR信号必需保持有效状态,直到接收到响应信号或撤消请求为止。如果IF=“H”(置1)表示INTR线上的中断开放,CPU在完成现在正在执行的指令后,识别该中断请求,并进行中断处理。中断允许标志IF可以用STI(中断允许位置位)指令或CLI(中断允许位清零)指令来设定。也可以将命令写入82C59A,从而有选择地屏蔽82C59A所控制的中断申请输入设备

  25. 可屏蔽中断INTR CPU对INTR中断请求的响应过程是执行两个 (中断响应)总线周期,如图7-4所示。如果在中断响应周期内出现一个总线保持请求(HOLD—最小方式,或RQ/GT—最大方式),那么在两个中断响应周期结束以前不会接受这个请求。在8086/8088的最大方式下,在这两个中断响应周期内输出 信号,以通知其他处理器不能再试图控制总线

  26. 可屏蔽中断INTR 在第一个中断响应周期内 信号通知82C59A,中断请求已被接受;在第二个中断响应周期内 信号有效时,82C59A必须把请求服务的那个设备的中断类型码(0~255)送到数据总线,该中断类型码是82C59A的初始化过程中由8086/8088写入的。CPU读入该中断类型码后,由此调用相应的中断服务程序 。

  27. 可屏蔽中断INTR

  28. 不可屏蔽中断NMI ⒉ 不可屏蔽中断NMI 不可屏蔽中断请求信号NMI用来通知CPU发生了“灾难性”的事件,如电源掉电、存储器读写出错、总线奇偶位出错等。NMI线上中断请求是不可屏蔽的(即无法禁止的),而且立即被CPU锁存,因此NMI是边沿触发的,不需要电平触发。NMI的优先级比INTR高。由于不可屏蔽中断的类型号预定为2,在CPU响应NMI时,不必由中断源提供中断类型码,因此,NMI响应也不需要执行中断响应总线周期。

  29. 不可屏蔽中断NMI CPU识别一个外部中断请求所需的时间称为“中断等待时间”,这取决于执行完现行指令还需要多少个时钟周期。一般而言,在执行乘法、除法、移位或循环指令时,如果接到外部中断请求,其等待时间最长。

  30. 二、内部中断 内部中断是通过软件调用的不可屏蔽中断,包括溢出中断、除法出错中断、单步中断、INT n指令中断以及单字节INT 3指令中断。 ⒈ 溢出中断 如果上一条指令使溢出标志OF置“1”,那么在执行溢出中断指令(INTO)时,立即产生一个4型中断(中断类型码为4)。

  31. 内部中断 ⒉ 除法出错中断 在执行除法指令DIV或IDIV后,如果商大于规定的目标操作数(即目标寄存器所能表达的范围),则CPU立即产生一个0型中断。 ⒊ INT n 指令中断 8086/8088的指令系统中有一条INT指令,当执行完这条指令就立即产生中断。CPU根据该指令中的中断类型码n,确定调用哪个服务程序来处理这个中断。

  32. 内部中断 ⒋ 断点中断(Breakpoint Interrupt) 断点中断即单字节INT 3指令中断,中断类型码为3,该中断是专供调试程序设置断点所使用的,断点一般可以处于程序中任何位置。在断点处,停止当前程序的执行,CPU按中断类型码为3来响应中断。通常,在调试时把断点插入程序中的关键之处,以便检查并显示当前寄存器以及存储单元的内容,便于调试程序。

  33. 内部中断 ⒌ 单步(陷阱)中断 当陷阱标志TF置“1”时,8086/8088处于单步工作方式。在单步工作时,每执行完一条指令,CPU就自动产生一个类型号为1的中断,作为中断处理过程的一部分,CPU将自动地把标志寄存器和断点值(CS:IP)压入堆栈,然后清除TF和IF,CPU进入单步中断处理过程,它就不会以单步工作方式来执行程序,而以正常的方式执行单步处理的中断服务程序。当单步中断过程结束时,从堆栈中弹出原来的断点值(CS:IP)及标志寄存器F的内容,使CPU返回单步方式 。

  34. 内部中断 单步方式是一种有用的调试工具,它使单步过程成为能逐条指令地观察系统操作的一个“窗口”。例如,单步中断过程可以在每执行一条指令后打印或显示寄存器内容、指令指针的值,以及关键的存储器变量等。这样就能详细地跟踪一个程序的具体执行过程,确定问题的所在。

  35. 内部中断 上述所有内部中断的特点: • 中断类型码或者包含在指令中,或者是预先规定的。 • 不执行响应外部中断的中断响应周期。 • 除单步中断外,任何内部中断都无法禁止。 • 除单步中断外,任何内部中断的优先级都比任何外部中断的优先级高。

  36. 中断优先级 8086/8088的中断优先级见下表

  37. 三、中断向量表 中断向量表又称中断指针表,是存放中断服务程序入口地址(即“中断向量”)的表格。它存放在存储器的最低端(0000H:0000H~0000H:03FFH),共1024个字节,每4个字节存放一个中断服务程序的入口地址,一共可以存放256个中断服务程序的入口地址。较高地址的两个字节存放中断服务程序入口的段基值;较低地址的两个字节存放入口地址的段内偏移量。这4个单元的最低地址称为向量地址,其值为对应的中断类型码乘以4。8086/8088中断向量表的结构如图7-5所示 。

  38. 中断向量表 由图可见,8086/8088的中断向量表由三部分组成: 专用的有5个(0#~4#), 保留的有27个(5#~31#), 可供用户定义的有224个 (32#~255#)。“专用的”是指8086/8088系统中统一规定并使用的中断类型。 “保留的”是指为系统开发所 保留的中断类型。

  39. 中断向量表 8086/8088在响应中断以后,先将标志寄存器压入堆栈,然后将执行一个与段间间接调用(CALL)指令相当的过程来启动一个中断过程,该过程中,CPU将CS和IP压入堆栈,以保存断点的地址,然后将中断向量表中相应的4个字节内容弹出并赋给IP和CS,于是CPU开始执行中断服务程序。 如果n个中断请求同时到达,则CPU将按优先级顺序来调用中断过程。

  40. 四、中断过程 8086/8088对一个中断过程的基本响应过程见图7-6。当进入中断过程时,CPU把标志寄存器、CS和IP压入堆栈,并清除TF和IF。在中断过程中,可以用STI指令重新开放外部中断,使INTR线上的中断请求能中断这个中断过程。注意,在STI之后的那条指令执行完以后才会真正开放中断。NMI线上的中断请求则始终能够中断该过程。必须注意的是,一个中断处理过程中不能再发生需要该过程正为之服务的中断。

  41. 中断过程 所有的中断过程都 应该以IRET指令结 尾,IRET指令总是 认为堆栈仍处于进 入该过程时的状态。 该指令将栈顶的三 个字分别弹出到IP、 CS和标志寄存器中, 这样就回到了中断 过程开始前将要执行 的那条指令上去

  42. 7.2 可编程中断控制器82C59A Inter 82C59A是一种可编程中断控制器,一个82C59A可以管理8级中断,每一级中断都可以屏蔽或允许。82C59A在中断响应周期可提供相应的中断类型号,从而迅速转至中断服务程序。82C59A设计有多种工作方式,可以通过编程来选择,以适应不同的应用场合。

  43. 可编程中断控制器82C59A 可编程中断控制器82C59A具有以下特点: • 与所有Intel系列微处理机兼容 • 在 12.5MHz 80C286 和8MHz 80C86/88下“无等待状态”高速工作 • 管脚与NMOS82C59A兼容 • 8级中断,通过级连可扩展至64级 • 可编程中断模式 • 单5V供电电压

  44. 可编程中断控制器82C59A • 低功耗的CHMOS • 工作温度范围: C82C59A 0C to +70C I82C59A -40C to +85C M82C59A -55C to +125C

  45. 7.2.1 82C59A内部结构 82C59A的内部结构如图7-7所示,主要有8个基本组成部分: 一、数据总线缓冲器 8位的双向三态缓冲器,一般与CPU数据总线D7~D0直接连接,完成命令、状态信息的传送,中断类型号也是由数据缓冲器送到CPU。

  46. 7.2.1 82C59A内部结构 二、读写控制逻辑 该部件接收来自CPU的读写命令,完成规定的操作。操作过程由 、Ao、 、 等输入信号共同控制。在CPU写82C59A时,把写入数据送至相应的命令寄存器中(包括初始化命令字和操作命令字)。在CPU读82C59A时,控制相应寄存器的内容输出到数据总线上。

  47. 7.2.1 82C59A内部结构 三、中断请求寄存器IRR IRR(Interrupt Request Register)是与外部接口的中断请求线相连的寄存器,请求中断处理的外设通过IR0~IR7向82C59A请求中断服务,并把中断请求信号锁存在中断请求寄存器中。

  48. 7.2.1 82C59A内部结构 四、中断屏蔽寄存器IMR IMR(Interrupt Mask Register)是—个8位寄存器,用来设置中断请求的屏蔽信息。当IMR中第i位被屏蔽时(即IMRi=1),禁止IRi引脚发出的中断请求信号,使之不可能通过82C59A向CPU申请中断。

More Related