第七章 中断控制系统
Post on 04-Jan-2016
192 Views
Preview:
DESCRIPTION
TRANSCRIPT
第七章 中断控制系统第一节 概述
一、中断的一般概念 二、中断申请三、中断系统的功能( 8086/8088 系统) 第二节 最简单的中断情况一、 CPU 响应中断的条件 二、 CPU 对中断的响应
第三节 中断优先权一、用软件确定优先权 ( 查询法 ) 二、 硬件优先权排队电路
第四节 8086 的中断方式一、 8086/8088 的中断源 二、 8086/8088 的中断响应过程三、 8086/8088 中断向量表
第五节 中断控制器 8259A一、 功能 二、 结构
三、中断顺序 (8259 在 8086/8088 系统 )
四、 PC 机的中断控制系统
7 - 4 , 7―9 , 7- 10
医生医生
中断实例
抓药
病人
病人
病人
看病
得病 中断请求
排队 中断优先
医生看病 中断响应
抓药 中断服务程序
中断技术是微机中一项重要技术。它不仅在数据输入、输出中提高了 CPU 的效率,而且在多外设、实时控制、故障处理中也是一项必不可少的技术。
INTR = 1
i+1 条指令
中断服务程序
i 条指令
CPU 响应中断
外设中断源申请中断
中断处理的过程:
INTA =0
第七章 中断第一节 概述
一、中断的一般概念
② 实时处理。控制系统往往有许多数据需要采集或输出。实时控制中有的数据难以估计何时需要交换。中断可为实时控制提供支持。 ③ 故障处理。计算机系统的故障往往随机发生,如电源断电、运算溢出、存储器出错等。采用中断技术,系统故障一旦出现,就能及时处理。
1 、中断的应用特点
①CPU 与外设并行工作。解决 CPU 速度快、外设速度慢的矛盾。在外设需要时发出中断申请, CPU 才中断原有工作执行中断服务程序,与外设交换数据;中断服务结束, CPU 返回原程序继续执行。
① 内部中断:执行 INT n 指令时产生中断 ② 外部中断:外设 (I/O) 设备向 CPU 提出中断申请,使 INTR= 1 。
2 、中断源
二、中断申请 中断源的功能:在需要时,向 CPU 发出中断申请 INTR = 1 ,直至 CPU 响应中断 INTA = 0 后撤销中断申请。
Intel 8088/8086 的二种中断申请:可屏蔽中断申请和非屏蔽中断申请
1 、可屏蔽中断申请 INTR
用户可以使用编程手段 (STI 、 CLI 指令 ) ,使 CPU 处于“开中断”或“关中断”状态。 CPU 只有在”开中断” 状态下才能响应外设通过 INTR 可屏蔽中断线提出的中断申请。
2 、非屏蔽中断申请 NMI
用户无法使用编程手段控制。只要 NMI = 1 , CPU 在当前指令运行结束后,马上响应 NMI 非屏蔽中断申请。
T1 T2 T3 T4
CLK
T1 T2 T3 T4
ALE
ÏòÁ¿ ÀàÐÍ
INTA
AD7-AD0
中断响应周期时序
中断请求信号有效,且C
PU
开中,则
CP
U在执行完当前指令后,响应中断,在
响应中断时,C
PU
执行两个中断响应周期
。
在每一个中断响应周期,都给出中断响应信号INTA ,第一个响应周期,使 AD7~AD0 浮空;第二个响应周期,被响应的外设应将中断类型号送到数据线上,以便 CPU 寻找该设备的服务程序的入口地址,转入中断服务。
三、 CPU 中断响应时序
第二节 最简单的中断情况一、 CPU 响应中断的条件
1 、 ( 中断源接口电路设置的 ) 中断请求触发器提出中断申请 中断源提出的中断申请, CPU 不可能马上响应,必须执行完当前的指令,况且还有中断优先权排队等问题,故 CPU需保持中断申请的信号。 中断请求触发器的功能:使外设的 READY 、 BUSY 等状态信号保持到 CPU 响应外设的中断请求后再撤销。
输入设备
数据
Ready
数据端口
地址译码
DB
AB
M/ IORD
INTR
n
R
Q D
CPU
2 、 ( 中断源接口电路设置的 ) 中断屏蔽触发器允许中断申请
在有多个中断源的系统中,为了使 CPU 能灵活的控制外设的中断请求,对每个外设接口设置一个中断屏蔽触发器。只有当此触发器为”1“ 时,外设的中断请求才能被送至 CPU 。
输入设备
数据
Ready
数据端口
地址译码
DB
AB
M/ IO
RD
INTR
n
R
Q D
CPU
中断屏蔽触发器
Q 优先权排队信号
IF = 1 , CPU 允许中断, 即中断开放
IF = 0 , CPU 不允许中断,即中断关闭
使 IF = 1 的条件:执行 STI 指令
使 IF = 0 的条件:① 执行 CLI 指令; ② CPU RESET ;
③ CPU 响应中断
3 、 CPU 的中断是开放的
CPU 内部设置 ( 可屏蔽 ) 中断允许触发器,它的状态由 PSW的 IF 标志指示。
4 、 CPU 执行完当前指令
CPU 在执行当前指令最后一个时 钟周期时采样 INTR ,然后响应中断。
二、 CPU 对中断的响应
关中断断点保护
转中断服务
CPU自动执行中断
响应
保护现场
开中断
中断服务
恢复现场
返回主程序
CPU
执行中断服务程序
执行一条指令
指令结束
INTR = 1
取下一条指令执行主程序
CPU
NN
1 、 CPU 发 INTA同时,自动关中断
2 、 CPU自动将断点 CS , IP , PSW 入栈 3 、 CPU 将中断源提供的中断类型码形成中断服务入口地址,送 CS , IP执行 PUSH 指令
用于中断嵌套。若无中断嵌套,可放在恢复现场前
执行 POP 指令
原 PSW , IP , CS 出栈,返回主程序
INTR =1
IF = 1
第三节 中断优先权问题:多中断源,一条 INTR 申请线
方法:按优先权处理; CPU 先响应优先权级别高的中断源申请
电路结构:
1 、各中断源申请通过或门组合后与 INTR连接。
2 、各中断源情况通过缓冲器从 DB输入。
AB
GH
(D7) (D6)
(D1) (D0)
INTR
DB三态缓冲器
译码
RD
M/IO
或
..
各外设
中断触发器输出AB
一、用软件确定优先权 ( 查询法 )
IN AL , 20H
TEST AL , 80H
JNZ PWA
TEST AL , 40H
JNZ PWB
………
DONE :……
PWA :……
……
JMP DONE
PWB : ……
……
JMP DONE
查询法中断服务程序
查询法软件结构
所有外设共有一个中断服务程序。首先输入它们的中断申请情况,再依次查询每一个中断源申请 情况;若是,则转入 相应子程序服务。
查询法特点
查询次序就是优先权次序。
电路简单,但转入服务时间长。
保护现场
输入各中断源中断触发器状态
A 申请
B 申请A 外设服
务
B 外设服务
恢复现场
返回主程序
DONE
Y
N
N
Y
二、 硬件优先权排队电路
IR7 IR6
IR1 IR0
INTR
8:3优先权编码器
或
..各外设
中断触发器输出
优先权寄存器
CPU
DB
A2A1A0
B2 B1 B0
A>B
比较器
1
3
2
优先权失效
组成: 8:3 ,比较器,逻辑电路,优先权寄存器
工作原理
低
高
中断优先权级别
A2 A1 A0
若有多个中断申请,只输出优先权 最高的编码
0 0 0 IR0 中断申请0 0 1 IR1 中断申请………………1 1 1 IR7 中断申请
①CPU 在不处于中断服务时有中断申请② 申请中断源的级别高于 CPU 在执行中断服务的级别。
1 、中断申请 8:3 优先权编码器 将 8 个中断申请输入 进行 8:3 编码
2 、优先权寄存器
由 CPU 通过 DB 输入正在中断服务的优先权级别编码 B2 、 B1 、 B0 。若 CPU 不处于中断服务状态,则优先权 失效信号为 1 。3 、比较器
对 A2 、 A1 、 A0 与 B2 、 B1 、 B0 的编码比较。 A>B ,则输出为 1 ,表示申请级别高于正在服务的级别。
4 、逻辑电路 通过逻辑组合,在下列二种情况下, INTR = 1
8088/8086 有一个简单而灵活的中断系统,每个中断都有一个中断类型码以供 CPU进行识别, 8086/8088 可以处理 256 种不同的中断。这些中断又可分为外部中断和内部中断两大类。
非屏蔽中断请求
中断逻辑
INT n指令
INTO指令
除法出错
单步(TF=1)
断点中断
CPU
NMI8259A
IRQ0IRQ1IRQ2IRQ3IRQ4IRQ5IRQ6IRQ7
INTR
8086/8088 中断源内部中断的特点: 中断类型码包含在指令中,或者是预先规定的; 不执行 INTA总线周期; 除单步中断外,任何内部中断都无法禁止; 除单步中断外,任何内部中断的优先级都比任何外部中断的高。
一、 8086/8088 的中断源第四节 8088/8086 的中断方式
二、 8086/8088 的中断响应过程完成当前指令
内部中断
NMI
INTR
TF=1
执行下一条指令
IF=1响应中断读类型码 标志入栈
调服务程序
CS 、 IP 入栈
清除 IF 、 TF
令 TEMP=TF
又有 NMI
TEMP=1
执行服务程序
CS 、 IP 出栈
标志出栈
继续执行被中断的程序
Y
N
N
N
N
Y
Y
Y
Y
N
N
Y
YN
IF=1读类型码
N
形成中断类型码
8086/8088 在内存区的 00000H~ 003FFH(1KB)建立一个中断向量表。用于存放与 256 个中断类型码 (00H~0FFH)相应的中断服务程序入口地址。每个中断服务程序入口地址使用 4个字节,低 16bit 为段内偏移量送 IP ,高 16bit 为段码送 CS 。
三、 8086/8088 中断服务程序服务程序入口地址表
各中断服务程序入口地址的段地址和段内偏移量按中断类型号顺序存放在表中。 因此由中断类型号 n*4 可得到相应中断服务程序入口地址的地址,取 4n 和 4n+1单元中的内容(中断入口段内偏移量)装入指令指针 IP ,取 4n+2 和 4n+3单元中的内容(中断入口段地址)装入代码段寄存器 CS ,即可转入中断服务程序。
1. 中断向量表
类型 0
类型 1
类型 2
类型 3
类型 4
类型 5
类型 63
I PCS除数为零
单步 (TF =1)
非屏蔽中断
断点中断
溢出 (OF =1)
类型 28
000H
004H
008H
00CH
010H
014H
070H
0FCH
CPU使用(5)
DOS使用(59)
1/18.2S 定时
类型 64
类型 65
类型 66
类型 67
类型 255
100H
104H
108H
10CH
3FCH
用户使用(192)
中断服务程序入口地址表
中断服务程序入口地址表地址
= 4× 中断类型码
例:某中断的中断类型号为 68H ,其中断过程为:
( 1 ) 计算存放中断服务程序入口地址的地址 =68H*4=1A0H ;
( 2 ) 取中断入口地址的段内偏移量装入 IP , IP=2050H ,段码装入 CS , CS=A000H ;
( 3 ) 转向中断服务程序;
( 4 ) 中断返回
502000A0
001A0H
001A2H
001A4H
存放地址=68H*4=1A0H
2050
A000
STIPUSH DS
IRET
中断服务程序
A000 :2050
INT 68HMOV AX , 0
2. 中断入口地址的设置 IBM PC 对 256 个中断类型 已进行了地址分配,其中 40H 以后的中断类型号可供用户使用。供用户使用的中断类型号,可由用户定 义为软中断,由 INT n 指令引用;可通过 INTR 端或通过中断控制器 8259A引入可屏蔽的硬件中断。使用时用户要自己将中断服务程序入口地址置入相应的中断向量表内。方法 1 :通过指令来设置
MOV AX , 0 ;中断入口表 MOV ES , AX ;段地址送 ES MOV DI , n*4 ;偏移量送 DIMOV AX , OFFSET INTRADCLDSTOSW ;传送子程序偏移地址MOV AX , CSSTOSW ;传送子程序段地址STI
MOV AX , 0 ;中断入口表 MOV ES , AX ;段地址送 ES MOV BX , n*4 ;偏移量送 DIMOV AX , OFFSET INTRADMOV ES : [BX] , AXMOV AX , SEG INTRADMOV ES : [BX+2] , AXSTI
方法 2 :通过调用 DOS 功能来设置
设置中断入口:把由 AL 指定中断类型号的中断入口 DS : DX 中放置在中断入口中。预置: AL= 中断类型号
DS : DX= 中断服务程序入口地址
AH=25H
执行: INT 21H
取中断入口:把由 AL 指定中断类型号的中断入口, 从中断入口表中取到 ES : BX 中。预置: AL= 中断类型号
AH=35H
执行: INT 21H
返回: ES : BX= 中断服务程序入口地址
MOV AL , n ;取中断入口MOV AH , 35HINT 21HPUSH ES ;存原中断入口PUSH BXPUSH DSMOV AX , SEG INTRADMOV DS , AXMOV DX , OFFSET INTRADMOV AL , n ;中断类型号MOV AL , 25 ;设置中断入口INT 21HPOP DS
POP DX ;恢复原中断入口POP DSMOV AL , nMOV AL , 25INT 21HRET
1 、 8级优先权控制,通过级连可扩展到 64级优先级控制;2 、每一级可由程序单独屏蔽或允许;3 、在 CPU 响应周期,可提供相应的中断类型码。中断类型码由 8259 编程设定;4 、通过编程可设定多种工作方式。
一、 功能
二、 结构
第五节 中断控制器 8259A
1 、数据总线缓冲器
与 CPU 的 DB连接,传送控制字、状态字和中断类型码等。
2 、读写逻辑
通过 IORD 、 IOWR 、 CS 、 A0 控制接收 CPU 的命令、发出 8259 的状态。
中断控制器 8259A方框图
IR0
IR7
::
中断请求寄存
器
IRR
优先权电路
在服务寄存器
ISR
中断屏蔽寄存器 IMR
控 制 逻 辑
数据总线缓冲
器
读 / 写逻辑
级连缓冲 / 比较器
INTA INTR
DB
RDWRA0
CS
CAS0CAS1CAS2
SP / EN 内部总线
CS RD WR A0 D4 D3 读写操作
0 1 0 0 1 写 ICW1
0 1 0 1 写 ICW2 、 ICW3 、 ICW4 、 OCW1
0 1 0 0 1 0 写 OCW2
0 1 0 0 0 1 写 OCW3
0 0 1 0 读 IRR/ISR
0 0 1 1 读 IMR
8259 的读写功能
3 、级联缓冲 /比较器
( 1 )缓冲方式:在多片 8259A级联的系统中, 8259A 通过总线驱动器和数据总线相联。在缓冲方式下, SP / EN 与总线驱动器的允许端相连,控制总线驱动器的启动,当 EN=0 , 8259A 控制数据送到 CPU ,当 EN=1 ,控制数据从 CPU 送到 8259A 。
( 2 )非缓冲方式:此时各 8259A 直接与数据总线相连。 SP / EN 为输入端,当 SP=1 ,该片为主片,当 SP=0 ,该片为从片。主片与从片通过 CAS0~ CAS2级连。主片的 INTR 与 CPU 的INTR连接;从片的 INTR 作为主片的 IR0~ IR7 输入。
5 、在服务寄存器 IRS ( 8位)
存放正在服务的中断源级别,当某个中断被响应后, CPU 发出第一个 INTA 信号, ISR 中的相应位置“ 1” ,一直被保存到该中断处理结束。当多重中断时, ISR 的多位同时被置 1 。
4 、中断请求寄存器 IRR ( 8位)
存放中断请求信号,当 IR0——IR7 中的某个 IR 端有中断请求时, IRR相应的某位置 1 。当该中断被响应后, IRR相应的位被复位。优先权 IR0最高, IR7最低。
7 、优先权电路( PR )
对 IRR 保持的各中断请求 (已屏蔽的除外 )进行优先权判别,并在 CPU 的中断响应周期将其送 IRS 。在出现多重中断时,由 PR判定是否允许所出现的中断去打断正在处理的中断,让优先级更高的中断优先处理。
8 、控制逻辑
向 CPU 输出 INTR 中断请求,接受 CPU 的中断响应信号 INTA 。
6 、中断屏蔽寄存器 IMR ( 8位)
用于存放对中断请求的屏蔽信息。软件编程使得 IMR 的某位为“ 1” 时,相应 IRR 中的中断请求被屏蔽;若 IMR 的某位为“ 0” 时,允许相应 IRR 中的中断请求进入中断优先级判别器。 IMR 的各中断屏蔽位是独立的,屏蔽了优先级高的中断,不影响其它较低优先级的中断允许。
三、中断顺序 (8259 在 8086/8088 系统 )
1 、在 ISR 中存放正在服务的中断源级别。2 、当 IR0~ IR7 中一条或多条中断申请线为高电平时,使 IRR相应位置 1 。3 、若该中断源未被屏蔽,而且其优先级高于 ISR 中的中断级别,则 INTR 为 1 ,向 CPU 申请中断。4 、若 CPU 的 IF = 1 ,则在当前指令执行结束后响应该中断申请;向 8259 发出 INTA = 0 信号。5 、在第一中断响应周期, 8259收到 INTA = 0 后, IRR中最高级别的位使 ISR 的相应位置 1 , IRR 的相应位复位。6 、在第二中断响应周期, 8259收到 INTA = 0 后, CPU从DB 接收 8259 提供的 8bit 中断类型码。7 、 CPU 继续进行后续的中断响应过程。
四、 8259 的编程方法
系统复位后,由初始化程序对8259 置入初始化命令字 ICW 。初始化后可通过发出操作命令字 OWC来定义 8259A 的操作方式,实现对 8259A 的控制。初始化命令字只发一次,操作命令字可以重置,以动态改变 8259A 的操作与控制方式。
ICW1
ICW2
级联方式
ICW3
需要 ICW4
ICW4
N
SNGL=1Y ( SNGL=0)
Y ( IC4=1 )
N
( IC4=0)
1. 初始化命令字
初始化命令字有四个 ICW1 、 ICW2 、 ICW3 、 ICW4 ,首先输入 ICW1 ,然后输入 ICW2 、 ICW3 、 ICW4 ,由 ICW1 决定是否输入 ICW3 、 ICW4 。
初始化命令字 ICW1写入后, 8259 内部完成初始化过程:
( 1 )清除 ISR 和 IMR寄存器; ( 2 )指定中断优先级 R0 R7 ;
( 3 )从方式的地址置成 7 ; ( 4 )特殊屏蔽方式复位;
( 5 )自动 EIO循环方式复位;( 6 )边沿触发器复位。
ICW1 IC4SNGLADI0 * 1 LTIM* *
A0 D7 D6 D5 D4 D3 D2 D1 D0
0
1
不写 ICW4写ICW4
0
1
级联,写 ICW3单片,不写 ICW3
=0 (不用)
8088/8086 不用标志位
0=边沿触发方式
1= 电平触发方式
ICW2
D7 D6 D5 D4 D3 D2 D1 D0
A11/T31
A0
A10A15/T7
A14/T6
A13/T5
A12/T4
A9 A8
D7 D6 D5 D4 D3 D2 D1 D0
IR7 T7 T6 T5 T4 T3 1 1 1
IR6 T7 T6 T5 T4 T3 1 1 0
IR5 T7 T6 T5 T4 T3 1 0 1
IR4 T7 T6 T5 T4 T3 1 0 0
IR3 T7 T6 T5 T4 T3 0 1 1
IR2 T7 T6 T5 T4 T3 0 1 0
IR1 T7 T6 T5 T4 T3 0 0 1
IR0 T7 T6 T5 T4 T3 0 0 0
8259A 输送的中断向量 自动填入
ICW3 S2/ID21 S5 S4 S3S7 S6
A0 D7 D6 D5 D4 D3 D2 D1 D0
S1/ID1 S0/ID0
8259A 在级联工作方式( SNGL=0 )时,要写入 ICW3 ,它规定本 8259 为主设备,还是从设备。
( 1 )工作在主设备
8259A 作为主设备, SP/ EN 接高电平,或缓冲方式 ICW4 的M/S=1 时, S0---S7 表明从设备接在 IR0——IR7 的哪一根线上,接有从设备的 IR 端对应的 S位为 1 ,未接从设备的 IR 端对应的 S位为 0 。
( 2 )工作在从设备
8259A 作为从设备时, SP/ EN 接低电平,或缓冲方式 ICW4的 M/S=0 时, ID0---ID2 表明从设备接在主设备的哪一根 IR线上, ID0---ID2 用编码表示 IR0——IR7 的 8根线。
ICW4 PMAEOIM/S1 0 SFNM BUF0 0
A0 D7 D6 D5 D4 D3 D2 D1 D0
0
1
选用 8085
选用 8088
0
1
正常 EOI方式自动结束中断方式
0= 全嵌套方式
1= 特殊全嵌套方式
= 非缓冲方式,此时若用级联,
由 SP/ EN 确定主从设备。
= 缓冲方式,本机为从机
= 缓冲方式,本机为主机
0
1 0
1 1
全嵌套方式:高级中断可打断正在处理的中断,优先处理更高级的中断。
特殊全嵌套方式:对于级联方式,主 8259A把从同一从8259A来的不同级别的中断请求认为是同级的,而不予以响应。在 8259A级联时,若主片处于特殊全嵌套方式就允许对相同级别的中断请求开放。
2. 操作命令字8259A 有 3 个操作命令字,由 CPU写入 8259A ,写入顺序不限。
OCW1 M01
A0 D7 D6 D5 D4 D3 D2 D1 D0
M7 M6 M5 M4 M3 M2 M1
中断屏蔽字: 1= 屏蔽中断; 0 = 允许中断
L00
A0 D7 D6 D5 D4 D3 D2 D1 D0
R SL EOI 0 0 L2 L1OCW2
OCW2---- 控制 8259A 的中断结束和优先级循环方式的命令
(1) 中断结束命令
R SL EOI 操作0 0 1 正常 EOI 中断结束命令0 1 1 特殊 EOI 中断结束命令1 0 1 正常 EOI 时循环命令1 0 0 自动 EOI 时循环置位命令0 0 0 自动 EOI 时循环复位命令1 1 1 特殊 EOI 时循环命令1 1 0 优先级设定命令0 1 0 无操作
R 、 SL 、 EOI 编码表
普通 EOI 结束方式: 8259A收到 EOI 结束命令后,自动将 ISR 中级别最高的置“ 1”位清“ 0” 。
L2 L1 L0 IR
0 0 1 IR0
0 1 1 IR1
1 0 1 IR2
1 0 0 IR3
0 0 0 IR4
1 1 1 IR5
1 1 0 IR6
0 1 0 IR7
L2 、 L1 、 L0 编码表
特殊 EOI 结束方式:正常 EOI 是自动清除级别最高的 ISR位,而特殊 EOI 则清除有 L0—L2 指定的 ISR位。
自动 AEOI 结束方式:某中断被响应后, ISR 对应位被置 1 ,但 CPU 在中断响应的第二个脉冲将 ISR 的对应位清 0 。此时,尽管 CPU 对某个外设 正在进行中断服务,但在 8259A中无指示,低级别的中断可打断高级中断,产生重复嵌套,嵌套深度无法控制。
在级联方式下,一般用非自动结束方式,中断结束时,要发两次中断结束命令,一次是对主片,另一次是对从片发的位。
特殊循环(特定优先级):由编程设定最低优先级,从而规定了所有其它的优先级。例:若设定 IR3 对应的设备优先级最低,则 IR4 对应的设备优先级最高。
( 3 )优先级循环自动循环(设备优先级相等):一个设备 受到服务后,优先级变得最低,原优先级比它低一级的设备的优先级变得最高。
( 2 )优先级设定命令IR7
7
IR6
6
IR5
5
IR4
4
IR3
3
IR2
2
IR1
1
IR0
0默认优先级
IR7
4
IR6
3
IR5
2
IR4
1
IR3
0
IR2
7
IR1
6
IR0
5优先级循环
RIS0
A0 D7 D6 D5 D4 D3 D2 D1 D0
* ESMM SMM 0 1 P RR OCW3
OCW3---- 特殊屏蔽方式和查询方式的命令
0* :无效10 :下次 RD 有效读 IRR
11 :下次 RD 有效读 ISR
1 :查询 8259A 状态
0 :不查询
标志位
0* :无效10 :特殊屏蔽方式复位11 :特殊屏蔽方式置位
五、 8259 的中断级联
CS A0 D7-D0 INTA INTCAS0
CAS1
CAS2SP/EN IR7 IR6-- -IR0
从 8259 1#
CS A0 D7-D0 INTA INTCAS0
CAS1
CAS2SP/EN IR7 IR6-- -IR0
从 8259 2#
CS A0 D7-D0 INTA INTCAS0
CAS1
CAS2SP/EN IR7 IR6-- -IR0
主 8259
GND GNDVcc
地址总线( 16 )
控制总线( 8 )数据总线( 8 )
RD WR CS A0 D7--D0 INTA CAS0
CAS1
CAS2
IR7 IR6 IR5 IR4 IR3 IR2 IR1 IR0 INT SP/EN
从 8259
RD WR CS A0 D7--D0 INTACAS0
CAS1
CAS2
SP/EN IR7 IR6 IR5 IR4 IR3 IR2 IR1 IR0
主 8259 INT
外部中断请求外部中断请求
例:某中断级联系统,从片的 INT 端接主片的 IR3 ,主片从 IR1 、IR3引入两个中断请求,中断类型号为 31H 、 35H 。中断服务程序的段基址为 1000H ,偏移量分别为 2000H 、 3000H 。从 8259 的 IR4 、 IR5引入两个中断请求,中断类型号为 44H 、 45H 。中断服务程序的段基址为 2000H ,偏移量分别为 3600H 、 4500H 。
00200010
00300010
00450020
00360020
00116
00114
00112
00110
000D6
000D4
000C4
000C6
IP
CS31
IP
CS35
IP
CS44
IP
CS45
( 1 )中断入口地址写入中断向量表MOV AX , 1000H ;送段地址MOV DS , AXMOV DX , 2000H ;送偏移地址MOV AL , 31HMOV AH , 25HINT 21HMOV DX , 3000HMOV AL , 35HINT 21HMOV AX , 2000HMOV DS , AXMOV DX , 3600HMOV AL , 44HMOV AH , 25HINT 21HMOV DX , 3000HMOV AL , 45HINT 21H
( 2 )主片 8259A初始化编程(端口地址 FFC8H , FFC9H ) MOV AL , 11H ; ICW1 ,级联,边沿触发
MOV DX , 0FFC8H ;OUT DX , ALMOV AL , 30H ; ICW2 ,确定中断类型号MOV DX , 0FFC9H ;OUT DX , ALMOV AL , 08H ; ICW3 , IR3 端接从 INT端OUT DX , ALMOV AL , 11H ; ICW4 ,特殊嵌套,非缓冲方式OUT DX , ALMOV AL , 0D5H ; OCW1 ,允许 IR1 , IR3 , IR5中断OUT DX , ALMOV AL , 20H ; OCW2 ,普通 EOI 结束方式MOV DX , 0FFC8H ;OUT DX , AL
( 3 )从片 8259A初始化编程(端口地址 FFC8H , FFC9H ) MOV AL , 11H ; ICW1 ,级联,边沿触发
MOV DX , 0FFCAH ;OUT DX , ALMOV AL , 40H ; ICW2 ,确定中断类型号MOV DX , 0FFCBH ;OUT DX , ALMOV AL , 03H ; ICW3 ,从片接主片的 IR3 端OUT DX , ALMOV AL , 01H ; ICW4 ,完全嵌套,非缓冲方式OUT DX , AL ;非自动 EOI 结束方式MOV AL , 0CFH ; OCW1 ,允许 IR4 , IR5 中断OUT DX , AL ;MOV AL , 20H ; OCW2 ,普通 EOI 结束方式MOV DX , 0FFCAH ;OUT DX , AL
四、 PC 机的中断控制系统1 、中断控制系统的硬件电路
NMI 屏蔽寄存器屏蔽位
AND OR
插槽卡
IRQ7 6 5 4 3 2 1 0
中 断 优 先 级 8259A
8087 中断请求RAM奇偶错I /O 通道检查错
并行打印机
8253 定时键盘
未用异步通信(辅)异步通信( 主)
硬盘软盘
INTR
CPU
NMI
INTR
8088的 INTR 屏蔽中断请求线接中断控制器 8259A。 8259A有可进行优先级排队的八条中断请求线,其中 IR0 、 IR1 、 IR2 、 IR3 、 IR4 、 IR5 、 IR6 、 IR7 编号的中断 已为系统配置的I /O 设备所占用。
PC 机将主控板上的 8259A 设置为:中断全嵌套优先权为固定排队: IR0 的优先级最高, IR7 的优先级最低;中断屏蔽控制口地址为 21H ,与 IRQ相应位被置 0为允许中断。
8088/8086的中断向量共有 00H~ FFH共 256个。例如 8253 的 1/18.2S定时器中断向量是 1CH。 DOS 系统将 8253定时器设置为 1/18.2S 申请中断,它的中断服务地址已设置在中断向量 1CH 中。如用户需使用自己的 1/18.2S 定时,则可用 自己的中断服务程序入口地址替换 1CH 中的内容。
8086/8088 微型机的中断系统 (8259A 的应用 )
top related