现代微机原理及接口技术 清华大学出版社
2009年 7月 31日 第 1页第 7章 中断系统和中断控制器现代微机原理及接口技术 清华大学出版社教学目标教学重点教学过程现代微机原理及接口技术 清华大学出版社
2009年 7月 31日 第 2页教学目标
理解 8088/8086中断源类型、中断向量表、
中断优先级、中断嵌套和中断处理过程;
了解 8259A的基本功能,理解其内部结构和引脚特性,掌握其工作方式,掌握
8259A的级联,熟练掌握其初始化命令字编程和操作命令字编程。
现代微机原理及接口技术 清华大学出版社
2009年 7月 31日 第 3页教学重点
中断向量表
中断处理过程
8259A的级联
8259A的工作方式
8259A初始化命令字编程和操作命令字编程现代微机原理及接口技术 清华大学出版社
2009年 7月 31日 第 4页教学过程
7.1 8088/8086中断系统
7.2 中断控制器 8259A
7.3 8259A的应用举例现代微机原理及接口技术 清华大学出版社
2009年 7月 31日 第 5页
7.1 8088/8086中断系统
所谓“中断”是指 CPU在正常执行程序的过程中,
由于内部 /外部事件或由程序的预先安排,引起 CPU
暂时中断当前程序的运行而转去执行为内部 /外部事件或预先安排的事件服务的子程序,待中断服务子程序执行完毕后,CPU再返回到暂停处(断点)继续执行原来的程序,这一过程称为中断,中断具有随机性。
断 点
C P U 响 应 中 断中 断 返 回中 断 请 求现行程序中断服务程序中断过程示意图现代微机原理及接口技术 清华大学出版社
2009年 7月 31日 第 6页
7.1 8088/8086中断系统
中断优点
– 并行操作
– 实时处理
– 故障处理
– 分时操作现代微机原理及接口技术 清华大学出版社
2009年 7月 31日 第 7页
7.1 8088/8086中断系统
7.1.1 中断源类型
7.1.2 中断向量表
7.1.3 中断优先级和中断嵌套
7.1.4 中断处理过程
7.1.5 中断服务程序的设计现代微机原理及接口技术 清华大学出版社
2009年 7月 31日 第 8页
7.1.1 中断源类型单 步 中 断除 法 错 误 中 断指 令 中 断 I N T n
断 点 中 断 I N T 3
溢 出 中 断 I N T O
中断逻辑不 可 屏 蔽 中 断 请 求中 断 控 制系 统
8 2 5 9 A
N M I
I N T R
8 0 8 6 C P U
内 部 中 断 外 部 中 断可屏蔽中断请求现代微机原理及接口技术 清华大学出版社
2009年 7月 31日 第 9页
7.1.1 中断源类型
为了解决多个中断同时申请时响应的先后顺序问题,系统将所有的中断划分为 4级,
其中 0级优先级最高,依次降低,不同级别的中断同时申请时,CPU根据级别高低依次决定相应顺序。各级情况如下:
– 0级:除单步中断外的所有内部中断
– 1级:不可屏蔽中断
– 2级:可屏蔽中断
– 3级:单步中断现代微机原理及接口技术 清华大学出版社
2009年 7月 31日 第 10页
7.1.2 中断向量表
8086可以处理 256种中断向量,每种中断都指定一个中断类型号代码( 0~255),每一个中断类型号都可以与一个中断服务程序相对应。中断向量表是存放中断服务程序入口地址(即“中断向量”)的表格。它存放在存储器的最低地址区,
每 4个字节存放一个中断服务程序的入口地址,由于要存放 256个中断服务程序的人口地址,所以要占用 1024个字节,地址号为 00000H~0003FFH。
较高地址的两个字节存放中断程序入口的段基值
CS,较低地址的两个字节放入口地址的段内偏移量 IP,这 4个单元的最低地址称为向量地址。
现代微机原理及接口技术 清华大学出版社
2009年 7月 31日 第 11页
C S
2 5 5
I P
2 5 5

C S
3 2
I P
3 2
C S
3 1
I P
3 1

C S
5
I P
5
C S
4
I P
4
C S
3
I P
3
C S
2
I P
2
C S
1
I P
1
C S 值 — — 向 量 0 ( C S
0

I P 值 — — 向 量 0 ( I P
0

向 量 0 — — 除 法错 误 中 断向 量 1 — — 单 步中 断向 量 2 — — N M I
向 量 3 — — 断 点中 断向 量 4 — — 溢 出中 断向 量 5
向 量 3 1
向 量 3 2
向 量 2 5 5
专 用中 断 向 量
( 5 个 )
系 统 保 留中 断 向 量
( 2 7 个 )
用 户 可 用中 断 向 量
( 2 2 4 个 )

0 0 3 F F H
0 0 3 F C H
0 0 0 8 0 H
0 0 0 7 C H
0 0 0 1 4 H
0 0 0 1 2 H
0 0 0 0 C H
0 0 0 0 8 H
0 0 0 0 4 H
0 0 0 0 0 H
1 6 位
8086
中断向量表现代微机原理及接口技术 清华大学出版社
2009年 7月 31日 第 12页
7.1.2 中断向量表
CPU获得中断类型号 n之后,通过乘 4即可取得中断向量表中对应的入口地址,然后把向量表 n*4地址开始的两个低字节单元的内容装入 IP寄存器,即:
– IP ← ( n*4,n*4+1)
再把两个高字节单元内容装入代码寄存器 CS,即:
– CS ← ( n*4+2,n*4+3)
8086在响应中断以后,先将标志寄存器压入堆钱,然后将执行一个与段间间接调用 CALL指令相当的过程来启动一个中断过程,该过程中,CPU将 CS和 IP压入堆栈,以保存断点的地址,然后将中断向量表中相应的 4个字节内容放人 IP和 CS,使控制转向该中断服务子程序。如果 n个中断请求同时到达,则 CPU将按优先级顺序来调用中断过程。
现代微机原理及接口技术 清华大学出版社
2009年 7月 31日 第 13页
【 课堂示例(一) 】
【 例 7-1】 键盘中断的向量号为 09H,它对应的中断服务程序的入口逻辑地址为 0BA9H,0125H。
键盘中断对应的向量位于 0000,0024H开始的 4
个单元。这 4个单元的内容如下:
0 B
A 9
0 1
2 5
0 0 0 2 7 H
0 0 0 2 6 H
0 0 0 2 5 H
0 0 0 2 4 H
现代微机原理及接口技术 清华大学出版社
2009年 7月 31日 第 14页
7.1.3 中断优先级和中断嵌套
中断优先级
– 根据中断源要求的轻重缓急,排好中断处理的优先次序,即优先级( Priority),先响应优先级最高的中断请求。
– 解决中断的优先级的方法有以下几种:
软件查询确定中断优先级
硬件优先级排队电路确定优先级
– 链式优先级排队电路
– 中断优先级编码电路现代微机原理及接口技术 清华大学出版社
2009年 7月 31日 第 15页
7 0
端 口 地 址,2 0 H
电源故障磁盘磁带
C R T
显示纸带输入纸带穿孔键盘输入打印输出
I N T
用软件查询确定中断优先级的硬件电路图现代微机原理及接口技术 清华大学出版社
2009年 7月 31日 第 16页中 断 触 发 器
A 设 备中 断 触 发 器
B 设 备中 断 触 发 器
C 设 备中 断 触 发 器
N 设 备
E N
三 态缓 冲 器
E N
三 态缓 冲 器
E N
三 态缓 冲 器数据总线
I N T
中 断 响 应
( 来 自 C P U )
A
1
A
2
B
1
B
2
C
1
C
2
N
1
N
2
中 断 输 入 1
中 断 输 入 2
中 断 输 入 3
中 断 输 入 N
中 断 输 出 1
中 断 输 出 2
中 断 输 出 3
中 断 输 出 N
链式优先级排队电路现代微机原理及接口技术 清华大学出版社
2009年 7月 31日 第 17页去 C P U
I N T
1
2
A
2
A
1
A
0
A > B
比 较 器
B
2
B
1
B
0
8,3
优 先 级 编码 器优 先 级寄 存 器优 先 级 失 效 信 号
C P U 数 据 总 线三 态缓 冲 器
( + )
I N T A
数 据 总 线去 C P U
中 断 向 量中断输入中断优先级编码电路现代微机原理及接口技术 清华大学出版社
2009年 7月 31日 第 18页
7.1.3 中断优先级和中断嵌套
中断嵌套
– 当 CPU执行优先级较低的中断服务程序时,
允许响应比它优先级高的中断源请求中段,
而挂起正在处理的中断,这就是中断嵌套或称多重中断,此时,CPU将暂时中断正在进行着的级别较低的中断服务程序,优先为级别高的中断服务,待优先级高的中断服务结束后,再返回到刚才被中断的较低优先级的那一级,继续为它进行中断服务。
现代微机原理及接口技术 清华大学出版社
2009年 7月 31日 第 19页多个中断源、单一中断请求线的中断处理过程执 行 一 条 指 令关 中 断中 断?
保 护 现 场屏 蔽 本 级 和 低 级 中 断开 中 断中 断 服 务 程 序中 断 返 回开 中 断恢 复 现 场关 中 断
Y
取 下 一 条 指 令
N
现代微机原理及接口技术 清华大学出版社
2009年 7月 31日 第 20页
7.1.4 中断处理过程
8086在取得了中断类型码后的处理过程都是一样的,其处理过程为:
1,将中断类型码 *4,作为中断向量表的指针。
2,把 CPU的标志寄存器入栈,保护各个标志位,此操作类似于 PUSHF指令。
3,复制追踪标志 TF的状态,清除 IF和 TF标志,屏蔽新的 INTR中断和单步中断。
4,保存主程序的断点,即把主程序断点处的 IP和 CS值压入堆栈保护,先压入 CS值,再压入 IP值。
5,从中断向量表中取中断服务程序的入口地址,分别送至 CS和 IP中,先取 CS值,再取 IP值。
6,按新地址执行中断服务程序。
现代微机原理及接口技术 清华大学出版社
2009年 7月 31日 第 21页当 前 指 令执 行 结 束?
软 件 中 断?
N M I?
I N T R?
T F = 1?
执 行 下 一 条 指 令形 成 中 断 类 型 码进 入 中 断 响 应,
取 中 断 类 型 码形 成 中 断 类 型 码标 志 寄 存 器 入 栈令 T E M P = T F
清 I F 和 T F
C S,I P 入 栈又 有 N M I?
T E M P = 1?
调 用 中 断处 理 程 序
N
执 行 用 户中 断 过 程
N
I P,C S 出 栈标 志 寄 存 器 出 栈返 回 被 中 断 的 主程 序
I R E T
Y
Y
N
N
N
N
Y
Y
Y
Y
N
N
Y
Y
Y
N
I F = 1?
I F = 1?
8086
中断处理过程流程图现代微机原理及接口技术 清华大学出版社
2009年 7月 31日 第 22页
7.1.5 中断服务程序的设计
微机的中断服务程序结构形式有如下顺序。
1,保护现场:中断服务程序中要用到的寄存器的内容入栈保护。
2,允许嵌套:开中断( STI),允许更高级别的中断请求进入。
3,执行中断处理:处理完成本中断的服务要求。
4,为了处理结束事务和恢复现场而免打扰:关中断( CLI)。
5,处理中断系统本次中断结束事务:发 EOI命令(自动中断结束方式除外)。
6,恢复现场:将被保护的寄存器的内容恢复到被中断时的内容。
7,中断返回;在中断服务程序的最后安排一条返回指令 IRET。
现代微机原理及接口技术 清华大学出版社
2009年 7月 31日 第 23页
7.2 中断控制器 8259A
由于 8086 CPU可屏蔽中断请求引脚只有 1条,而外部硬件中断源有多个,为了使多个外部中断源能够共享这一条中断请求引脚,必须解决以下问题:
– ( 1)解决多个外部中断请求信号与 INTR引脚的连接问题;
– ( 2) CPU如何识别是哪一个中断源发出的中断请求问题;
– ( 3)由于一次只能有一个外设发送中断请求,当多个中断源同时申请中断时,如何确定请求发送顺序问题。
中断控制器 8259A就是为这些目的而设计的。
现代微机原理及接口技术 清华大学出版社
2009年 7月 31日 第 24页
7.2 中断控制器 8259A
7.2.1 8259A的基本功能
7.2.2 8259A的内部结构和引脚
7.2.3 8259A的工作方式
7.2.4 8259A的命令字和编程现代微机原理及接口技术 清华大学出版社
2009年 7月 31日 第 25页
7.2.1 8259A的基本功能
采用 NMOS制造工艺,只需要一组 +5V电源。
有 8个外部中断请求输入引脚,具有 8级中断优先级控制,并且在不增加任何其它电路情况下,
可以用 9片 8259A通过级联扩展至 64级优先级控制。
每一级中断都可以通过初始设置为允许或屏蔽状态。
在中断相应周期,8259A可提供相应的中断向量,从而能迅速地转至中断服务程序。
8259A的工作方式可以通过编程设置,使用非常灵活。
现代微机原理及接口技术 清华大学出版社
2009年 7月 31日 第 26页
7.2.2 8259A的内部结构和引脚
8259A的内部结构数 据 总 线缓 冲 器读 /写控 制 逻 辑级 联 缓 冲 器 /
比 较 器控 制 逻 辑中 断 服 务寄 存 器
( I S R )
优 先 级 判别 器
( P R )
中 断 请 求寄 存 器
( I R R )
中 断 屏 蔽 寄 存 器 ( I M R )
内 部 总 线
D
7
~ D
0
R D
W R
A
0
C S
S P / E N
C A S
0
C A S
1
C A S
2
I R
0
I R
1
I R
2
I R
3
I R
4
I R
5
I R
6
I R
7
I N T A I N T
现代微机原理及接口技术 清华大学出版社
2009年 7月 31日 第 27页
7.2.2 8259A的内部结构和引脚
1 2 8
2 2 7
3 2 6
4 2 5
5 2 4
6 2 3
7 8 2 5 9 A 2 2
8 2 1
9 2 0
1 0 1 9
1 1 1 8
1 2 1 7
1 3 1 6
1 4 1 5
C S
W R
R D
D
7
D
6
D
5
D
4
D
3
D
2
D
1
D
0
C A S
0
C A S
1
G N D
V
C C
( + 5 V )
A
0
I N T A
I R
7
I R
6
I R
5
I R
4
I R
3
I R
2
I R
1
I R
0
I N T
S P / E N
C A S
2
8259A的引脚现代微机原理及接口技术 清华大学出版社
2009年 7月 31日 第 28页
8259A与标准系统总线的连接
C S A
0
D
7
~ D
0
R D W R I N T I N T A
C A S
0
C A S
1
8 2 5 9 A
C A S
2
S P /E N I R
7
I R
6
I R
5
I R
4
I R
3
I R
2
I R
1
I R
0
地 址 总 线 ( 1 6 位 )
控 制 总 线数 据 总 线 ( 8 位 )
I /O R I N T I N T AI /O W
中 断 请 求现代微机原理及接口技术 清华大学出版社
2009年 7月 31日 第 29页
7.2.2 8259A的内部结构和引脚
8259A级联
– 在一个中断系统中,可以使用多片 8259A,使中断优先级从 8级扩展到最多的 64级,这得通过 8259A的级联来实现。 8259A的 CAS2~CAS0三个引脚信号的不同组合 000~111,刚好对应于 8个从片。在级联时,
只能有一片 8259A作为主片,其余的 8259A均作为从片。将主 8259A的三条级联线 CAS2~CAS0作为输出线,通过驱动器连接到每个从片的 CAS2~CAS0的输入端。如只有一个从片,也可以不加驱动器。每个从片的中断请求信号输出线 INTR连接到主片的中断请求输入端 IR7~IR0,主片的中断请求输出线 INTR连接到 CPU的中断请求输入端 INTR。
现代微机原理及接口技术 清华大学出版社
2009年 7月 31日 第 30页
3片 8259A的级联图
C S A
0
D
7
~ D
0
I N T A
C A S
0
8 2 5 9 A 从 片 1 C A S
1
C A S
2
S P /E N I R
7
~ I R
0
I N T
地 址 总 线 ( 1 6 位 )
控 制 总 线数 据 总 线 ( 8 位 )
C S A
0
D
7
~ D
0
I N T A
C A S
0
8 2 5 9 A 从 片 2 C A S
1
C A S
2
S P /E N I R
7
~ I R
0
I N T
C S A
0
D
7
~ D
0
I N T A I N T
C A S
0
C A S
1
8 2 5 9 A 主 片
C A S
2
S P /E N 7 6 5 4 3 2 1 0
V
C C
现代微机原理及接口技术 清华大学出版社
2009年 7月 31日 第 31页
7.2.3 8259A的工作方式
优先级的管理方式
– 全嵌套方式
– 特殊全嵌套方式
– 优先级自动循环方式
– 优先级特殊循环方式
中断源的屏蔽方式
– 普通屏蔽方式
– 特殊屏蔽方式
中断结束方式
– 自动中断结束方式( AEOI)
– 普通中断结束方式( EOI)
– 特殊中断结束方式( EOI)
8259A与系统总线的连接方式
– 缓冲方式
– 非缓冲方式
引入中断请求的方式
– 边沿触发方式
– 电平触发方式
– 中断查询方式现代微机原理及接口技术 清华大学出版社
2009年 7月 31日 第 32页
7.2.4 8259A的命令字和编程
8259A为可编程的中断控制器,它的工作状态和操作是由接收 CPU的命令而确定的。命令字有两类:
– 一类是初始化命令字 ICW( Initialization Command Word),
8259A在开始操作前,首先要对它写入初始化命令字,使其处于预定的初始状态,如中断源信号的触发方式、嵌套方式、缓冲方式、级联方式,每个中断源对应的中断类型号等功能,初始化命令字设定后,在整个系统工作过程中保持不变。初始化命令字有 4
个,ICW1~ICW4,通常在系统开机时,由初始化程序设置,写入到 8259A指定的端口中,且 4个命令字有固定的写入顺序。
– 另一类是操作命令字 OCW( Operation Command Word),用来控制 8259A执行不同的操作方式,如中断源的优先级设置,哪些中断源可被屏蔽,查询 8259A内部的一些状态寄存器等功能。
初始化命令字设置后,在 8259A工作期间的任何时到都可设置操作命令字,且允许重置操作命令字,动态地改变 8259A的操作方式。操作命令字有 3个,OCW1~OCW3,当改变对 8259A操作时,
写入相应的端口地址中,没有固定的使用顺序。
现代微机原理及接口技术 清华大学出版社
2009年 7月 31日 第 33页
7.2.4 8259A的命令字和编程
8259A有两个端口地址,对应 A0 =0的称为偶地址,
对应 A0 =1的称为奇地址。若 8259A与 8088 CPU
配合使用,可直接将 A0与 CPU的地址信号输出引脚 A0相连,8259A的两个端口地址是连续的。若
8259A与 8086 CPU配合使用,将 8259A的 D7~D0
与 CPU的 D7~D0相连接,但 A0应与 CPU的地址输出信号引脚 A1相连接,此时地址码 A0应取,0”,
8259A的两个端口地址都是偶地址 。
现代微机原理及接口技术 清华大学出版社
2009年 7月 31日 第 34页
8259A的读 /写操作现代微机原理及接口技术 清华大学出版社
2009年 7月 31日 第 35页
7.2.4 8259A的命令字和编程
8259A的初始化命令字
– ( 1) ICW1
ICW1必须写入 8259A的偶地址端口,即 A0=0。
0 A
7
A
6
A
5
1 L T I M A D I S N G L I C
4
A
0
D
7
D
6
D
5
D
4
D
3
D
2
D
1
D
0
1 需 要 I C W
4
0 不 需 要 I C W
4
1 单 片 使 用
0 级 联 使 用设 定 地 址 间 隔
1 间 隔 为 4
0 间 隔 为 8
1 电 平 触 发
0 边 沿 触 发中 断 向 量 地 址 的
A
7
~ A
5
( 只 用 于
M C S - 8 0 / 8 5 )
现代微机原理及接口技术 清华大学出版社
2009年 7月 31日 第 36页
7.2.4 8259A的命令字和编程
8259A的初始化命令字
– ( 1) ICW1
无论何时,当 CPU向 8259A送入一条 A0=0,D4=1的命令时,
该命令被译码为 ICW1,ICW1启动 8259A的初始化过程,相当于 RESET信号的作用,自动完成下列操作:
– 边沿敏感电路复位,中断请求的上升沿有效。
– 中断屏蔽寄存器 IMR清零,即对所有的中断呈现允许状态。
– 中断优先级自动按 IR0~IR7排列。
– 清除特殊屏蔽方式。
– 若 IC4=0,则在 ICW4中所选择的全部功能全置为 0。
现代微机原理及接口技术 清华大学出版社
2009年 7月 31日 第 37页
【 课堂示例(二) 】
【 例 7-2】 在 8086系统中,设置 8259A为单片使用,上升沿触发,则程序段为:
MOV AL,13H ;ICW1的内容,为 00010011B
OUT 20H,AL ;写入偶地址端口现代微机原理及接口技术 清华大学出版社
2009年 7月 31日 第 38页
7.2.4 8259A的命令字和编程
8259A的初始化命令字
– ( 2) ICW2
ICW2必须写入 8259A的奇地址端口,即 A0=1。该命令字用于设置 8259A在第二个中断响应周期时提供给 CPU的中断类型码。
1 A
1 5
/ T
7
A
1 4
/ T
6
A
1 3
/ T
5
A
1 2
/ T
4
A
1 1
/ T
3
A
1 0
A
9
A
8
A
0
D
7
D
6
D
5
D
4
D
3
D
2
D
1
D
0
中 断 向 量 地 址 的
A
1 5
~ A
8
( 只 用 于
M C S - 8 0 / 8 5 )
中 断 向 量 地 址 的
T
7
~ T
3
( M C S - 8 6 )
现代微机原理及接口技术 清华大学出版社
2009年 7月 31日 第 39页
【 课堂示例(三) 】
【 例 7-3】 PC机中要将 IR7~IR0上的中断请求类型码设置为 A0H~A7H。则程序段为:
MOV AL,0A0H;ICW2的内容,高 5位设置为 10100
OUT 21H,AL;写入奇地址端口现代微机原理及接口技术 清华大学出版社
2009年 7月 31日 第 40页
7.2.4 8259A的命令字和编程
8259A的初始化命令字
– ( 3) ICW3
ICW3必须写入 8259A的奇地址端口,即 A0=1。本命令字用于级联方式下的主 /从片设置,只有 ICW1的
SNGL=0,即系统中 8259A使用级联方式工作时,
才需要使用 ICW3。对于主片或从片,ICW3的格式和各位功能是不相同的,所以,主 /从片的命令字
ICW3要分别写入。
现代微机原理及接口技术 清华大学出版社
2009年 7月 31日 第 41页
7.2.4 8259A的命令字和编程
8259A的初始化命令字
– ( 3) ICW3
在级联方式下,从片的中断请求输出( INT引脚)作为主片的一个外设对待,接在主片的一个中断请求输入端 IRi上,那么主片 8259A如何知道哪一个中断请求输入端是一个从片 8259A而不是外设呢?通过设置主片的 ICW3可以完成此功能。对于主片 8259A,ICW3的 D7~D0与 8
个中断请求输入引脚 IR7~IR0一一对应,ICW3的某位为 1,则对应的中断请求输入引脚是从片 8259A;某位为 0,则对应的中断请求输入引脚是外设。
1 S
7
S
6
S
5
S
4
S
3
S
2
S
1
S
0
A
0
D
7
D
6
D
5
D
4
D
3
D
2
D
1
D
0
1 I R
i
有 一 个 从 装 置 输 入
0 I R
i
没 有 从 装 置 输 入主片 ICW3的功能现代微机原理及接口技术 清华大学出版社
2009年 7月 31日 第 42页
【 课堂示例(四) 】
【 例 7-4】 设主片的 IR0与 IR1上接有从片,
则主片的初始化程序段为:
MOV AL,03H;ICW3的内容,为 00000011B
OUT 21H,AL;写入奇地址端口现代微机原理及接口技术 清华大学出版社
2009年 7月 31日 第 43页
7.2.4 8259A的命令字和编程
8259A的初始化命令字
– ( 3) ICW3
对于从片,ICW3中只有低 3位 D2~D0作为这个从片的标志位,
可由 8种编码,表示从片的中断请求输出被连到主片的哪一个
IRi上。
从片 ICW3的功能
1 0 0 0 0 0 I D
2
I D
1
I D
0
A
0
D
7
D
6
D
5
D
4
D
3
D
2
D
1
D
0
0 1 2 3 4 5 6 7
0 1 0 1 0 1 0 1
0 0 1 1 0 0 1 1
0 0 0 0 1 1 1 1
从 片 标 志 位现代微机原理及接口技术 清华大学出版社
2009年 7月 31日 第 44页
【 课堂示例(五) 】
【 例 7-5】 设从 8259A的 INT引脚接在主
8259A的 IR0上,则从片初始化程序段为:
MOV AL,00H;ICW3内容,ID2ID1ID0=000
OUT 21H,AL
写入奇地址端口现代微机原理及接口技术 清华大学出版社
2009年 7月 31日 第 45页
7.2.4 8259A的命令字和编程
8259A的初始化命令字
– ( 4) ICW4
ICW4必须写入 8259A的奇地址端口,即 A0=1。只有当 ICW1的
IC4=1时,才要设置 ICW4
ICW4的功能
1 0 0 0 S F N M B U F M / S A E I O
μ P M
A
0
D
7
D
6
D
5
D
4
D
3
D
2
D
1
D
0
0 ×
1 0
1 1
非 缓 冲 方 式缓 冲 方 式 / 从缓 冲 方 式 / 主
1 8 0 8 6 / 8 0 8 8 模 式
0 M C S - 8 0 / 8 5 模 式
1 自 动 中 断 结 束 方 式
0 非 自 动 中 断 结 束 方 式
1 特 殊 全 嵌 套 方 式
0 一 般 全 嵌 套 方 式现代微机原理及接口技术 清华大学出版社
2009年 7月 31日 第 46页
8259A的初始化流程图
IC W
1
( A
0
= 0,D
4
= 1)
IC W
2
( A
0
= 1)
S N G L = 0?
( 级 联 方 式 )
IC W
3
( A
0
= 1)
指 出 从 片 连 接 情 况
IC W
1
的 D
1
= 0?
( 本 片 为 主 片 )
IC W
3
( A
0
= 1)
指 出 连 到 主 片 哪 个 引 脚
IC
4
= 1?
( 要 IC W
4

IC W
4
( A
0
= 1)
Y
Y N
Y
准 备 好 接 收 中 断
N
N
现代微机原理及接口技术 清华大学出版社
2009年 7月 31日 第 47页
【 课堂示例(六) 】
【 例 7-6】 某 8088/8086系统中有一片 8259A,中断请求信号为电平触发,中断类型码为 50H~57H,中断优先级采用一般全嵌套方式,中断结束方式为普通 EOI方式,与系统连接方式为非缓冲方式,8259A
的端口地址为 F000H和 F001H,试写出初始化程序。
解:初始化程序段为:
MOV DX,0F000H ;设置 8259A的偶地址
MOV AL,1BH ;设置 ICW1,为 00011011B
OUT DX,AL
MOV DX,0F001H ;设置 8259A的奇地址
MOV AL,50H ;设置 ICW2,中断类型号基值
OUT DX,AL
MOV AL,01H ;设置 ICW4,为 00000001B
OUT DX,AL
现代微机原理及接口技术 清华大学出版社
2009年 7月 31日 第 48页
7.2.4 8259A的命令字和编程
8259A的操作命令字
– ( 1) OCW1
OCW1必须写入 8259A的奇地址端口,即 A0=1。 OCW1是中断屏蔽命令字,其内容直接置入中断屏蔽寄存器 IMR中。
OCW1的功能
1 M
7
M
6
M
5
M
4
M
3
M
2
M
1
M
0
A
0
D
7
D
6
D
5
D
4
D
3
D
2
D
1
D
0
中 断 屏 蔽
1 置 屏 蔽
0 复 位 屏 蔽现代微机原理及接口技术 清华大学出版社
2009年 7月 31日 第 49页
【 课堂示例(七) 】
【 例 7-7】 要使中断源 IR4屏蔽,其它允许,
则程序段为:
MOV AL,10H;OCW1内容,为 00010000B
OUT 21H,AL;写入奇地址端口现代微机原理及接口技术 清华大学出版社
2009年 7月 31日 第 50页
7.2.4 8259A的命令字和编程
8259A的操作命令字
– ( 2) OCW2
OCW2必须写入 8259A的偶地址端口,即 A0=1。 OCW2是中断结束方式和优先级方式操作命令字,命令字的 D4D3=00作为
OCW2的标志位。
OCW2的功能
1 R S L E O I 0 0 L
2
L
1
L
0
A
0
D
7
D
6
D
5
D
4
D
3
D
2
D
1
D
0
0 1 2 3 4 5 6 7
0 1 0 1 0 1 0 1
0 0 1 1 0 0 1 1
0 0 0 0 1 1 1 1
有 效 的 中 断 请 求 级 别
0 0 1
0 1 1
1 0 1
1 0 0
0 0 0
1 1 1
1 1 0
0 1 0
普 通 E O I 中 断 结 束 命 令
* 特 殊 E O I 中 断 结 束 命 令普 通 E O I 时 循 环 命 令
A E O I 时 循 环 置 位 命 令
A E I O 时 循 环 复 位 命 令
* 特 殊 E O I 时 循 环 命 令
* 优 先 级 设 置 命 令无 意 义
* 表 示 需 要 用 到 L
2
~ L
1
现代微机原理及接口技术 清华大学出版社
2009年 7月 31日 第 51页
OCW2的组合控制功能小结
R SL EOI 功能
0 0 1 普通 EOI中断结束命令,用于 8259A采用普通 EOI方式时的中断服务程序中,
通知 8259A将 ISR中优先级最高的位置 0
0 1 1 特殊 EOI中断结束命令,用于 8259A采用特殊 EOI方式时的中断服务程序中,
命令字中的 L2~L0指出了要将 ISR中的哪一位置 0
1 0 1 普通 EOI时循环命令,用于 8259A采用普通 EOI方式时的中断服务程序中,通知 8259A将 ISR中优先级最高的位置 0,且将其优先级置为最低,其下一级为最高,其余依次循环
1 0 0 AEOI时循环置位命令,在 8259A工作于 AEOI方式时用于设置优先级循环,使刚服务完的中断优先级置为最低,其下一级为最高,其余依次循环
0 0 0 AEOI时循环复位命令,在 8259A工作于 AEOI方式时用于取消优先级循环方式,恢复固定优先级
1 1 1 特殊 EOI时循环命令,用于 8259A采用特殊 EOI方式时的中断服务程序中,命令字中的 L2~L0指出了要将 ISR中的哪一位置 0,且将其优先级置为最低,其下一级为最高,其余依次循环
1 1 0 优先级设置命令,设置 8259A工作于优先级循环方式,将 L2~L0指定位的优先级置为最低,其下一级为最高,其余依次循环
0 1 0 无意义现代微机原理及接口技术 清华大学出版社
2009年 7月 31日 第 52页
【 课堂示例(八) 】
【 例 7-8】 已知 8259A中 ISR的 D3位已置位,
试将其清 0。
– 分析:通过特殊的 EOI中断结束命令来实现,
OCW2的内容应为 01100011B,即 63H,程序段如下:
MOV AL,63H ;OCW1的内容
OUT 20H,AL ;写入偶地址端口现代微机原理及接口技术 清华大学出版社
2009年 7月 31日 第 53页
7.2.4 8259A的命令字和编程
8259A的操作命令字
– ( 3) OCW3
OCW3必须写入 8259A的偶地址端口,即 A0=1。
OCW3的功能
0
无 关
E S M M S M M 0 1 P R R R I S
A
0
D
7
D
6
D
5
D
4
D
3
D
2
D
1
D
0
读 寄 存 器 I S R 或 I R R 内 容
0 1 0 1
0 0 1 1
无作用 在下一个读脉冲读
I RR
在下一个读脉冲读
I SR
0 0 1 1
0 1 0 1
无作用 撤销特殊屏蔽方式置为特殊屏蔽方式特 殊 屏 蔽 允 许 位中 断 查 询 方 式
1 查 询 方 式
0 非 查 询 方 式现代微机原理及接口技术 清华大学出版社
2009年 7月 31日 第 54页
7.3 8259A的应用举例
8259A的 7个命令字中,写入偶地址的有 3
个,ICW1,OCW2,OCW3,写入奇地址的有 4个,ICW2,ICW3,ICW4,OCW1。
写入偶地址的 3个命令字均有标志位,
8259A可据此识别,写入奇地址的 4个命令字中,ICW2,ICW3,ICW4必须紧随 ICW1
写入,故不必设单独的识别标志。这样,
初始化结束后奇地址处只有 OCW1一个命令字写入,故它也不必再设置标志位。
现代微机原理及接口技术 清华大学出版社
2009年 7月 31日 第 55页
【 课堂示例(九) 】
【 例 7-9】 在某 8088/8086系统中接有 1片 8259A,其工作方式要求如下:工作在边沿触发方式;中断向量初始值是 08H,即 IR0~IR7对应的中断向量码为 08H~0FH;中断服务结束时,用普通中断结束命令,
固定优先级。试写出 BIOS对 8259A的初始化程序。
解,BIOS对 8259A的初始化程序段如下所示。
MOV AL,13H ;设置 ICW1,边沿触发,单片,有 ICW4
OUT 20H,AL
MOV AL,08H ;设置 ICW2,中断类型号初值为 08H
OUT 21H,AL
MOV AL,09H ;设置 ICW4,8086系统,非自动 EOI,非缓冲
OUT 21H,AL
MOV AL,0FFH ;设置 OCW1,屏蔽所有中断
OUT 21H,AL
现代微机原理及接口技术 清华大学出版社
2009年 7月 31日 第 56页
【 课堂示例(十) 】 ( 1/4)
【 例 7-10】 8259A的级联使用。某 8088/8086系统有两片 8259A,从片 8259A连接主片的 IR4,主片 IR2和 IR5有外设中断引入,从片 IR0和
IR3上也分别有外设中断引入。主片中断类型号分别为 62H和 65H,中断服务程序在同一段中,段地址为 2000H,两个中断服务的偏移地址为 2500H和 2600H。从片中断类型号分别为 40H和 43H,中断服务程序也在同一段中,段地址为 4000H,偏移地址为 2640H和 4620H。
对于主片 8259A,设定如下要求:边沿触发;中断类型号为
60H~67H;采用特殊安全嵌套方式;采用非自动 EOI、非缓冲方式,
=1;采用普通 EOI结束方式;屏蔽 IR2,IR4和 IR5以外的中断源。
对于从片 8259A,设定如下要求:边沿触发、中断类型号为
40H~47H,采用特殊完全嵌套方式;采用非自动 EOI、非缓冲方式,
=0;采用普通 EOI结束方式;屏蔽 IR0和 IR3以外的中断源。
试写出主 8259A和从 8259A的初始化程序。
现代微机原理及接口技术 清华大学出版社
2009年 7月 31日 第 57页
【 课堂示例(十) 】 ( 2/4)
解,( 1) 主片 8259A的初始化程序如下所示。

MOV AL,11H ;设置 ICW1,边沿触发,级联,有 ICW4
MOV DX,MPORT0
OUT DX,AL
MOV AL,60H ;设置 ICW2,中断类型号初值为 60H
MOV DX,MPORT1
OUT DX,AL
MOV AL,10H ;设置 ICW3,IR4上连接有从片
OUT DX,AL
MOV AL,11H ;设置 ICW4,特殊全嵌套方式,非缓冲,非自动 EOI
OUT DX,AL
MOV AL,0CBH ;设置 OCW1,屏蔽 IR7,IR6,IR3,IR1,IR0
OUT DX,AL
MOV AL,20H ;设置 OCW2,普通 EOI结束
MOV DX,MPORT0
OUT DX,AL

现代微机原理及接口技术 清华大学出版社
2009年 7月 31日 第 58页
【 课堂示例(十) 】 ( 3/4)
( 2)从片 8259A的初始化程序如下所示。

MOV AL,11H ;设置 ICW1,边沿触发,级联,有 ICW4
MOV DX,SPORT0
OUT DX,AL
MOV AL,40H ;设置 ICW2,中断类型号初值为 40H
MOV DX,SPORT1
OUT DX,AL
MOV AL,04H ;设置 ICW3,从 8259A连接在主 8259A的 IR4上
OUT DX,AL
MOV AL,11H ;设置 ICW4,特殊全嵌套方式,非缓冲,非自动 EOI
OUT DX,AL
MOV AL,0F6H ;设置 OCW1,屏蔽 IR7,IR6,IR5,IR4,IR2,IR1
OUT DX,AL
MOV AL,20H ;设置 OCW2,普通 EOI结束
MOV DX,SPORT0
OUT DX,AL

现代微机原理及接口技术 清华大学出版社
2009年 7月 31日 第 59页
【 课堂示例(十) 】 ( 4/4)
( 3)将中断服务程序地址置入中断地址入口表中。
SEGMENT AT 0
ORG 40H*4
SINTR0 DW 2640H ;从片 IR0中断服务地址
DW 4000H
ORG 43H*4
SINTR3 DW 4620H ;从片 IR3中断服务地址
DW 4000H
ORG 62H*4
MINTR2 DW 2500H ;主片 IR2中断服务地址
DW 2000H
MINTR5 ORG 65H*4 ;主片 IR5中断服务地址
DW 2600H
DW 2000H
现代微机原理及接口技术 清华大学出版社
2009年 7月 31日 第 60页
【 课堂示例(十一) 】 ( 1/2)
【 例 7-11】 系统正在处理由 8259A的 IR3引入的中断,而临时有一个低优先级别的中断要紧急处理,一般情况下是不允许的,
但 8259A利用设置 OCW3可以做到这一点,
对 8259A设置特殊屏蔽方式 ( SMM位 ) 使运行的中断暂时停止,一直维持到 SMM复位 。 试编写程序 。
现代微机原理及接口技术 清华大学出版社
2009年 7月 31日 第 61页
【 课堂示例(十一) 】 ( 2/2)
解:程序段如下

CLI ;关中断
MOV AL,08H ;设置 OCW1,屏蔽 IR3
MOV DX,PORT1
OUT DX,AL
MOV AL,68H ;设置 OCW3,特殊屏蔽方式
MOV DX,PORT0
OUT DX,AL
STI ;开中断
..,;低优先级中断处理
...
CLI ;关中断
MOV AL,48H ;设置 OCW3,复位特殊屏蔽
MOV DX,PORT0
OUT DX,AL
MOV AL,00H ;设置 OCW1,复位 IR3屏蔽
MOV DX,PORT1
OUT DX,AL
STI ;开中断
...
现代微机原理及接口技术 清华大学出版社
2009年 7月 31日 第 62页小结
1,8086的中断可分为外部中断(又称硬件中断)和内部中断(又称软件中断)。
2,8086采用中断向量表来管理 256种中断。
3,不同的中断类型具有不同的中断类型码,可以采用软件查询、硬件优先级排队电路等方法来确定中断优先级。
4,8086微处理器的中断处理过程可分为中断请求、中断响应、中断处理和中断返回。
5,8259A能够直接管理 8级中断,实现中断优先级判别,提供中断向量(即中断类型号)和屏蔽中断等功能。如果采用级联方式,不需附加任何外部电路就能管理 64级中断输入,具有多种工作方式,
6,8259A的初始化编程和操作命令字的编程。