8259 中断控制器1 . 8 级优先权控制,通
过级连可扩展至 64 级优先权控制。
2 .每一级中断都可允许或屏蔽。
3 .提供中断向量。4 .可编程选择多种工作
方式 单片
IR0
IR7
INT
INTA
•8259A
INTR
INTA
CPU
.
.
.
中断请求
•CPU •8259A.....
IR0
IR7
级联
主
8259A IR0
从...
IR7
8259A IR0
从...
IR7
INTA
INTR
7 . 3 可编程中断控制器 Intel 8259A
8259 中断控制器的内部结构7 . 3 可编程中断控制器 Intel 8259A
IRR:中断请求寄存器。
SP/EN
CAS1
CAS0
CAS2
CS
WRRD
IR7
IR6
IR5
IR4
IR3
IR2
IR1
IR0
中 断
请 求
寄存器
(IRR)
优先权
比较器
(PR)
中 断
服 务
寄存器
(ISR)
中断屏蔽寄存器(IMR)
控 制 逻 辑内部总线
缓冲器
内部总线
缓冲器
级联缓冲器 /比较器
级
IRTA INT
D0~D7
A0
内部总线
ISR:中断服务寄存器。
IMR : 中断屏蔽寄存器。
PR:
优先权判别器。
8259 中断中断优先权管理方式及中断结束方式7 . 3 可编程中断控制器 Intel 8259A
设置优先级的方式 :完全嵌套方式 :中断优先权为固定优权, IR0 ~ IR7 依次下降。中断嵌套时只能高级中断
低级的中断,同级和低级不能产生中断。适用于单片结构。
CPU 8259A.....
IR0
IR7
主
8259A IR0
从
.
.
.IR7
8259A IR0
从
.
.
.IR7
INTA
INTR
特殊完全嵌套方式 :
在级联方式下必须运用特殊完全嵌套方式。同一片的 IR0 ~ IR7 与完全嵌套方式相同。对于从片,中断被响应后,并不屏蔽这个从片的中断,从片中优先权高的中断申请仍可响应。
主片工作在特殊完全嵌套方式,而从片工作在完全嵌套方式。
8259 中断中断优先权管理方式及中断结束方式7 . 3 可编程中断控制器 Intel 8259A
特殊优先权旋转 :
根据用户的要求将最低优先级赋给指定的中断源。可在主程序或中断服务程序中利用置位优先权命令把最低优先级赋给某一中断源,其它中断的优先权按级别以循环方式类推。
IR5IR6
IR7
IR0
IR1
IR2
IR3
IR4
例如,
中断优先级依次为 IR0 到 IR7 ,当中断 IR4 被响应,则 IR4 的中断优先权变为最低,比它低一级 IR5 的优先权变为最高。
相应的优先权排队为
IR5 、 IR6 、 IR7 、 IR0 、 IR1 、 IR2 、 IR3 、 IR4 、 I
R3
中断优先权的旋转正常优先权旋转:
IRi 的中断优先权相等。某个中断响应,它的优先权变为最低,比它低一级的中断源得到最高优先权。其它中断的优先权按级别以循环方式类推。
IR0
IR7
INT
INTA
•8259A
.
.
.
中断请求
8259 中断中断优先权管理方式及中断结束方式7 . 3 可编程中断控制器 Intel 8259A
屏蔽方式 :
查询排序方式 :
用软件查询响应中断,此时 8259 不处于中断状态, INT 可不连接 INTR ,而是程序查询 IRR 决定的是否响应中断及中断的优先级。
特殊屏蔽方式 :
当处理中断的过程中,希望对本级进行屏蔽,而允许优先级比它高或低的中断申请中断。特殊屏蔽方式只能用特殊 EOI 结束。
普通屏蔽方式 :
IMR 中的某一位或某几位置“ 1” ,即可能将相应级的中断请求屏蔽掉。程序运行的过程中,可以将中断优先级比正在响应的中断高的中断屏蔽掉。
8259 中断中断优先权管理方式及中断结束方式7 . 3 可编程中断控制器 Intel 8259A
中断结束方式
特殊 EOI 方式 :
中断服务程序结束,发出 EOI 的同时将当前结束的中断级别也传送给 8259 。 8259 将 ISR 中指定级别的相应位清“ 0” 。显然这种方式适合于任何情况。
普通 EOI 方式 :
中断服务程序结束,发出中断结束( EOI )命令。在级连的情下则必须送两个 EOI ,一个送给从片,另一个送给主片, 8259 自动将 ISR 中对应中断位清“ 0”
自动 EOI 方式 : 在第二个中断响应周期的的后沿,自动使中断源在 ISR 中的相应位复
位,只适用于无中断嵌套的情况。否则将可能出现自身的重复中断。T4T3T2T1
CLK
ALE
D7~D0
INTA
T4T3T2T1
中断类型码
7 . 3 可编程中断控制器 Intel 8259A
缓冲方式: 输出一个低电平允许信号,启动总线缓冲器与总线相连接。在
缓冲方式下必须初始化 8259 为主、从结构。 ENSP /
ENSP /
ENSP /
非缓冲方式:
单片、多片非级连下工作在非缓冲方式下, 作为输入端,必须接高电平。
多片级连时 主片为高电平,从片为低电平。
连接系统总线的方式:
多片 8259 与系统相连时, 8259 通过数据总线缓冲器与数据总线相连,进行数据缓冲放大。( ICW4 进行初始化)
7 . 3 可编程中断控制器 Intel 8259A
8259 芯片的级联使用: 在一个系统中, 8259 可以级联,有一个主 8259 ,若干个从 8259 ,
最多可以有 8 个从 8259 ,把中断源扩展到 64 个。
CPU 8259A
主IR0
IR7
8259A从
IR0
IR7
中断源
INTA
INTRINT
INTACAS2 CAS1 于 CAS0 CAS2 CAS1 于 CAS0
……
……
ENSP /
ENSP /
VCC
GND
2 ) CAS2 、 CAS1 、 CAS0 :主 8259 为输出线,从 8259 为输入线。
3) INT:从 8259 的 INT线连接到主 8259 的中断请求输入端 IRI ,主 8259 连接到 CPU的中断请求输入端 INTR 。
4 )主 8259 也可直接从 IRI 接入中断源。
电路特征:
1 ) SP/EN 主 8259 接 VCC ,从 8259 接 GND 用以区分主从关系。
7 . 3 可编程中断控制器 Intel 8259A
1) 从 8259 判断 IRi 的优先权,经 INT向主 8259 发出中断请求。
2 )主 8259 判断从 8259 的优先权后再向 CPU发出中断请求。
3 ) CPU响应中断,第一个响应周期,主 8259 通过三条级连线输出被响应中断的从 8259 的编码。
4 )从 8259 接收编码,在第二个中断响应周期输出它的中断向量类型码,进入中断响应过程。
CPU 8259A
主IR0
IR7
8259A从
IR0
IR7
中断源
INTA
INTRINT
INTACAS2 CAS1 于 CAS0 CAS2 CAS1 于 CAS0
……
……ENSP /
ENSP /
VCC
GND
级连下的中断请求:
7 . 3 可编程中断控制器 Intel 8259A
8259 的初始化命令及编程嵌套方式
完全嵌套方式 : IR0 ~ IR7 依次下降。特殊完全嵌套方式 :在级联方式主片运用特殊完全嵌套方式
优先权旋转正常优先权旋转:中断响应,优先权为最低,比它低一级的得到最高优
先权。特殊优先权旋转 :将最低优先级赋给指定的中断源。
屏蔽方式普通屏蔽方式 : IMR 中的置“ 1” 的位,相应级的中断请求屏蔽掉。特殊屏蔽方式 :本级进行屏蔽,而允许优先级比它高或低的中断进入
系统,不管其优先权如何,在任何情况下都可以申请中断。
结束方式自动 EOI 方式: 第二个中断响应周期的的后沿,自动复位 ISR 相应
位。普通 EOI 方式: 中断服务程序结束,发出中断结束( EOI )命令。特殊 EOI 方式: 中断服务程序结束,发出 EOI 的同时将近当前结束
的中断 级别也传送给 8259 。
7 . 3 可编程中断控制器 Intel 8259A
分为两步骤: 1 )初始化编程:
写入 2 ~ 4 个初始化命令字 ICW1~ICW4 。 2 )工作方式编程:
写入三个工作命令字 OCW1 ~ OCW4 。以规定 8259的工作方式。可以在初始化以后的任何时间写入。
8259 的初始化命令及编程
7 . 3 可编程中断控制器 Intel 8259A
1 ) ICW1 、 ICW2 是必须的。
2 ) ICW3 在级联时才有。
3 ) ICW4 是专用于 8086 系统的。
4 )地址线 A0 、特定标志位、及 I
CW 的输入顺序相配合,完成多寄存器的寻址。
初始化编程:
ICW2A0=1
ICW1A0=0
级联方式?
ICW3
N
Y
A0=1
ICW4
准备好接受中断
需 ICW4?
Y
N
A0=1
8259 初始化命令字 ICW 有四个,在不同的状态下写入不同。
7 . 3 可编程中断控制器 Intel 8259A
ICW1 芯片控制字初始化编程:
IRX 输入触发方式0:上升沿1: 高电平
D7 D6 D5 D4 D3 D2 D1 D0
无定义
无定义
LTIM
× 1× ×SNGL
ICW4
×
ICW1标志
ICW4 选择0: 不需要
1:需要
单片级联选择 0 : 多片级
1: 单片
ICW1
ICW2
级联方式?
ICW3
ICW4
准备好接受中断
N
Y
需 ICW4?
Y
N
A0=1
A0=0
A0=1
A0=1
7 . 3 可编程中断控制器 Intel 8259A
ICW2 中断类型字
初始化编程:
D7 D6 D5 D4 D3 D2 D1 D0
由程序决定高 5 位
T6
IR7 : 1 1 1 IR6 : 1 1 0 IR5 : 1 0 1IR4 : 1 0 0IR3 : 0 1 1IR2 : 0 1 0IR1 : 0 0 1IR0 : 0 0 0
T7 × × ×T4T5 T3
ICW1
ICW2
级联方式?
ICW3
ICW4
准备好接受中断
N
Y
需 ICW4?
Y
N
A0=1
A0=0
A0=1
A0=1
例 ,高 5 位为 00011则其类型号为 00011XXX
IR0=18H 00011000
IR1=19H 00011001
……
1R7=1FH 00011111
7 . 3 可编程中断控制器 Intel 8259A
ICW3 级联控制字
初始化编程:
D7 D6 D5 D4 D3 D2 D1 D0
S6
Sx=1表示 IRX 接有从 8259 Sx=0表示 IRX 无从 8259
S7 S4S5 S3 S1S2 S0
主 8259ICW3 :
D7 D6 D5 D4 D3 D2 D1 D0
0
IDi 为从片的标识,与主 8259的对应 IRI 的编号相同。
0 00 0 ID2
从 8259ICW3 :
ID1 ID0
IR7 : 1 1 1 IR6 : 1 1 0 IR5 : 1 0 1IR4 : 1 0 0IR3 : 0 1 1IR2 : 0 1 0IR1 : 0 0 1IR0 : 0 0 0
ICW1
ICW2
级联方式?
ICW3
ICW4
准备好接受中断
N
Y
需 ICW4?
Y
N
A0=1
A0=0
A0=1
A0=1
7 . 3 可编程中断控制器 Intel 8259A
ICW4 方式控制字
初始化编程:
设定结束方式 0 : 非自动 EOI
1: 自动 EOI
CPU 类型0:8085/80801:8086/8088
D7 D6 D5 D4 D3 D2 D1 D0
BUF0 00AEOI
μPM
M/SSFNM
级联方式优先权管理0: 正常完全嵌套方式
1: 特殊完全嵌套方式
主从选择0: 作为从片1: 作为主片
缓冲方式选择0: 非缓冲方式SP/EN 输入
主 8259 接高电平从 8259 接低电平
1: 缓冲方式SP/EN 输出
ICW1
ICW2
级联方式?
ICW3
ICW4
准备好接受中断
N
Y
需 ICW4?
Y
N
A0=1
A0=0
A0=1
A0=1
7 . 3 可编程中断控制器 Intel 8259A
例如, 8088 系统中 8259 单级使用,其端口地址为 80H,和 81H,可用下面的初始化程序段输入命令字。
初始化编程:
D7 D6 D5 D4 D3 D2 D1 D0
BUF0 00AEOI
μPM
M/SSFNM
;ICW4
MOV AL, 01H ; ICW4 8086配置,非自动 EOI ,
OUT [81H], AL ;非缓冲,完全嵌套方式
D7 D6 D5 D4 D3 D2 D1 D0
T6T7 × × ×T4T5 T3
; ICW2
MOV AL, 18H ; ICW2 中断类型码 0001 1XXX( 18H) IR0
OUT [81H], AL
D7 D6 D5 D4 D3 D2 D1 D0
LTIM
× 1× ×SNGL
ICW4
×
ICW1
MOV AL, 13H ; ICW1 设 ICW4 ,单级,边沿触发
OUT [80H], AL ;
7 . 3 可编程中断控制器 Intel 8259A
三个工作命令字 OCW1 ~ OCW3
OCW1 中断屏蔽字
工作命令编程:
D7 D6 D5 D4 D3 D2 D1 D0
M 6
M x=1表示 IRX 被屏蔽 M x=0表示 IRX 不被屏蔽
M 7 M 4M 5 M 3 M 1M 2 M 0A0=1
7 . 3 可编程中断控制器 Intel 8259A
OCW 2中断结束字, D4 、 D3=00 为标志位
工作命令编程:
D7 D6 D5 D4 D3 D2 D1 D0
SLR L2EOI 0 L1 L0
OCW 2标志
0
7 : 1 1 1 6 : 1 1 0 5 : 1 0 14 : 1 0 03 : 0 1 12 : 0 1 01 : 0 0 10 : 0 0 0
SL=1中断级别选择
0 0 1
SLREOI
命 令 功 能
完全嵌套中断结束普通 EOI
0 1 1 同上 , 清除 ISR 中指定位特殊 EOI
1 0 1 普通 EOI 循环
1 0 0 自动循环置位
0 0 0
优先权自动循环
自动循环复位
1 1 1 特殊循环指定最低级中断源
特殊 EOI 循环
1 1 0 置位优先权
0 1 0 无操作
优先权自动循环结束
优先权自动循环复位
A0=0
7 . 3 可编程中断控制器 Intel 8259A
OCW3 指定设置特殊屏蔽方式、读内部寄存器命令; D4 、 D3=00 为标志位
D7 D6 D5 D4 D3 D2 D1 D0
查询选择0: 作为从片1: 作为主片
SMM
X RIS
读 ISR 位0:禁止1: 允许
RRESMM
特殊屏蔽方式选择ESMM SMM 1 0 :特殊屏蔽方式复位 1 1 :特殊屏蔽方式置位
P RR RIS0 1 0 :下次读 IRR0 1 1 :下次读 ISR 0 0 X :无操作
1 P0
读 IRR 位0:禁止1: 允许
工作命令编程:
A0=0
7 . 3 可编程中断控制器 Intel 8259A
某系统中设置两片 8259A实现中断控制,它们之间采用级联方式连接,一片从 8259 的 INT端与主 8259 的 IR3 端相连,当前主 8259 的 IR0 和 IR5 端上分别引入两个中断请求,从 8259 的 IR2 和 IR3 端上也分别引入两个中断请求。主 8259 :IR3 :接一片从 8259IR0 , IR5各接一个中断源,中断类型码分别为 30H, 35H。中断服务程序同段。地址分别为 1000H: 1050H和 1000H: 2060H。
例,
CPU 8259A
主 IR3
IR0
8259A
从
IR2
IR3
中断源 1
INTA
INTRINT
INTACAS2 CAS1 于 CAS0 CAS2 CAS1 于 CAS0
INT
INTA
IR5
中断源 2
中断源 3
中断源 4
从 8259 :IR2 、 IR3各接一个中断源,中断类型码分为 32H和 33H,中断服务程序的地址分别为 2000H: 5440H和 2000H: 3620H
7 . 3 可编程中断控制器 Intel 8259A
中断服务程序入口地址进入中断矢量表。中断矢量地址:30H : 30H×4=00C0H35H: 35H×4=00D4H 32H: 32H×4=00C8H33H : 33H×4=00CCH
PUSH DS ;保存当前数据段段基址XOR AX, AXMOV DS , AX ;段地基址指向中断向量表MOV AX, 1050HMOV [0C0H], AX ; 30H中断服务程序入口地址 IPMOV AX, 1000HMOV [0C2H], AX ; 30H中断服务程序入口段地址CSMOV AX, 2060HMOV [0D4H], AX ; 35H中断服务程序入口地址 IPMOV AX, 1000HMOV [0D6H], AX ; 35H中断服务程序入口段地址CSMOV AX, 5440HMOV [00C8H], AX ; 32H中断服务程序入口地址 IPMOV AX, 2000HMOV [00CAH], AX ; 32H中断服务程序入口段地址CSMOV AX, 3620HMOV [00CCH], AX ; 33H中断服务程序入口地址 IPMOV AX, 2000HMOV [00CEH], AX ; 33H中断服务程序入口段地址CSPOP DS
程序分为三个部分:1)中断服务程
序入口送入中断矢量表中
2)主 8259 的初始化程序
3)从 8259 的初始化程序
7 . 3 可编程中断控制器 Intel 8259A
主 8259 的端口地址为 FFE8H、 FFE9H, A0=0 对应 FFE8H, A1=1对应 FFE9HICW1 : A0=0 , 11H=0001 0001B表示边沿触发,级联,需 ICW4 ( 8086 )ICW2 : A0=1, 34H=0011 0000B表示中断类型码 30H—37HICW3 : A0=1, 08H=0000 1000B表示 IR3上接从 8259ICW4 : A0=1, 11H=0001 0001B 表示特殊完全嵌套,非自动 EOI ,非缓冲方式。OCW1 : A0=1, 0D6H=1101 0110B,屏蔽 IR7 、 IR6 、 IR4 、 IR2 、 IR1OCW2 : A0=0 , 20H=0010 0000B ,普通 EOI 方式从 8259 的端口地址为 FFFAH、 FFFBH。ICW1 : A0=0 , 11H=0001 0001B表示边沿触发,级联,需 ICW4 ( 8086 )ICW2 : A0=1, 30H=0011 0000B表示中断类型码 30H—37HICW3 : A0=1, 03H=0000 0011B从 8259识别码 03H,与主片 IR3对应。ICW4 : A0=1, 11H=0001 0001B 表示特殊完全嵌套,非自动 EOI ,非缓冲方式。OCW1 : A0=1, 0F3H=1111 0011B,屏蔽 IR7 、 IR6 、 IR5 、 IR4 、 IR1 、 IR0
OCW2 : A0=0 , 20H=0010 0000B ,普通 EOI 方式
例,
7 . 3 可编程中断控制器 Intel 8259A
主 8259 的端口地址为 FFE8H、 FFE9H,A0=0 对应 FFE8H, A1=1对应 FFE9HICW1 : A0=0 , 11HICW2 : A0=1, 30HICW3 : A0=1, 08HICW4 : A0=1, 11HOCW1 : A0=1, 0D6HOCW2 : A0=0 , 20H
例,主片初始化 :
MOV AL,11H
MOV DX,0FFE8H
OUT DX,AL ;ICW1
MOV AL,30H
MOV DX,0FFE9H
OUT DX,AL ;ICW2
MOV AL,08H
OUT DX,AL ;ICW3
MOV AL,11H
OUT DX,AL ;ICW4
MOV AL,0D6H
OUT DX,AL ;OCW1
…………
…………
MOV AL,20H ;中断结束MOV DX,0FFE8H
OUT DX,AL ;OCW2
7 . 3 可编程中断控制器 Intel 8259A
从 8259 的端口地址为 FFFAH、 FFFBH。ICW1 : A0=0 , 11HICW2 : A0=1, 30HICW3 : A0=1, 03HICW4 : A0=1, 11HOCW1 : A0=1, 0F3HOCW2 : A0=0 , 20H
主片初始化 :
MOV AL,11H
MOV DX,0FFEAH
OUT DX,AL ;ICW1
MOV AL,30H
MOV DX,0FFEBH
OUT DX,AL ;ICW2
MOV AL,03H
OUT DX,AL ;ICW3
MOV AL,11H
OUT DX,AL ;ICW4
MOV AL,0F3H
OUT DX,AL ;OCW1
…………
…………
MOV AL,20H ;中断结束MOV DX,0FFEAH
OUT DX,AL ;OCW2
课后作业:1. P292 7.7