第 6 章 中断系统

74
6 6 第第第第第第6.1 中中中 中中中中 6.2 中中中中中中中 6.3 IBM-PC 中中中中 中中 6.4 Intel 8259A 中中中中中中中中 6.5 8259A 中中中中中中 中中

description

第 6 章 中断系统. 6.1 中断系统基本概念 6.2 中断的处理过程 6.3 IBM-PC 机中断系统结构 6.4 Intel 8259A 可编程中断控制器 6.5 8259A 的初始化编程 举例. 本章学习要点. 掌握有关中断的基本概念,中断类型码、中断处理过程, CPU 响应中断的条件。 掌握有关中断优先级、中断嵌套、中断屏蔽、中断矢量等基本概念。 了解 8086/8088 中断系统中的中断源分类,内部中断、外部中断的定义、响应和处理过程,中断向量表以及中断服务程序入口地址的形成方法及过程。 - PowerPoint PPT Presentation

Transcript of 第 6 章 中断系统

Page 1: 第 6 章 中断系统

第第 66 章章 中断系统中断系统

6.1 中断系统基本概念6.2 中断的处理过程6.3 IBM-PC机中断系统结构6.4 Intel 8259A可编程中断控制器6.5 8259A的初始化编程举例

Page 2: 第 6 章 中断系统

本章学习要点本章学习要点

掌握有关中断的基本概念,中断类型码、中断处理过程, CPU 响应中断的条件。

掌握有关中断优先级、中断嵌套、中断屏蔽、中断矢量等基本概念。

了解 8086/8088 中断系统中的中断源分类,内部中断、外部中断的定义、响应和处理过程,中断向量表以及中断服务程序入口地址的形成方法及过程。

掌握可编程中断控制器 8259A 的功能、内部结构、工作方式及初始化命令和操作命令的定义、使用方法,重点是初始化编程方法和 8259A 与系统的连接及简单应用。

Page 3: 第 6 章 中断系统

6.1 6.1 中断系统基本概念中断系统基本概念

6.1.1 中断系统的作用

6.1.2 中断源

返回本章首页

中断的定义中断的定义:所谓中断中断,指当计算机正在执行正常的程序时,计算机系统中的某个部分突然出现某些异常情况或随即事件, CPU 这时就暂停它正在执行的程序,而转去执行申请中断的那个设备或事件的中断服务程序,执行完这个服务程序后,再自动返回到断点执行原来中断了的正常程序。这个过程或这种功能就叫做中断。

引起中断的原因或来源叫中断源。引起中断的原因或来源叫中断源。

现行

程序

断点

中断

服务

程序

图 6-1 中断响应、服务和返回

Page 4: 第 6 章 中断系统

6.1.1 6.1.1 中断系统的作用中断系统的作用

( 1 )并行处理( 2 )故障处理( 3 )实时处理

返回本节

Page 5: 第 6 章 中断系统

6.1.2 6.1.2 中断源中断源

引起中断的事件,即发出中断申请的来源,称为中断源。如机器故障、程序出错、外设请求、实时请求、电源掉电等。 CPU 终止执行现行程序,转入对中断请求的处理,称为 CPU 对中断的响应。中断源的种类概括起来可以分为:内部中断和外部中断。

Page 6: 第 6 章 中断系统

内部中断源在处理器内部,根据其产生中断的原因又可分为异常中断和软中断。

外部中断源主要包括:( 1 )外部设备( 2 )实时时钟( 3 )故障源

返回本节

可屏蔽中断非屏蔽中断

外部中断

软中断异常中断

内部中断

中断

图 6-2 中断源的种类

Page 7: 第 6 章 中断系统

6.2 6.2 中断的处理过程中断的处理过程

6.2.1 中断请求6.2.2 中断源识别6.2.3 中断响应6.2.4 中断处理

返回本章首页

Page 8: 第 6 章 中断系统

中断处理过程一般来说包括中断请求、中断源识别、中断响应、中断处理和中断返回。下面以外部可屏蔽中断为例进行讨论。

Page 9: 第 6 章 中断系统

6.2.1 6.2.1 中断请求中断请求

1 .中断请求的定义:用某种信号通知 CPU ,某台外设(中断源)正在请求 CPU 为它服务,需要 CPU 中断现行程序的执行。 2 .中断请求的条件:第一、外设本身的准备工作已完成;第二、系统允许该外设发中断请求。3 .中断屏蔽: 每台中断源的接口电路都设置了一个中断屏蔽触发器,当此触发器在程序控制下,使触发器输出端置“ 1” 时,允许中断,外设的中断请求能通过与(与非)门被送到 CPU 。若触发器输出端置“ 0” 时,则中断被屏蔽掉,外设的中断请求就送不出去了。

返回本节

Page 10: 第 6 章 中断系统

6.2.2 6.2.2 中断源识别中断源识别

1. 中断源确定: 在只有一个中断源提出中断请求时,需要找出是哪一个中断源发出了请求。2. 优先级判别:( 1 )中断优先级:根据各中断源的工作性质、缓急程度、重要性以及处理的方便性,而安排响应的级别顺序称为中断优先权,或叫中断优先级。 当 CPU 正在处理中断时,能响应更高级别的中断请求,而屏蔽掉同级或较低级别的中断请求。这就是所谓的中断判优。

Page 11: 第 6 章 中断系统

中断源的识别常常有三种处理方法(如图 6-3 , 6-4所示)

( 1 )程序查询识别(软件查询法) ( 2 )硬件查询法 ( 3 )中断向量法(利用专门的中断优先权编码电路芯片支持的中断向量法。)

Page 12: 第 6 章 中断系统

1 )程序查询识别(软件查询法)采用软件查询中断方式时,中断优先权由查询顺序决定,先查询的中断源具有最高的优先权。

Page 13: 第 6 章 中断系统

在中断服务中读入请求状态

A申请

B申请

C申请

D申请

中断源 A服务程序

中断源 B服务程序

中断源 C服务程序

中断源 D服务程序

中断返回

图 6-4 软件查询流程图

Y

Y

Y

Y

N

N

N

N

Page 14: 第 6 章 中断系统

2 )硬件查询法 用串行顺序链电路来取代前面的软件程序。将所有的中断源构成

一个链(称为菊花链),利用外设连接在排队电路的物理位置来决定其中断优先权的,排在前面的优先权最高,排在最后面的优先权最低。

3 )中断向量法 这种方法是为每一个中断源指定一个编号,称为中断类型码(中

断向量码),每一个中断类型号都可以与一个中断服务程序相对应。系统通过不同中断源提供的不同的中断类型号来识别提出请求的中断源,并通过该类型码确定与中断源相对应的中断服务程序的入口地址(中断向量)。

电路中用一个中断优先级判别器(中断优先权编码电路)来判别哪个中断请求的优先级最高,然后在 CPU 响应中断时把此中断源所对应的中断类型码送给 CPU , CPU 根据中断向量码找到相应的中断服务程序的入口,执行相应的处理程序。

Page 15: 第 6 章 中断系统

图 6-5 同时中断请求的处理方法

( a)单级中断处理

( b)多级中断处理

( 2 )单级中断处理和多级中断处理:单级中断处理不允许其他设备再中断 CPU 的程序;多级中断处理允许优先级高的中断打断优先级低的中断服务程序。

返回本节

Page 16: 第 6 章 中断系统

6.2.3 6.2.3 中断响应中断响应

1. 1. 中断响应:中断响应:就是如何找到中断服务程序入口的过程。

22 .中断响应的条件.中断响应的条件1 )设置中断请求触发器,发出中断请求信号2 )设置中断屏蔽触发器,当此触发器为“ 1”时,允许外设的中断请求才能被送出至 CPU 。3 ) CPU 处于开中断状态。 4 ) CPU 在一条现行指令结束之后响应中断。

Page 17: 第 6 章 中断系统

33 .中断响应的过程.中断响应的过程1 )发出中断响应信号。2 )同时自动关中断,即置中断允许触发器 IF为“ 0” 。3 )保存断点和现场。4 )获得中断服务程序的入口地址。

返回本节

Page 18: 第 6 章 中断系统

6.2.4 6.2.4 中断处理中断处理

中断响应后,进入中断处理。中断处理是由硬件系统和中断服务程序共同完成的。中断处理就是执行中断服务程序。中断服务程序有三部分组成:

1 .起始部分—保护现场2 .主体部分—中断服务3 .结尾部分—恢复现场

Page 19: 第 6 章 中断系统

图6-6

中断处理过程流程图

返回本节

Page 20: 第 6 章 中断系统

6.3 IBM-PC6.3 IBM-PC 机中断系统结构机中断系统结构

6.3.1 8086/8088CPU的中断结构体系

6.3.2 8086/8088中断优先级别对中断源的管理

返回本章首页

Page 21: 第 6 章 中断系统

6.3.1 8086/8088CPU6.3.1 8086/8088CPU 的中断结构体的中断结构体系系

图 6-7 8086/8088 的中断源

Page 22: 第 6 章 中断系统

11 .内部中断.内部中断

内部中断又称软件中断。在 8086/8088 中,内部中断可分为五种中断五种中断: 1 )除法出错中断 -0 型中断 2 )单步或陷阱中断 -1 型中断 3 )断点中断 -3 型中断 4 )溢出中断 -4 型中断 5) 用户自定义的软件中断 -n 型中断

Page 23: 第 6 章 中断系统

内部中断的特点是:1 )是指令中指定的,或隐含的,或是预定的。2 ) CPU 不执行中断响应总线周期 INTA 。3 )除单步中断外,其他内部中断的优先级都比外部中断的要高,都不能被屏蔽(禁止)。4 )单步中断的优先级是所有中断里最低的,它可以用中断允许标志位 TF置 0 来屏蔽。

Page 24: 第 6 章 中断系统

22 .外部硬件中断.外部硬件中断

( 1 )非屏蔽中断 NMI :不受中断允许标志 IF的影响,它总是被 CPU 接受的,

( 2 )屏蔽中断 INTR:是否响应 INTR的请求,取决于中断允许标志位 IF的状态。

外部中断也称为硬件中断,它是由硬件设备或外设接口产生的。

Page 25: 第 6 章 中断系统

33 .中断向量表.中断向量表

中断类型号:对每种中断都指定一个中断类型号代码,从 0~ 255 ,每一个中断类型号都可以与一个中断服务程序相对应。中断服务程序存放在存储区域内,而中断服务程序的入口地址(中断向量)存在内存储器的中断向量表内。中断向量表:是中断类型号与它相应的中断服务程序入口地址之间的转换表。 中断向量表在内存的低端的中断向量表在内存的低端的 00 ~~ 03FFH03FFH 区域内的区域内的 1K1K 空间,空间,每个向量占用了每个向量占用了 44 个字节。前两个字节存放的中断处理子程序入个字节。前两个字节存放的中断处理子程序入口地址的偏移量地址,即口地址的偏移量地址,即 IPIP 的内容。后两个字节存放的是中断的内容。后两个字节存放的是中断处理子程序入口地址的段地址,即处理子程序入口地址的段地址,即 CSCS的内容。的内容。

Page 26: 第 6 章 中断系统

图6-8

中断向量表

中断向量在中断向量表中的首地址=中断类型码 ×4

Page 27: 第 6 章 中断系统

例如,键盘中断的向量号为 09H, 09H4=24H,则键盘中断对应的中断矢量位于 0000 : 0024H开始的 4个单元中。过程如下:

00024 25

00025 01

00026 A9

00027 0B

00001001

左移 2位 : 00100100

24H

中断服务程序的入口地址为 :0BA9H:0125H

Page 28: 第 6 章 中断系统

44 .中断向量表的初始化.中断向量表的初始化

方法一:采用 DOS系统功能调用。即 INT 21H的 25H号功能调用。 方法二:将中断服务程序的入口地址直接装入中断向量表中。

返回本节

Page 29: 第 6 章 中断系统

6.3.2 8086/80886.3.2 8086/8088 中断优先级别对中断源的管理中断优先级别对中断源的管理

8086/8088检测出中断请求信号后,继续执行完当前的指令,再对中断作出处理。各种中断主要区别在于如何获取相应的中断类型码。

1 、可屏蔽

2 、非屏蔽

3 、软中断

Page 30: 第 6 章 中断系统

6.3.2 8086/80886.3.2 8086/8088 中断优先级别对中断源的管理中断优先级别对中断源的管理

中断优先级别中断源 优先级

除法错、 INT n , INT O

最高

NMI ↑

INTR

单步(陷阱) 最低

Page 31: 第 6 章 中断系统

8086/ 8088 中断响应和中断处理流程框图如图 6-9 所示。

图 6-9 8086 / 8088 中断响应和中断处理流程

Page 32: 第 6 章 中断系统

1 . 8086/8088 中断处理过程 1 )将中断类型码乘 4 ,指向中断向量表中的中断处理子程序的

入口地址。 2 )保存 CPU 的状态,即把标志寄存器 PSW的内容压入堆栈。 3 )清除 IF和 TF的状态标志位,屏蔽新的 INTR和单步中断。 4 )保存原来执行的主程序的断点,即把 CS和 IP 的内容压入堆栈。

5 )转中断处理子程序入口地址,即把所指向的中断向量表中的低字( 16位)送入 IP,高字( 16位)送入 CS。

6 )执行中断处理子程序。 7)返回到被中断了的主程序的断点继续执行。

Page 33: 第 6 章 中断系统

返回本节

2. 8086/8088 的可屏蔽中断 INTR 外部设备请求中断时,是通过 INTR引脚向 8086/8088CPU请求屏蔽中断。但请求 INTR的外部设备不只一个,而 INTR引脚只有一根,所以由一片 8259A 来管理多种中断源。它的8 个中断请求输入端 IRQ0~IRQ7连接 8 个中断源。中断的优先权 IRQ0最高, IRQ7最低。表 6-1 8086/8088 机中断源和中断类型号

Page 34: 第 6 章 中断系统

6.4 Intel 8259A6.4 Intel 8259A 可编程中断控制器可编程中断控制器

6.4.1 8259A的内部结构和引脚6.4.2 8259A 的工作原理6.4.3 8259A 初始化命令字和操作方式命令字

返回本章首页

Page 35: 第 6 章 中断系统

6.4.1 8259A6.4.1 8259A 的内部结构和引脚的内部结构和引脚

1 .功能及工作特点

8259A 的主要功能:可接收外部的中断请求;能进行中断优先级管理;能向 CPU 提供外设的中断类型码。8259A 的特点:

1 )用 1片 8259A 能管理 8 级中断,用 2片 8259A 能管理 15 级中断,用 9片 8259A 来构成 64 级的主从式中断系统。

2 )每一级中断都可以屏蔽或允许。 3 ) 8259A 可提供相应的中断类型码,从而能迅速地转至中断服

务程序。 4 )通过编程使 8259A 工作在多种不同的方式。 5 )工作时只需要一组 +5V电源。

Page 36: 第 6 章 中断系统

2 .结构框图

图 6-10 8259A 内部结构框图

D7~D0

SP/ EN

CAS0 CAS1 CAS2

数据总线缓冲器

读/写

控制逻辑

级连缓冲比较器

读/写

控制逻辑 读/写

控制逻辑 读/写 控制 逻辑

RD WR A0 CS

控制逻辑

中断 服务 寄存器

I SR

优先权 判别 电路

中断 请求 寄存器

I RR

中断屏蔽寄存器 I MR

I NTA I NT

内部总线

I R0 I R1 I R2 I R3 I R4 I R5 I R6 I R7

Page 37: 第 6 章 中断系统

(1) 中断请求寄存器 IRR 用于接收外部的中断请求 , 与引腿 IR7 ~ IR0 相连。当某些

引腿有中断请求时, IRR 的对应位置 1 。

(2) 中断屏蔽寄存器 IMR 用于对 IRR某些位进行屏蔽。当某些中断被屏蔽时, IMR中的对应位置 1。

(3) 中断优先权判别电路 用来判断 IRR 中置 1 的各位优先级,只有新进入的中断请

求优先级高于正在处理的中断时 , 才能使 ISR 寄存器的对应位置 1 ,并使 8259A 的 INT 有效有效。

(4) 中断服务寄存器 ISR 用于存放正在处理的中断级,当些中断级正在被处理时 ISR

的对应位置 1 。

Page 38: 第 6 章 中断系统

(5) 控制逻辑 用于控制 8259A 向 CPU 发中断请求及处理 CPU 的中断响应

信号。 INT 与 CPU 的 INTR 信号相连。(6) 数据总线缓冲器 是 8259A 与 CPU 数据总线的接口。控制字、状态信息及中断

类型码均通过该部件传送。    (7) 读 / 写控制逻辑 接受 CPU 来的控制信号,控制 8259A 进行相应的读 / 写操

作。 (8) 级连缓冲器 / 比较器

用于级连工作,此时 1 片 8259A 为主片,其余 1 ~ 8 片 8259A 为从片。主片和从片的 CAS0 ~ CAS2 端相连,主片为输出,从片为输入。

Page 39: 第 6 章 中断系统

3

.8259A

的引脚

VCC

A0

INTA

IR7

IR6

IR5

IR4

IR3

IR2

IR1

IR0

INT

SP/EN

CAS2

CS

WR

RD

D7

D6

D5

D4

D3

D2

D1

D0

CAS0

CAS1

GND

1 8259A 28

2 27

3 26

4 25

5 24

6 23

7 22

8 21

9 20

10 19

11 18

12 17

13 16

14 15

图6-11 8259A

的引脚

Page 40: 第 6 章 中断系统

8259A 的引脚只有一个 A0 ,这样 8259A 的端口只有两个,偶地址端口( A0=0 )和奇地址端口( A0=1 )。见表 6-2 所示。

表 6-2 8259A 读写操作及地址

返回本节

4. 8259A4. 8259A 寄存器及寄存器及 I/OI/O 端口的识别端口的识别

Page 41: 第 6 章 中断系统

6.4.2 8259A6.4.2 8259A 的工作原理的工作原理

1.8259A 的工作过程 由于 8259A 是可编程的中断控制芯片,故在进入正常工作前,首先应对其进行初始化,也就是由 CPU 执行一段程序,向 8259A写入若干控制字,使其处于指定的工作方式。当初始化完成后,8259A 就处于就绪状态,随时可接受外设送来的中断请求信号。当外设发出中断请求信号后, 8259A对外部中断请求的处理过程如下图:

Page 42: 第 6 章 中断系统

2.8259A2.8259A 的工作方式的工作方式

( 1 )中断触发方式

1 )边沿触发方式

2 )电平触发方式

Page 43: 第 6 章 中断系统

(( 22 )中断优先方式)中断优先方式

1 )固定优先级方式 ——为默认的方式

在此方式下,只要不重新设置其他优先级方式,所有中断请求的中断优先级就是固定不变的, 8259A 加电后就处于这种方式。在该方式,顺序依次为 IRo 、IR1 、 IR2……IR7 , IRo 最高, IR7 最低。

Page 44: 第 6 章 中断系统

2 )优先级自动循环方式——由OCW2 设置

中断请求信号 IRn 的优先级随着在中断处理的结束而改变。任何一级中断 (IRn) 处理结束时 , 其优先级降为最低 ,而使 IRn+1 的优先级变为最高 , 其他的级别以循环方式类推。

初始优先级规定为 :IR0 、 IR1 、 IR2 …… IR7

例:当 IR4中断结束后 ,优先级顺序变为: IR5、 IR6、IR7、 IR0、 IR1、 IR2、 IR3、 IR4

Page 45: 第 6 章 中断系统

3 )优先级特殊循环方式——由OCW2 设置

初始的最低优先级由编程确定 , 其他同优先级自动循环方式。

例:如果确定 IR5 优先级最低 ,则 IR6 就最高。

Page 46: 第 6 章 中断系统

(( 33 )中断嵌套方式)中断嵌套方式

1 )一般完全嵌套方式 它的核心是在执行中断服务程序的过程中,只允许响

应比该中断源优先级高的中断请求,而与它同级或优先级更低的中断源请求将被屏蔽。

2 )特殊完全嵌套方式 特殊完全嵌套方式和一般完全嵌套方式基本相同,只

有一点不同,就是在特殊完全嵌套方式下,当处理某一级中断时,如果有同级的中断请求,那么也会给予响应。从而实现一种对同级中断请求的特殊嵌套。而在一般完全嵌套方式中,只有当更高级的中断请求来到时,才会进行嵌套,当同级中断请求来到时,则不会给予响应。

Page 47: 第 6 章 中断系统

(( 44 )中断源屏蔽方式)中断源屏蔽方式

按对中断源的屏蔽方式分为以下两种方式:

11 .普通屏蔽方式.普通屏蔽方式 通过操作命令字 OCW1 使屏蔽寄存器 IMR 中的某一位或几位

置 1 ,来屏蔽对应位的中请求。在工作过程中 , 可以通过设置 OCW1改变屏蔽情况。

22 .特殊屏蔽方式.特殊屏蔽方式 在中断处理过程中 , 在屏蔽本级 ( 用 OCW1) 的同时将 ISR

的对应位清” 0”(开放低级中断 ) 。此方式的设置和撤消由OCW3 实现。适用于在一个中断程序中需要动态地改变系统的优先级结构。开放比本身的优先级别低级的中断请求。

Page 48: 第 6 章 中断系统

(( 55 )结束中断处理的方式 )结束中断处理的方式

所谓的中断结束是指 8259A 结束中断的处理,而不是 CPU 结束执行中断服务程序。

中断结束处理分为自动结束方式和非自动结束方式。非自动结束方式又分为:一般的中断结束方式和特殊的中断结束方式。

1) 中断自动结束方式 (自动EOI 方式 )

在响应某中断的第二个中断响应负脉冲 INTA 信号结束时 ,自动将 ISR中的对应位清 0 。当中断结束时不用再送中断结束命令。 ICW4 的 AEOI 位设置。

适用于不会有中断嵌套的情况。因为此时任何一级中断服务程序 , 能被任何级别的中断请求所中断 , 可能会造成重复嵌套。

Page 49: 第 6 章 中断系统

2)正常中断结束方式(普通 EOI 方式 )

在全嵌套方式下, 8259每得到一次 EOI命令,将 ISR 中已经置位的各位中优先级最高的位复位。中断结束时 ,CPU 向 8259A 发送一个EOI命令 ( 使 OCW2 中的 EOI=1,SL和 R=0),8259A自动将 ISR 中的最高级的置 1 位清 0 。

适用于完全嵌套方式。3) 特殊的中断结束方式 ( 特殊EOI 方式 ) 优先级不固定时,无法知道 ISR 中的哪位优先级最高,所以需要指明结束哪个中断,既把相应的位清 0 。中断结束时 ,CPU 向 8259A 发送一个特殊EOI命令 ( 使 OCW2 中的 EOI=1,SL=1,R=0, 并给出要清 0 的 IS 位的代码 ),8259A将 ISR 中对应位清 0 。

适用于任何情况。 说明 :在 8259A 级联方式下 ,一般用非自动结束方式。中断结束时 ,CPU

要发两次中断结束命令 :一次发给主片;另一次发给从片。

Page 50: 第 6 章 中断系统

三种结束方式小结:普通 EOI 方式:不需要在指令中说明已结束的哪一种中断的优先

级别,指令形式简单。特殊EOI 方式:由于说明了结束的中断优先级别。因此,当无法确定当前正在处理的是哪级中断时,用它最理想

自动EOI 方式:不需要在中断服务程序中安排EOI指令的。

Page 51: 第 6 章 中断系统

(( 66 )中断级联方式)中断级联方式

1 .缓冲方式: 8259A 通过总线驱动器和数据总线相连,这就是缓冲方式。2 .非缓冲方式:当系统中只有单片 8259A 时,一般将它直接与数据总线相连。

返回本节

Page 52: 第 6 章 中断系统

6.4.3 8259A6.4.3 8259A 初始化命令字和操作方式命令字初始化命令字和操作方式命令字

1 .初始化命令字 ICW( 1 ) ICW1( 2 ) ICW2( 3 ) ICW3( 4 ) ICW4( 5 )初始化命令字的编程顺序

Page 53: 第 6 章 中断系统

( 1 ) ICW1 的格式及功能

其中;×表示为任意( 8086 系统不用)。 D4位 =1 : ICW1 的标志位 LTIM :中断请求信号的形式, 1 :电平触发; 0 :边沿触发。 SNGL: 8259A 的使用方式, 1 :单片使用; 0 :级联使用。 IC4 :是否设置 IC4 , 1 :设置 IC4 ( 8086 系统必须设置 IC4 ); 0 :不用设置 IC4 。

× × × 1 LTIM

× SNGL

IC4

D7 D6 D5 D4 D3 D2 D1 D0

0

A0

格式 :

Page 54: 第 6 章 中断系统

图 6-13 ICW1命令字

A0 D7 D6 D5 D4 D3 D2 D1 D0

0

1要 I CW4 0不要 I CW4 1单片方式 0级连方式 1间距为 4 0间距为 8

偶地址端口 80/ 85中断地址 特征位 1电平触发 0边沿触发

A7 A6 A5 1 LTIM ADI SNGL IC4

Page 55: 第 6 章 中断系统

1 T7 T6 T5 T4 T3

A0 D7 D6 D5 D4 D3 D2 D1 D0

IRi 对应中断类型号的高 5位

D7 D6 D5 D4 D3=中断类型码的高五位。 D2 D1D0位,为任意。 高 5位是由用户编程写入 ICW2 的 D7-D3位,低3位对应中断源 IR0-IR7的编码,响应中断时由 8259A芯片硬件电路自动产生。

( 2) 初始化命令字 ICW2 是中断类型码,写人奇地址 (A0=1)。格式为:

Page 56: 第 6 章 中断系统

0 0 0

T7 T6 T5 T4 T3 T2 T1 T0

由 ICW2规定

0 0 1

0 1 0

1 1 1

IR0

IR1

IR2

IR7

例如:若 ICW2 为 40H,则中断类型码的高五位为 01000 ,8259A 的 8 个中断请求 IR0~ IR7 对应的中断类型码为 40H~ 47H。

Page 57: 第 6 章 中断系统

3) 初始化命令字 ICW3

ICW3 用于级联方式设置主片 /从片。只用于主从级联系统。写人奇地址 (A0=1)。

若 ICW1 中 SNGL= 1 :不写入 ICW3

0 : 写入 ICW3

1 IR7 IR6 IR5 IR4 IR3IR2 IR1 IR0

A0 D7 D6 D5 D4 D3 D2 D1 D0

主片的格式 :

若 8259A 的 IRn引脚上接有从片时,对应的 IRn位为 1 ;若 8259A 的 IRn引脚上未接有从片时,对应的 IRn位为 0 。

Page 58: 第 6 章 中断系统

1 0 0 0 0 0 ID2 ID1 ID0

A0 D7 D6 D5 D4 D3 D2 D1 D0

从片的标志码

从片的格式 :

ID2 ID1ID0= 从片的 INT所接主片中断请求引脚 IRn 的序号码。

在 8259A 级联系统,主片和从片的 CAS2~ CAS0对应相连 ,在 CPU 响应来自某从片中断响应的第一个 INTA负脉冲 ,主片还要通过 CAS2~ CAS0 向从片发一个级联地址码 , 从片将这个编码与本片的 ICW3的 ID2~ ID0相比较,如果相等则在第二个 INTA负脉冲将本片的中断类型码送数据总线。

Page 59: 第 6 章 中断系统

图 6-17 ICW4命令字

1-8088/ 8086CPU 0-8080/ 8085CPU 1-自动 EOI 方式 0-非自动 EOI 方式

1-特殊完全嵌套方式 0-一般完全嵌套方式

0 × 非缓冲方式 1 0 缓冲方式从片 1 1 缓冲方式主片

A0 D7 D6 D5 D4 D3 D2 D1 D0

1 0 0 0 SFNM BUF M/ S AEOI uPM

( 4 ) 初始化命令字 ICW4

Page 60: 第 6 章 中断系统

图6-18 8059A

初始化命令字的顺序

( 5)初始化命令字的编程顺序

Page 61: 第 6 章 中断系统

2 、 操作命令字 OCW

对 8259A 进行初始化编程后, 8259A 作好了接收中断请求输入的准备,在 8259A 工作期间可由操作命令字OCW1~OCW3 规定其各种工作方式。8259A共有 3 个操作命令字: OCW1 、 OCW2 和 OCW3 。 OCW1——写入奇地址端口( 8259A 的 A0 =1 ),

OCW2 和 OCW3——写入偶地址端口( 8259A 的 A0 =0 )。 操作命令字在初始化后可以随时写入和修改,对写入顺序无要求。

( 1) OCW1 的格式及功能操作控制字OCW1 ,又称中断屏蔽操作命令字 ,用于设置中断屏蔽寄存器 IMR的内容。格式 :

1

A0 D7 D0

M7 M0…………

…………

若某位 Mn=1 :屏蔽对应的 IRn 中断请求, 若某位 Mn=0 :允许对应的 IRn 中断请求。

Page 62: 第 6 章 中断系统

OCW2 用于设置优先级循环方式和中断结束方式。格式 :

0 R SL EOI 0 0 L2 L1 L0

A0 D7 D6 D5 D4 D3 D2 D1 D0

标志位R: 1——采用中断优先级循环方式; 0——中断优先级固定方式。SL: 1——L2L1L0三位编码有效; 0——L2L1L0三位编码无效。EOI :中断结束命令位,当 EOI=1 时,将中断服务寄存器 ISR中的相应位清 0 。当 EOI=0 时,非中断结束命令D4 D3=00 : OCW2 的标志位。 L2L1L0 :作用:一是当 OCW2给出特殊的中断结束命令时, L2L1L0

指出要清除 ISR中的那一位;二是当 OCW2给出特殊优先级循环命令时, L2L1L0 指出循环开始时哪个优先级最低。

(2) OCW2 的格式及功能

Page 63: 第 6 章 中断系统

OCW2 有两个作用:

一是用于对 8259A 发中断结束命令 EOI ,用来控制中断结束时,清 ISR中的置位;

二是改变优先权的排序结构。这些操作命令通常是以组合方式出现。

1 ) 8259A 工作于非自动中断结束方式时,可以利用 OCW2对 ISR 中的对应位复位正常方法:令 SL = 0, EOI =1

将OCW2写入 8259A 后,将刚刚被服务的 IRi对应位复位。 特殊方法:令 SL = 1, EOI = 1写入 OCW2 后,使 L2L1L0 指定的位复位。

L2 L1 L0

0 0 00 0 1

1 1 1

D0

D1

D7

ISR 中的 Di

IR0

IR1

IR7

对应的 IRi

Page 64: 第 6 章 中断系统

2 )定义 8259A 的优先权工作方法 R = 0 固定优先权方式 IR0 IR1 … IR7( 高 )

R = 1, SL = 0 优先权自动循环方式

例: IR7 IR6 IR5 IR4 IR3 IR2 IR1 IR0

初始优先权为: 7 6 5 4 3 2 1 0

若 ISR = 0 1 0 1 0 0 0 0

则当 IR4 服务完毕后,优先权为: 2 1 0 7 6 5 4 3

Page 65: 第 6 章 中断系统

R = 1, SL = 1 优先权特殊循环方式

此时, L2L1L0 规定循环开始时的最低优先权

例: 1 1 0 0 1 0 1

IR5 优先权最低

此时,优先权为: IR7 IR6 IR5 IR4 IR3 IR2 IR1 IR0

1 0 7 6 5 4 3 2

Page 66: 第 6 章 中断系统

(3) OCW3 的格式及功能OCW3 可用于:设置或清除特殊屏蔽方式 设置中断查询方式 设置对 8259A 内部寄存器 (IRR、 ISR)的读出命令

1 0 ESMM SMM 0 1 P RR RIS

A0 D7 D0

标志位D7 :不用,为任意。ESMM 、 SMM :特殊屏蔽方式选择, 11—设置特殊屏蔽方式; 10—取消特殊屏蔽方式。D4 D3=01 为 OCW3 的特征位。P :查询命令位, 1——发查询命令; 0——不查询。什么时候用查询方式?当 CPU 内部的中断允许触发器被复位 (IF=0)时 ,中断输入信号不起作用时。

Page 67: 第 6 章 中断系统

8259A 中 IRR、 ISR 只能读出,不能写入,都对应偶地址端口。此时,可先写入 OCW3 , OCW3 中的 RR、 RIS 规定从偶地址端口读出的是 IRR 或 ISR 的值。

RR 、 RIS :对内部寄存器读命。 10——读 IRR寄存器; 11——读 ISR寄存器

IRR或 ISR的读取方法 :CPU 先发读 8259A 内部寄存器命令 (OCW3的 RR、 RIS=10 或 11)再接着从偶地址口读 ,即可得到 IRR或 ISR的值。

中断屏蔽寄存器 IMR的值可以随时从奇地址端口读取 ,不用设置 OCW3 。

Page 68: 第 6 章 中断系统

MOV AL, OCW3

OUT INTA0, AL

IN AL, INTA0 ; 若 OCW3 中 RR RIS 则读出的是1 1 ISR

1 0 IRR

例 6.2 8259A 中 IRR、 ISR 只能读出,不能写入,都对应偶地址端口。此时,可先写入 OCW3 然后从偶地址端口读出的是 IRR 或 ISR 的值。

例 6.1 设 8259A 端口地址为 20H、 21H,当前中断状态可用下面指令查询:MOV AL , 0CH

OUT 20H , AL

IN AL , 20H

返回本节

Page 69: 第 6 章 中断系统

6.5 8259A6.5 8259A的初始化编程的初始化编程举例举例

例 6.3 在 BIOS中,要求预置 8259A 的工作方式如下:工作在 8086/8088 系统单片 8259A 、完全嵌套、边沿触发方式;中断类型码初始值为 08H( IRQ0 ,电子钟中断向量);中断服务结束时,用常规的中断结束命令,固定优先权级别。端口地址为 20H、 21H,试进行初始化编程。

MOV AL, 13H ; ICW1 单片 8259A 、边沿触发、有 ICW4OUT 20H, ALMOV AL, 08H ; ICW2 中断类型码初始值为 08HOUT 21H, ALMOV AL, 01H ; ICW4 8086 系统、非自动 EOI 、非缓冲、完全嵌套OUT 21H, ALMOV AL, 0FFH ; OCW1 屏蔽所有中断OUT 21H, AL

返回本章首页

Page 70: 第 6 章 中断系统

例 6.4 假定只允许时钟 (IRQ0 )和键盘 (IRQ1)发出中断请求,而禁止其他设备请求中断。要向 21H写入操作命令: OCW 1=0FCH

MOV AL, 0FCH ; 0FCH=11111100BOUT 21H, AL STI

在不清楚其他中断源的情况下,禁止和开放键盘中断请求 (IRQl)的方法:IN AL, 21H ;读中断屏蔽寄存器 IMROR AL, 02H ;禁止键盘中断请求 IRQlOUT 21H, AL┋IN AL, 21H ;读中断屏蔽寄存器 IMRAND AL, OFEH ; OFEH=11111110B开放键盘中断请求 (IRQ1)OUT 21H, AL

Page 71: 第 6 章 中断系统

例 6.5 若使 8086 系统中 8259A 的优先级顺序为 IR3 ,IR4 , IR5 , IR6 , IR7, IR0 , IR1 , IR2 ,试编写一段程序实现该优先顺序,设 8259A 的偶地址为 20H。

根据题意要求,为实现上述优先级顺序,应先确定 OCW2 ,然后将它写入 8259A 的偶地址端口:MOV AL, 0C2H ; OCW2OUT 20H, AL ;把OCW2写入 8259A 的偶地址端口。

R SL EOI 0 0 L2 L1 L0

1 1 0 0 0 0 1 0

OCW2 :

Page 72: 第 6 章 中断系统

例 6.6 通过 8259A 的 OCW3 命令字, CPU 可查询中断请求寄存器 IRR和中断服务寄存器 ISR。MOV AL, 0BH ;发 OCW3 ,表示要读 ISROUT 20H, ALIN AL, 20H ;读 ISR ┋MOV AL, 0AH ;发 OCW3,表示要读 IRROUT 20H, ALIN AL, 20H ;读 IRR

Page 73: 第 6 章 中断系统

例 6.7 试编一段程序,用以清除 8086 系统中 8259A 的 ISR第 6位( ISR6 ), 8259A 的偶地址为 20H。

为实现题意要求,应先确定 OCW2 的内容,然后将OCW2写入 8259A 的偶地址端口。MOV AL, 66H ; OCW2OUT 20H, AL ;把OCW2写入 8259A 的偶地址端口。

例 6.8 IBM PC/XT机中的 BIOS程序中,所有硬件中断服务程序在中断服务结束时,均向 8259A写操作命令字OCW2=20H。MOV AL, 20H ;发 OCW2 中断结束OUT 20H, AL

返回本节

Page 74: 第 6 章 中断系统

返回本章首页结束放映