第7章 输入/输出和中断

71
1 7 7 第第 第第 / / 第第第第第 第第第第第

Upload: shandi

Post on 21-Jan-2016

100 views

Category:

Documents


0 download

DESCRIPTION

第7章 输入/输出和中断 . 数据端口 状态端口 控制端口. 端 口. 7.1 外设接口的一般结构. I/O 接口: 将外设连接到总线上的一组逻辑电路的总称。 用以实现外设与主机之间的 信息交换 I/O 端口: 接口中的寄存器,可以由 CPU 读或写. 7. 二进制——数 ASCII 码表示的数或字符. 数字量. 三种类型. 模拟量. 开关量. CPU 同外设间交换的信息由三类: 1. 数据信息. 2.状态信息: 表示外设当前所处的工作状态。. - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: 第7章  输入/输出和中断

1

第第 77 章 输入章 输入 // 输出和中断输出和中断

Page 2: 第7章  输入/输出和中断

2

I/O 接口: 将外设连接到总线上的一组逻辑电路的总称。

用以实现外设与主机之间的信息交换 I/O 端口: 接口中的寄存器,可以由 CPU 读或写

7.1 7.1 外设接口的一般结构外设接口的一般结构

数据端口

状态端口

控制端口端 口

Page 3: 第7章  输入/输出和中断

3

7

Page 4: 第7章  输入/输出和中断

4

CPU 同外设间交换的信息由三类:

1. 数据信息

三种类型

数字量

模拟量

开关量

二进制——数

ASCII 码表示的数或字符

2. 状态信息 : 表示外设当前所处的工作状态。

3. 控制信息 : 由 CPU 发出的,用于控制 I/O 接口的工作方式以及外设的启动和停止等。

Page 5: 第7章  输入/输出和中断

5

7.2 7.2 CPUCPU 与外设交换数据的方式与外设交换数据的方式

7.2.1 程序控制传递方式

无条件传送方式查询传送方式

中断传送方式

特点:( 1 )以 CPU 为中心,控制来自 CPU ,通过预先编写好的 I/O 程序实现数据的传送。

( 2 )速度较低,传送路径经过 CPU 内部寄存器同时数据 I/O 响应也比较慢。

Page 6: 第7章  输入/输出和中断

6

1. 无条件传送方式(同步传送方式) 外设的工作时间已知,必须在 CPU 限定的指令

时间内准备就绪,并完成数据的接收或发送。方法:把 I/O 指令插入到程序中,当程序执行到该指

令时,外设已作好准备,于是在此指令时间内完成数据传送任务。

优点:软件及接口硬件简单缺点: CPU 效率低,只适用于简单外设,适应范围

较窄

Page 7: 第7章  输入/输出和中断

7

2. 查询传送方式(异步传送方式)

当 CPU 同外设不同步且不知道外设工作速率时,可采用此方式传送。传送前, CPU 必须先对外设进行状态检测。

适用场合: 外设并不总是准备好 对传送速率和效率要求不高

对外设及接口的要求: 外设应提供设备状态信息 接口应具备状态端口

Page 8: 第7章  输入/输出和中断

8

完成一次传送过程的步骤如下:

(1)  通过执行一条输入指令,读取所选外设的当前状态

(2) 根据该设备的状态决定程序去向

外设 “忙”或“未准备就绪” —重复检测外设状态

外设 “空”或“准备就绪” —发出 I/O 指令,进行一次数据传送。

Page 9: 第7章  输入/输出和中断

9

优点:软件比较简单缺点: CPU 效率低,数据传送的实时性差,速

度较慢

Page 10: 第7章  输入/输出和中断

10

3 .中断传送方式

无条件传递和查询传送的缺点是: CPU 和外设只能串行工作。

为提高系统的工作效率,充分发挥 CPU 的高速运算能力,引入了“中断”系统,利用中断来实现CPU 与外设之间的数据传送,这就是中断传送方式。

特点:外设在需要时向 CPU 提出请求, CPU 再去为 它服务。服务结束后或在外设不需要时, CPU

可执行自己的程序。

中断使 CPU 和外设以及外设之间能并行工作。

Page 11: 第7章  输入/输出和中断

11

工作过程: 在中断传送方式中,通常在程序中安排好某一时刻启动某一台外设,然后 CPU 继续执行其主程序,当外设完成数据传送的准备后,向 CPU 发出中断请求信号,在 CPU 可以响应中断的条件下,现行主程序被“中断”,转去执行“中断服务程序”,在“中断服务程序”中完成一次 CPU 与外设之间的数据传送,传送完成后仍返回被中断的主程序,从断点处继续执行。优点: CPU 效率高,实时性好,速度快缺点:程序编制较为复杂

Page 12: 第7章  输入/输出和中断

12

以上三种以上三种 I/OI/O 方式的共性方式的共性

均需 CPU 作为中介: 软件: 外设与内存之间的数据传送是通过 CPU 执行 程序来完成的 硬件: I/O 接口和存储器的读写控制信号、地址信

号 都是由 CPU 发出的 缺点:程序的执行速度限定了传送的最大速度

Page 13: 第7章  输入/输出和中断

13

7.2.2 DMA (直接存储器存取)传递方式

外设和内存之间直接传送数据的方式,即 DMA传送方式。在 DMA 传送方式中,对这一数据传送过程进行控制的硬件称为 DMA 控制器( DMAC )。

特点:外设直接与存储器进行数据交换 ,不需要 CPU干预也不需软件介入。总线由 DMA 控制器( DMAC )进行控制( CPU

要放弃总线控制权),内存 / 外设的地址和读写控制信号均由 DMAC 提供。

Page 14: 第7章  输入/输出和中断

14

1. DMA操作的基本方法

( 1 )周期挪用( Cycle Stealing )( 2 )周期扩散( 3 ) CPU停机方式 最常用,最简单的传送方式

Page 15: 第7章  输入/输出和中断

15

2. DMA的传送方式

(1)单字节传送方式 每次 DMA 传送只传送一个字节就立即释放总线。(2)成组传送方式 DMAC 在申请到总线后,将一组数据传送完后才释放总线,而不管中间 DREQ 是否有效。

(3)请求传送方式(查询传送方式) 成组传送,但每传送一个字节后, DMAC 查

DREQ ,有效传,无效挂起。

Page 16: 第7章  输入/输出和中断

16

3 .DMAC ( DMA 控制器)的基本功能

( 1 )能接收外设的请求,向 CPU 发出 DMA 请求信号。( 2 )当接到 CPU 发出 DMA 响应信号后, DMAC 接

管对总线的控制,进入 DMA 方式。

( 3 )能寻址存储器,即能输出地址信息和修改地址。( 4 )能向存储器和外设发相应的读 / 写控制信号。( 5 )能控制传送的字节数,判断 DMA 是否结束。

( 6 )在 DMA 传送结束后,能结束 DMA 请求信号,释放总线,使 CPU恢复正常工作。

Page 17: 第7章  输入/输出和中断

17

7.3 中断技术 7.3.1 概述

中断——外设随机地(指主程序运行到任何一条指令时)或程序预先安排产生中断请求信号,暂停CPU正在运行的程序,转入执行称为中断服务的子程序,中断服务完毕后,返回到主程序被中断处继续执行的过程。

中断源——引起中断的事件

Page 18: 第7章  输入/输出和中断

18

( 1 ) 输入、输出设备 : 如键盘、显示器和打印机等 ;( 2 ) 数据通道 ;( 3 ) 实时控制过程中的各种参数 ; ( 4) 故障源 : 如掉电保护等 ; ( 5) 控制系统的现场测试信号以及软件中断。中断系统应具有以下功能 :

1. 能实现中断响应、中断服务和中断返回 2. 能实现中断优先级排队 3. 能实现中断嵌套

Page 19: 第7章  输入/输出和中断

19

7.3.2 中断过程

1. 中断过程

一个完整的中断基本过程包括:中断请求、中断判优、中断响应、中断处理及中断返回等五个基本过程。( 1 )中断请求 当某一外部中断源要求 CPU 中断时,首先要向CPU 发出中断请求,该请求信号被存放在中断源接口电路的中断请求触发器中暂存,并通过 INTR 或 NMI

信号线引入 CPU 。

Page 20: 第7章  输入/输出和中断

20

( 2 )中断判优 由于中断请求是随机的,在某一瞬间有可能出现两个或两个以上中断源同时提出请求的情况。这时必须根据中断源的轻重缓急,给每个中断源确定一个中断级别—— 中断优先权 。

另一个作用能实现中断嵌套 。

Page 21: 第7章  输入/输出和中断

21

( 3 )中断响应 CPU每执行完一条指令后,查询是否有中断请求。当 查 询 到有中 断 请 求 且 此 时 CPU 允许中 断 (即IF=1 ,开中断), CPU 响应中断。响应中断后系统做的工作:①自动关中断;通过使 IF清零来实现②保存 FR 和断点;③形成中断入口地址。通过中断矢量,查询中断地址表实现。

Page 22: 第7章  输入/输出和中断

22

( 4)中断处理 执行中断服务程序 ①中断服务开始要用压栈指令( PUSH )将要用

到的寄存器内容压入堆栈,以便返回到主程序时能正确运行。——保护现场

② 中断服务程序结束后,用 POP 指令把所保存的有关寄存器的内容从堆栈弹出,以便恢复到中断前的状态。——恢复现场

Page 23: 第7章  输入/输出和中断

23

( 5)中断返回

通常在中断返回前,要用指令开中断,以便再次响应中断,然后执行中断返回指令IRET 。 IRET 指令具有弹出断点地址送 IP 和 CS及恢复标志寄存器 FR 内容的功能。

Page 24: 第7章  输入/输出和中断

24

2. 中断优先权( 1 )软件查询方式

7 7

Page 25: 第7章  输入/输出和中断

25

( 2 )硬件优先权排队电路。

①简单硬件方式——菊花链法或链式优先权排队电路。

②专用硬件方式——可编程的中断控制器

7

Page 26: 第7章  输入/输出和中断

26

7.4 8086/8088 的中断系统 7.4.1 中断结构

1. 中断分类

硬件中断(外部中断)

软件中断(内部中断)

除法错中断溢出中断断点中断单步中断INT n 指令中断

非屏蔽中断

可屏蔽中断256 种中断源类型码 0~255

Page 27: 第7章  输入/输出和中断

27

硬件中断——由外部硬件产生的,也称外部中断。

软件中断—— CPU 根据软件的某些指令或者软件对标志寄存器某个标志位的设置而产生的,由于它与外部中断电路完全无关,故称为内部中断。

非屏蔽中断:通过 CPU 的 NMI 引入,它不受内部中断允许标志位 IF 的屏蔽,一般在一个系统中只允许有一个非屏蔽中断。

可屏蔽中断:通过 CPU 的 INTR 引入 ,它受 IF 的控制。只有在 IF=1 时, CPU才能响应中断源的请求。当 IF=0 时,中断请求被屏蔽。

Page 28: 第7章  输入/输出和中断

28

2 .中断向量表

存放中断地址的一段内存空间称中断向量表。 存放各类中断的中断服务程序的入口地址 表的地址位于内存的

0000 0000~0000 03∶ ∶ FFH (即 00000 ~003FFH )大小为 1KB ,共 256个入口

每个入口占用 4个单元,依次为 IP : CS, 低字为段内偏移,高字为段基址

Page 29: 第7章  输入/输出和中断

29

中断向量表中断向量表

00000H

003FFH

1KB

Page 30: 第7章  输入/输出和中断

30

IPCS

中断类型码与中断向量所在位置(中断向量地址指针)之间的对应关系为: 中断向量地址指针 =4*中断类型码

3

Page 31: 第7章  输入/输出和中断

31

例:中断类型码为 20H(32) 的中断源所对应的中断服务程序首址存放在 0000 0080∶ H ( 4*20H=80H )开始的 4 个单元中。若在 0080H至 0083H 这 4个单元中存放的值分别为 10H 、 20H 、 30H 、 40H ,则该系统中 20H 号中断所对应的中断处理(服务)程序入口地址为 4030 2010∶ H

中断向量表中断向量表┇

0080H┇

10H20H30H40H0083H

0082H0081H

Page 32: 第7章  输入/输出和中断

32

7.4.2 内部中断——软中断 在 8086/8088 系统中,通过执行中断指令或由CPU

本身启动的中断称为内部中断(也称软件中断)。 除单步中断外,内部中断无法用软件禁止,即不受 IF 的影响。1、内部中断的类型( 1 ) 0 型中断——除法出错中断 ( 2 ) 1 型中断——单步中断 ( 3 ) 3 型中断——断点中断 ( 4 ) 4 型中断——溢出中断 ( 5 ) INT n 指令中断

Page 33: 第7章  输入/输出和中断

33

2 .内部中断的处理过程

如何获取相应的中断类型码 专用中断:中断类型码是自动形成的。几种类型码为:类型 0、 1、 3、 4 。对于 INT n 指令,其类型码为指令中给定的 n 。

Page 34: 第7章  输入/输出和中断

34

取得了类型码后的处理过程:① 类型码 *4 — 向量表指针。② 标志寄存器 FR 入栈,保护各个标志。③清除 IF 和 TF标志,屏蔽新的 INTR 中断和单步中

断。④保存断点(断点处 IP 和 CS压栈,先压 CS 后压 I

P )。⑤从中断向量表中取出中断服务程序入口地址分别送

入 IP 和 CS 中。⑥ 按新的地址执行中断服务程序。

Page 35: 第7章  输入/输出和中断

35

7.4.3 外部中断——硬中断

非屏蔽中断—— NMI 引脚产生的中断,不受 IF 控制,类型号为 2 。

可屏蔽中断——由 CPU 的 INTR 端接收可屏蔽中断。受 IF 控制,只有当 IF=1, 在一条指令执行结束后, CPU才能响应可屏蔽中断的请求。

Page 36: 第7章  输入/输出和中断

36

1. 外部中断的响应 CPU 采样到非屏蔽中断请求时,自动提供中断类型号 2 ,然后根据中断类型号,查找中断向量表指针,其后的处理与内部中断一样。 当 INTR 信号有效,如 IF=1 ,则 CPU 执行完一条指令后,进入可屏蔽中断响应周期。在中断响应周期中 CPU从数据线中获取外部设备的中断类型码。

Page 37: 第7章  输入/输出和中断

37

2. 外部中断处理过程

在外部中断响应周期中, CPU获取了外部中断类型码之后的中断处理过程,与前述的软中断过程顺序是一样的,不再赘述。

如果把 CPU 中断响应周期的动作和前面讲到的中断响 应过程 结合起来, 当 一个可屏蔽中断被响应时, CPU 实际执行了 7个总线周期,即:

Page 38: 第7章  输入/输出和中断

38

⑴ 执行第一个 INTA周期。⑵ 执行第二个 INTA周期,被响应的外设通过 D0 ~

D7 的 8位数据线提供中断类型码 n (由 8259A 提供), CPU 接到类型码后,将它左移两位,形成向量表指针存入暂存器。

⑶ 执行一个总线写周期,把 FR压栈。同时 IF 和TF 为 0 ,以禁止中断响应过程中其他可屏蔽中断的进入,同时也禁止了中断过程中出现单步中断。

Page 39: 第7章  输入/输出和中断

39

⑷ 执行一个总线写周期, CS压栈。⑸ 执行一个总线写周期, IP压栈。⑹ 执行一个总线读周期,从中断向量表中取出中断

服务程序入口地址的偏移量送 IP 中。⑺ 执行一个总线周期,从中断向量表中取出中断服

务程序入口地址的段值送 CS 。

对于非屏蔽与软中断跳过第⑴、⑵步,从第⑶步开始执行到第⑺步。

Page 40: 第7章  输入/输出和中断

40

7.4.4 各类中断的优先权及中断响应 8086/8088 系统中,中断优先权次序从高到低为:除法出错、 INTn 、 INTO 、 NMI 、 INTR、单步中断。 除单步之外的内部优先权最高,其次是非屏蔽中断,再次是可屏蔽中断,而单步最低。

Page 41: 第7章  输入/输出和中断

41

7.5 8259A 可编程中断控制器 7.5.1 8259A 的功能 1.功能

Intel 8259A 是与 8086 系列 CPU兼容的可编程中断控制器,它的主要功能为:

( 1 )具有 8级优先权控制,级连可扩展至 64级。

( 2 )每一级中断都可以屏蔽或允许。

( 3 )在中断响应周期, 8259A 可提供相应的中断向量号(中断类型号)。

( 4 ) 8259A 的工作方式,可通过编程来进行选择。

Page 42: 第7章  输入/输出和中断

7.5.2 8259A 的结构及工作原理

7 42

( 1 ) 8259A 的内部结构 8位寄存器,是 8259A 与外设中断源的接口。通过 IR7 ~ IR0 与 8个中断源相接。当有某个中断源申请中断时,使 IRR 的相应位置 1 。最多可同时接收 8个中断源的

中断申请。8位寄存器,用于设置中断请求的屏蔽信号。第 i位被置 1 时,与之对应的 IRi 被屏蔽,不能向CPU 发 INT 信号。可通过软件设置其内容,确定每个中断请求的屏蔽

状态。设置 IMR 也可起到改变中断请求优先级

的效果。

8位寄存器,寄存所有正在被服务的中断级。第 i位置 1 表示 CPU正为 IRi 中断源服务,该信号一直保持到 CPU 处理完该中断服务程序为止。该中断处理结束前,要使用指令清除这一位。 ISR 可被 CPU 读出。当有多位置 1 时,表示发生了中断嵌套。

对在 IRR 中的中断请求,经判断确定最高的优先权,并在中断响应用周期把它选通送至 ISR

8位双向三态缓冲器,是 8259A 与系统数据总线的接口。 8259A 通过它接收CPU 发来的控制字,也通过它向 CPU发送中断类型代码和状态信息。

接收 CPU 的读 / 写命令。CS 和地址线 A0 决定访问 8259A 的哪个寄存器。

用于多块 8259A 的连接,使中断可由 8级扩展到 64级

Page 43: 第7章  输入/输出和中断

7

43

⑵ 8259A 的引脚

双功能信号。当 8259A 工作与缓冲器方式时,它作为控制缓冲器传送方式的输出信号;当工作于非缓冲方式时,用于规定其是主 8259A还是从 8259A

Page 44: 第7章  输入/输出和中断

44

8259A 的工作原理 当系统通电后,首先应对 8259A初始化。(由CPU 执行一段程序,向可编程芯片写入若干命令字,规定其工作状态,使其处于准备就绪的状态。)

8259A 对外部中断请求处理过程如下: (1)   当有 IR0 ~ IR7变 高,则 IRR 的相应位置 1 。 (2) 若中断请求线中至少有一条是中断允许的,则由 INT 引脚向 CPU 发出中断请求。 (3) 若 CPU 处于开中断状态,则在当前指令执行完后,用 INTA 信号作为响应。

Page 45: 第7章  输入/输出和中断

45

(4) 8259A 接到 INTA 后,使最高优先权的 ISR位置1 ,而相应的 IRR位复位。在此周期中, 8259A

不向系统数据总线送任何内容。(5) 在中断响应周期的第二个信号期间 8259A 向数据

总线输送一个 8位指针(向量号或类型号), CPU 读取此类型号,类型号 *4 作为地址就可从中断向量表中取出中断服务程序入口地址。

(6) 若 8259A 工作在自动结束中断 AEOI 方式( Automatic End Of Interrupt ) , 在第二个INTA 结束时,使中断源在 ISR 的相应位复位。否则,直至中断服务程序执行到 EOI命令,才使ISR 的相应位复位。

Page 46: 第7章  输入/输出和中断

46

7.5.3 8259A 的编程 8259A 的编程分两部分:( 1 )初始化编程 由 CPU 向 8259A 送 2~ 4 字节的初始化命令字ICW

( 2 )工作方式编程 由 CPU 向 8259A 送三个字节的工作命令字 OCW ,以规定 8259A 的工作方式。该命令字可在 8259A初始化命令字 ICW 后的任何时间写入。

Page 47: 第7章  输入/输出和中断

47

1. 8259A 的初始化编程 8259A 的初始化命令字共 4个( ICW1 ~ ICW4 )

设置过程如图:

7

Page 48: 第7章  输入/输出和中断

48

⑴ 写初始化命令字 ICW1——芯片控制字

对 8086/8088 无效

ICW1 识 别 位

偶地址

74

0 0 0 0

Page 49: 第7章  输入/输出和中断

49

( 2 )写初始化命令字 ICW2—— 中断类型控制字 ( 中断类型码 ) 用来定义中断类型码的高 5位

T7 T6 T5 T4 T3

中断类型码的高 5位自动填入

IR0 000 IR1 001 IR2 010 ┇ IR7 111

奇地址

74

Page 50: 第7章  输入/输出和中断

50

(3) 写初始化指令字 ICW3— 主 /从片初始化 (级连控制字)

奇地址

奇地址

Page 51: 第7章  输入/输出和中断

51

(4) 写初始化命令字 ICW4—— 方式控制字 对于 8086/8088 系统是必须设置的初始化命令字

奇地址

74

1

Page 52: 第7章  输入/输出和中断

52

2. 8259A 的操作命令字

三个操作命令字 OCW1 ~ OCW3 。

在设置操作命令字时,顺序上没有严格的要求,但端口地址上有严格的规定。OCW1 必须写入奇地址端口( A0=1 )

OCW2 和 OCW3 必须写入偶地址端口( A0=0 )

Page 53: 第7章  输入/输出和中断

53

⑴ 操作命令字 OCW1 —屏蔽操作命令字 用来设置或清除对中断的屏蔽(设置 IMR 的值)

75

奇地址

Page 54: 第7章  输入/输出和中断

54

( 2 ) 操作命令字 OCW2—— 中断方式命令字 设置优先级循环和中断结束方式

偶地址

64

75

若 ICW4 设置正常结束访问,则在 IRET 前写

OCW2, 使 EOI=1 , ISR复位

1. 若 OCW2 中设置特殊优先级循环方式时,最低优先级编码。2. OCW2 中设置特殊中断命令结束,指具体清除哪一位。

Page 55: 第7章  输入/输出和中断

55

(3) 操作命令字 OCW3—— 状态操作命令字 设置和撤销特殊屏蔽方式、设置中断查询方式、设置对 8259A 内部寄存器的读出命令

允许特殊屏蔽模式撤销特殊屏蔽模式

7

Page 56: 第7章  输入/输出和中断

56

注意:1. 如何区分 OCW2 , OCW3 ? 用 D3位,即两个操作命令字的标识位

2. 如何区分 ICW1 , OCW2 , OCW3 ?

D3=0 OCW2

D3=1 OCW3 D3

D4=1 ICW1

D4=0 OCW2 , OCW3 用 D4位

Page 57: 第7章  输入/输出和中断

57

7.5.4 8259A 的工作方式

1 .中断嵌套方式( 1 )全嵌套方式 当工作在全嵌套方式时, 8259A 写入初始化命令字后,中断优先权是固定的,即 IR0 优先权最高, IR7

优先权最低。当 CPU 响应中断时,申请中断的优先权最高的中断源在 ISR 中相应位置位,而且把它的中断向量号(类型码)送到数据总线,在此中断源的中断服务程序完成前,与它同级或优先权更低的中断源申请被屏蔽,只有优先权比它高的中断源的申请才允许。

Page 58: 第7章  输入/输出和中断

58

( 2 )特殊全嵌套方式——级连情况与全嵌套方式不同之处 :

① 当某一从片中断请求被响应后,主片不封锁从片的INT 输入端,使该从片优先级更高的中断源的请求能得到响应。

② 当从片中断处理快要结束时,用软件检查从片中断服务寄存器 ISR 的内容是否为 0 ,若为 0 ,则这个从片的中断请求是唯一的,此时连发两个中断结束命令 EOI ,使主片、从片都结束中断。若只发一个 EOI命令则只结束从片,不结束主片中断。

Page 59: 第7章  输入/输出和中断

59

2 .中断优先级循环方式

8259A 中有两种改变优先权的办法 ⑴ 自动循环方式

当某一个中断源服务完以后,它的优先级变成最低的 。

7

Page 60: 第7章  输入/输出和中断

60

( 2 ) 特殊循环方式 如果中断源的优先权需要任意改变,就必须工作在特殊循环方式下。此时,可用程序通过写 OCW2

来改变优先权。

例如 : 设置 IR5 为最低优先权,则 IR6 的优先权就变

为最高。这时 OCW2最高三位为 110 ,而最低三位

L2 ~ L0 应为 101 (最低优先权编码)。 OCW2: 1 1 0 0 0 1 0 1

Page 61: 第7章  输入/输出和中断

61

3. 中断屏蔽 8259A 的 8 条中断请求线的每一条都可根据需要单独屏蔽,可通过写入 OCW1 的命令字来实现。8259A有两种屏蔽方式: ( 1 ) 普通屏蔽方式特点:当执行某一级中断服务程序时,只允许比该级

优先级高的中断源申请中断,不允许同级或低级的中断源申请中断。

方法:用 OCW1 将 IMR 寄存器某一位或几位置 1 ,即可将相应的中断请求屏蔽掉。

使用情况:当 CPU 执行主程序时,可将不希望响应的中断源屏蔽;当 CPU 执行某中断服务程序时,可将不希望响应的比此优先级高的中断源屏蔽。

Page 62: 第7章  输入/输出和中断

62

( 2 ) 特殊屏蔽方式特点: CPU正在处理某一级中断时,只可对本级中断进

行屏蔽,允许级别比它高的或比它低的中断源申请中断。

方法:在某级中断服务程序中首先用 OCW3 设置该方式(即 D6D5=11 ),然后设置 OCW1 使该级的中断申请被屏蔽,只有写入这两个控制字之后,才能使中断屏蔽寄存器 IMR 中该级中断位被屏蔽( =1 ),不允许发生同级中断,同时使中断服务寄存器 ISR相应位置 0 ,允许比该级低级别的中断源申请中断。

若想退出此方式,通过设置 OCW3 的 D6D5=10 ,再执行输出指令即可。

使用情况:在中断处理过程中,需要动态改变系统的优先级结构时。

Page 63: 第7章  输入/输出和中断

63

4. 程序查询方式 CPU 利用查询命令( OCW3 中 D2=1 )获得当前请求服务的优先级。此时 8259A 内部仍进行 8级中断请求的判优和屏蔽管理。查询命令发出后,执行一条输入指令,可得到查询字。

D7=1 有中断请求D7=0 无中断请求

当前发出中断请求级别最高的中断信号

Page 64: 第7章  输入/输出和中断

64

5. 中断结束命令

根据不同的工作方式 8259A 可以有几种不同的结束方法。( 1 )自动中断结束方式( AEOI )特点:中断服务寄存器 ISR 的相应位清零是由硬件自

动完成的。当某一级中断被 CPU 响应后, CPU 送回第一个 INTA 中断响应信号,使ISR 的相应位置 1 ,当第二个 INTA负脉冲结束时,自动将 ISR 的相应位置 0 。

实现方法:通过将 ICW4 的 D1位设置为 1 实现。使用环境:适用不要求中断嵌套的情况。

Page 65: 第7章  输入/输出和中断

65

( 2 )非自动中断结束方式( EOI )特点:中断返回前,必须用指令向 8259A 发中断结束命

令,即使 ICW4 的 D1=0 。若级连,发 2个。方法:首先将 ICW4 的 D1=0 ,定为正常中断结束方式,

然后用 OUT 向 8259A 的偶地址端口输出 OCW2

操作控制字( OCW2 的 D7D6D5=001 ),实现自动结束命令。

使用环境:一般的中断结束方式只能应用于全嵌套方式下,不能用于优先级自动循环方式和优先级特殊循环方式。因为一般中断结束方式结束的中断是尚未处理完的级别最高的中断。若中断级别改变,会使整个中断过程混乱。

Page 66: 第7章  输入/输出和中断

66

( 3 )特殊中断结束方式特点:通过用指令发一中断结束命令,同时给出结束中

断的中断源是哪一级,使该中断源的中断服务寄存器 ISR 的相应位置 0 。

使用环境:可应用在任何情况下,但要在中断处理中给出中断结束命令。

使用方法:首先将 ICW4 的 D1=0 ,定为正常中断结束方式,然后通过将 OCW2 的 D7D6D5=011 或111 , D2D1D0位指出结束中断处理的中断源号,使该中断源在中断服务寄存器 ISR 中的相应位清零。

Page 67: 第7章  输入/输出和中断

67

6. 读 8259A 的状态

8259A 的 IRR 、 ISR 、 IMR 的状态,可通过读命令读入 CPU ,供用户了解 8259A 的工作情况。

(1) 在读命令之前,输出一个 OCW3 ,令其RR=1 , RIS=0 ( D1D0=10 ),可利用读命令读入中断请求寄存器 IRR 的状态。若RR=1 , RIS=1 ( D1D0=11 ),可利用读命令读入中断服务寄存器 ISR 的状态。

(2) 对奇地址端口( A0=1 )进行读操作,可读得中断屏蔽寄存器 IMR 的值。

Page 68: 第7章  输入/输出和中断

68

7. 5.5 由多片 8259A 组成的主从式中断系统 在一个系统中若中断源多于 8个,必须采用多片8259A 进行级连。其中有一片主 8259A ,若干片从8259A ,可把中断源扩展到 64个。

7

Page 69: 第7章  输入/输出和中断

69

7.5.6 8259A 的编程实例 1.初始化编程 例 7-1 :对 IBM PC/XT 机中使用的 8259A初始化编程。硬件连接如图。

7

Page 70: 第7章  输入/输出和中断

70

设置 ICW1 为边沿触发,单片8259A 需要 ICW4 。 方式字: 000

10011

MOV AL , 13HOUT 20H , AL 设置 ICW2 类型码为

00001000 ( IR0 )

MOV AL , 08HOUT 21H , AL 设置 ICW4 ,全嵌套方式,缓冲方式 ,

正常 EOI 。 方式字: 00001101

MOV AL , 0DHOUT 21H , AL

根据系统要求初始化编程如下:

在 IBM PC 机中,只有一片 8259A ,可接外部 8级中断,8259A 的端口地址为 20H 和 21H 。对 8259A 的初始化规定:边沿触发方式,缓冲方式,中断结束为 EOI命令方式,中断优先权管理采用全嵌套方式。 8级中断源类型码为 08H-0FH 。

Page 71: 第7章  输入/输出和中断

71

初始化完成后, 8259A 处于全嵌套工作方式,可以响应外部中断。根据要求设置 8259A 的操作命令字 OCW1 ~ OCW2

( 1 )如允许时钟,键盘,异步通信卡 (COM1) 中断,设置OCW1 为 0ECH (屏蔽字)。 11101100

MOV AL , 0ECH

OUT 21H , AL

( 2 )由于正常 EOI ,因此在中断服务程序结束后,返回断点前必须对 OCW2 写入 00100000即 20H 作结束中断操作命令。 MOV AL , 20H ;设置 OCW2 的值为 20H

OUT 20H , AL

IRET ;中断返回