微机原理第七章
第7章 中断控制器
博学 审问 慎思 明辨 笃行
第7章 中断控制器
第7章 中断控制器
§ 7.1 § 7.2 § 7.3 § 7.4 § 7.5 § 7.6 8259A的引脚信号、编程结构和工作原理 8259A的工作方式 8259A的初始化命令字和初始化流程 8259A的操作命令字 8259A使用举例 多片8259A组成的主从式中断系统
8259A的引脚
总线 D0 ~ D7 IOR IOW
8259A
Vcc IR0 IR1 IR2 IR3 IR4 IR5 IR6 IR7 SP/EN CA0 CA1 CA2 + 5V 18.2Hz 计时 键盘 保留 串 口2 串 口1 并口 软盘 打印机
数据线
D0 ~ D7
A0
A5 ~ A9 INTA INTR
教学重点为:
8259A的编程结构; 8259A的初始化流程; 8259A的初始化命令字与操作命令字; 8259A的实例;
第7章 中断控制器
第7章 中断控制器
7.1 8259A的引脚信号、编程结构和工作原理 7.1.1 8259A的外部信号和含义
第7章 中断控制器
8259A的编程结构
第7章 中断控制器
RD WR A0
片 选 20~3FH 译 码
CS
INTA INT
用于多片 8259A 级连情况
GND
第7章 中断控制器
7.1.2 8259A的编程结构和工作原理
8259A的编程结构
总线
第7章 中断控制器
处理部分
数据线
D0 ~ D7 INTR A0 A5 ~ A9
A0
D0 ~ D7 INT
ISR 当前 中断 服务 寄存器
第7章 中断控制器
(3)优先级自动循环方式 优先级自动循环方式一般用于多个中断源优先级相同的情况下。在这种 方式中,优先级队列是循环变化的,某一中断源得到中断服务后,优先自动 降为最低。
例如:在优先级自动循环方式中,优先级初始队列由高到低为:IR0、 IR1、IR2、……、IR6、IR7,如果此时IR2端有中断请求,并予以响应,响 应结束后,IR2的优先级自动降为最低,IR3的优先级为最高,这时,系统的 优先级队列由高到低变为:IR3、IR4、IR5、IR6、IR7、IR0、IR1、IR2。
总线
D0 ~ D7 A0
A5 ~ A9 IOR
数据线
A0
片 选 CS 译 码 RD WR INTA INT
D0 ~ D7
ISR 当前 中断 服务 寄存器
0 1 0 1 0 0 0 0 0
PR
IRR 中断 申请 寄存器
优先级 裁决器
1 0 0 1 0 1 0 0
1 0 0 0 0 0 0 0 1
IR0 IR1 IR2 IR3 IR4 IR5 IR6 IR7
1. 优先级设置方式 (1)固定优先级(也称全嵌套方式) 在全嵌套优先级方式中,8259A的中断优先级从IR0到IR7,即IR0优先级 最高,IR7优先级最能低。这是最常用、最基本的工作方式。 (2)特殊全嵌套方式 与固定全嵌套方式基本相同,但在特殊全嵌套方式中,当正在处理某一 级中断时,如果有同级的中断请求发生,8259A也会响应,从而开放了同级 中断请求的特殊嵌套。 这种方式主要用于8259A级联系统中,在这种系统中,主片设置为特殊 全嵌套方式,从片设置为其它优先级方式,这样,某一从片的请求正在处理 时,来自同一从片中的优先级较高的中断请求也能得到响应。
第7章 中断控制器
(3)特殊的中断结束方式
这种方式是在程序中发出一条特殊的中断结束命令,具体指出要清除 ISR中的哪一位。往往用于非全嵌套方式。 具体操作是,在程序中向8259A 的偶地址端口写一个命令字OCW2, 并使其中的EOI=1,SL=1,R=0,此时L2,L1,L0这三位指出要清除ISR 中的哪一位。 需要指出的是,在级联系统中,一般不使用中断自动结束方式,而用 非自动结束方式。而且,不管是使用普通中断结束方式,还是使用特殊的 中断处理方式,在中断服务程序结束时,都必经发出两次中断结束命令, 一次是对主片,一次是对从片。
D0 ~ D7 A0 A5 ~ A9 IOR 片 选 CS 译 码 RD WR INTA INT 数据线 A0 D0 ~ D7
ISR 当前 中断 服务 寄存器
0 0 0 0 0 0 0 0
PR
IRR 中断 请求 寄存器
优先级 裁决器
1 0 0 1 0 1 0 0
0 1 0 0 0 0 0 0 0 1
(4) 优先级特殊循环方式 优先级特殊循环方式与优先级自动循环方式相比,唯一的区别在于:前 者是优先级初始队列是程序编程来决定的,如果程序规定,IR4 优先级最低, 那么IR5优先级则最高;而后者的优先级初始队列开始是IR0优先级最高,IR7 优先级最低。
第7章 中断控制器
2. 屏蔽中断源的方式 按照中断源的屏蔽方式,8259A有以下两种工作方式: (1) 普通屏蔽方式 在8259A内部有一个8位屏蔽寄存器(OCW1),对应IR0~IR7的8个 中断请求,可由程序设置将屏蔽寄存器中的任一位或几位置1,这样与之相对 应的中断请求就被屏蔽了。 当然,要清除屏蔽,只要将屏蔽寄存器(OCW1)中的对应位复位即可。 (2) 特殊屏蔽方式 特殊屏蔽方式是当设置了特殊屏蔽方式后,对屏蔽寄存器(IMR)中的 对应位置1 ,同时使当前中断服务寄存器中的对应位自动清0,这样,不只屏 蔽了当前正在处理的这级中断,还开放优先级较低的其它中断请求。因此, 特殊屏蔽方式,总是在中断服务程序中使用。
IR0 IR1 IR2 IR3 IR4 IR5 IR6 IR7
ICW1 芯片控制
ICW2 中断类型号 ICW3 主从片关系
OCW1 中断屏蔽寄存器 IMR
0 0
OCW2 优先级、发EOI
IOW
INTA INTR
ICW4 方式控制
OCW3 特殊屏蔽设置
第7章 中断控制器
总线
D0 ~ D7 A0
A5 ~ A9 IOR
第7章 中断控制器
3. 中断结束处理的方式
在中断服务程序结束时,必经发出中断结束命令,使ISR中对应位复位, 否则,系统便不能正常工作。使ISR对应位复位的动作称为中断结束处理。 8259A有以下三种中断结束方式:
(1)中断自动结束方式
这种中断结束方式是最简单的方式,用于系统中只有一片8259A的情况。 在这种方式中,系统一进入中断过程,在第二个中断响应信号INTA到来时, 8259A会自动将当前中断服务寄存器ISR中的相应位复位。 (2)普通(一般)中断结束方式 该方式多用于全嵌套方式下。当CPU 向8259A发出一条EOI命令时, 8259A会把当前中断服务寄存器中的最高非零位复位。 具体操作是,只要在程序中向8259A的偶地址端口写一个操作命令字 OCW2,并使其中的EOI=1,SL=0,R=O即可。
片 选 CS 译 码
RD
0 0 0 0 0 0 0 0
0 IRR 0 中断 0 请求 0 PR 寄存器 0 0 优先级 0 0 分析器 A0 1 0 0 1 0 1 0 0 1
OCW1 中断屏蔽寄存器 IMR
IR0 IR1 IR2 IR3 IR4 IR5 IR6 IR7
ICW1 芯片控制 A0 1 × I3 I4 0 ICW2 中断类型号
总线 D0 ~ D7 A0 A5 ~ A9 IOR IOW INTA INTR
数据线
A0
D0 ~ D7
ISR 当前 中断 服务 寄存器
片 选 CS 译 码 RD
WR INTA
0 1 0 1 0 0 0 0 0
PR
IRR 中断 申请 寄存器
优先级 裁决器
1 0 0 1 0 1 0 0
1 0 0 0 0 0 0 0 1
中断响应周期
通过 INTA 引脚发出两个负脉冲信号, 从数据总线上获取中断类型号,
进入中断响应的过程。
8259A在接收到第一个INTA中断响应信号后:
① 将 ISR 中相应位置1, 表示 CPU 响应此级中断,执行此中断源的中断子程。
② 把 IRR中对应的位清0,清除IRR中锁存的中断申请信号。
IR0 IR1 IR2 IR3 IR4 IR5 IR6 IR7
ICW1 芯片控制 ICW2 中断类型号
OCW1 中断屏蔽寄存器 IMR
ICW3 主从片关系
ICW4 方式控制
0 0
OCW2 优先级、发EOI OCW3 特殊屏蔽设置
INT
第7章 中断控制器
7.2 8259A的工作方式
8259A有多种工作方式,这些工作方式由程序初始化来设置, 使用起来相当灵活。
IOW INTA INTR
② 中断屏蔽寄存器 IMR 决定 IRR 中的中断申请 是否进入优先级裁决器 PR。 • IMR对应位为 0,允许中断申请进入优先级裁决器, • 为 1,不允许进入,中断申请被IMR屏蔽 。 IR0 ISR 0 IRR 1 数据线 IR1 当前 0 D0 中断 0 0 0 IR2 ~ 申请 0 中断 0 IR3 D7 寄存器 0 服务 0 PR A0 IR4 0 寄存器 0 IR5 优先级 0 0 IR6 片 1 裁决器 0 IR7 选 CS 译 1 0 0 1 0 1 0 0 ICW1 芯片控制 码 RD OCW1 中断屏蔽寄存器 IMR ICW2 中断类型号 WR 0 0 ICW3 主从片关系 OCW2 优先级、发EOI INTA ICW4 方式控制 OCW3 特殊屏蔽设置 INT
IOR IOW INTA
WR
ICW3 主从片连接关系
1 1
ICW4 方式控制
0 000 NhomakorabeaSP/EN
OCW2 优先级设置、发EOI 0 1
INTA