第七章 中断系统_续
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
主片IR0 主片IR1 主片IR2 从片IR0 从片IR1 从片IR2 从片IR3 从片IR4 从片IR5 从片IR6 从片IR7 主片IR3 主片IR4 主片IR5 主片IR6 主片IR7
08H 09H 0AH 70H 71H 72H 73H 74H 75H 76H 77H 0BH 0CH 0DH 0EH 0FH
在这种方式下,优先级顺序不是固定不变的,一 个设备得到中断服务后,其优先级自动降为最低。其初 始的优先级顺序规定为IR0,IR1,IR2,…,IR7
该方式用于系统中多个中断源优先级相等的场合
(2)优先级特殊循环方式。
这种方式与优先级自动循环方式惟一的区别是, 其初始的优先级不是固定IR0为最高,然后开始循环,而 是由程序指定IR0~IR7中任意一个为最高优先级,然后 再按顺序自动循环,决定优先级。
3.若CPU处于开中断状态,则在当前指令执行结束 后,启动中断响应总线操作,发出两个负脉冲作为响 应信号。
4.8259A接收到第一个负脉冲,完成如下工作:
(1)使ISR相应位置1,表示CPU已为该中断请求服务。 (2)使IRR的相应位清0。
5.8259A接收到第二个负脉冲,将中断类型号送上数据总 线。中断类型号由用户编程和中断请求引脚IRi的序号i共同决 定(CPU读取中断类型号,经响应过程后,进入中断服务程 序,直到服务结束返回)。
•
JMP INTR2
• INTR2:MOV AL,04H ;写入ICW3,设定主片IRQ2级联方式
•
OUT 21H,AL
•
JMP INTR3
• ;从片8259A的初始化
•
MOV AL,11H
•
;写入ICW1,设定边沿触发,级联方式
•
OUT 0A0H,AL
•
JMP INTR5
• INTR5:MOV AL,70H
0(最高) 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15(最低)
定时器 键盘 从片8259A 时钟/日历钟 IRQ9(保留) IRQ10(保留) IRQ11(保留) IRQ12(保留) 协处理器 硬盘控制器 IRQ15(保留) 异步通信口(COM2) 异步通信口(COM1) 并行打印机2 软盘驱动器 并行打印口1
IR0
寄存器
IRR
IR7
中断屏蔽寄存器IMR
图5-9 8259A内部结构框图
2.8259A的引脚特性
CS 1 2
WR 3
RD 4
D7
5
D6 D5
6
D4
7
D3
8
D2
9
D1 10
D0 11
CAS0 12
CAS1 13
GND 14
28 VCC 27 A0
26 INTA 25 IR7 24 IR6 23 IR5 22 IR4 21 IR3 20 IR2
可通过OCW3的D6D5=11来设定。
2.中断嵌套方式
(1)全嵌套方式。
在此种方式下,中断优先级按IR0~IR7顺序进行 排队,并且只允许中断级别高的中断源去中断级别低的 中断服务程序,但不能相反。这是8259A最常用的方式。
在对8259A进行初始化以后,没有设置其他优先 级方式,则自动按此方式工作。
• OUT 20H,AL ;写主片EOI命令
7.4 中断调用
7.4.1 DOS 和BIOS 中断的调用方法
1. 将入口参数送入指定的调用寄存器,如果没有入 口参数,就不需要这一步。 2.将功能号送入AH寄存器,将子功能号送入AL寄 存器,如果没有子功能号,不需要送AL。 3.产生一个软中断INT n ,转入子程序入口。 4.通过CPU的返回寄存器返回中断处理结果——出 口参数。如果没有返回值,也就不需要返回寄存器。
Y
写ICW4
写在 偶地址中
写在 奇地址中
初始化完完
图5-12 8259A初始化流程
• (1)初始化命令字ICW1——芯片控制字
A0
D7
D6
D5
D4
D3
D2
D1
D0
0
1
LTIM ADI SNGL ICW4
(2)初始化命令字ICW2——中断类型号命令字
A0
D7
D6
D5
D4
D3
D2
D1
D0
1
T7
T6
T5
例7-5从键盘输入一个字符,并同时在显示屏上输出,当键入字符‘$’时,则停止操作。
DON1: MOV AH,O1H ;置单字符输入
INT 21H
CMP AL,‘$’
;是结束字符吗
JZ DON2
;是,转向DON2
MOV DL,AL
MOV AH,02H ;显示输出字符
INT 21H
JMP DON1
功能号 01H 02H 03H 04H 05H 06H
07H 08H 09H 0AH
功能 等待从键盘输入一个字符 并显示它 显示1个字符
从COM1接收1个字符 从COM1发送1个字符
向打印机输出1个字符
立即从键盘输入1个字符 或向显示器输出1个字符
等待从键盘输入一个字符 等待从键盘输入一个字符 显示一个字符串
从键盘接收1个字符串 存入缓冲区,并显示它
入口参数 无
19 IR1 18 IR0 17 INT
16 SP/EN 15 CAS2
图5-10 8259A引脚信号
7.3.2 8259A的工作过程
1.中断源通过IR0~IR7向8259A发中断请求,使得 8259A的中断请求寄存器IRR的相应位置1。
2.IRR中经中断屏蔽寄存器IMR允许后的置位位进入 优先权判别器PR,PR将其中最高优先权的中断请求从 INT输出,送至CPU的INTR端。
MOV AH,2BH ;设置日期功能号送入AH寄存器
INT 21H
;执行DOS调用
CMP AL,0FFH
;根据出口参数AL=00H,设置成功;AL=FFH,判断失败
JE ERROR ;不成功,转错误处理
┇
;成功,往下执行
7.4.2 DOS系统功能调用 1.字符设备I/O控制
• 字符设备包括键盘、显示器、打印机、串行通信接口 等。通过DOS系统功能调用可以实现单个字符或字符 串的输入与输出控制
• 例7-4使用INT 21H 的2BH系统功能设置日期为 2004年5月1日。其程序段为:
MOV DL,1 ;入口参数送入指定寄存器:把日子放入DL中
MOV DH,5 ;把月份放入DH中
MOV CX,2004
;把年份放入CX中,CX中的年份值是以1980为基准的偏移值
SUB CX,1980 ;减去1980才为年份设定值
•
;写入ICW2,设定从片IR0,即IRQ8的中断类型号为70H
•
OUT 0A1H,AL
•
JMP INTR6
• INTR6:MOV AL,02H
•
;写入ICW3,设定从片级联到主片的IRQ2
•
OUT 0A1H,AL
•
JMP INTR7
• INTR7:MOV AL,01H
• ② 级联工作编程
• ;读ISR的内容
2015
7.3可编程中断控制器8259A
7.3.1 8259A的内部结构和引脚特性
1.8259A的内部结构
D7~D0
RD WR
A0 CS
CAS0 CAS1 CAS2 SP/EN
数据 总线 缓冲器
读/写 逻辑
数据 总线 缓冲器
INTA INT 控制逻辑
中断服务 寄存器
ISR
优先权 分析器
PR
中断请求
6.若8259A工作在自动结束中断方式AEOI,则8259A清除 ISR的相应位,否则直至中断服务结束,发出EOI命令,才能 使ISR中的相应位清0。
7.3.3 8259A的工作方式 8259A有多种工作方式,这些工作方式可以通过初始化 命令字(ICW1~ICW4)和操作命令字(OCW1~ OCW4)来设置。
D7
D6
D5
D4
D3
D2
D1
D0
0
0 ESMM SMM 0
1
P
RR RIS
7.3.6 8259A编程举例 例7-3 以IBM PC/AT(80286)微机中的8259A为例说明 其初始化编程方法
(1)分析
在286以上的PC机中,共使用了两片8259A(新型的 PC中已将中断控制器集成到了芯片组中 ,但功能上与 8259A完全兼容),两片级联使用,共可管理15级中断。
无
Ctrl-c处理 能 能 能 能 能 能
否 能 能 能
表7-2 字符设备的系统功能
• 例7-6 从键盘输入一串字符,并在显示屏上显示出来。注意09H功能显示字符串时是以‘$’符 号结束的,因此,要显示的字符串一律以‘$’结尾
DL=要显示字符的 ACCII码 无 DL=发送字符的 ASCII码 DL=打印字符的 ASCII码 DL=FFH为输入; DL≠FFH为输出, 且DL=输出字符
无 无 DS:DX=显示字符 串的首地址 DS:DX=输入字符 串缓冲区地址
出口参数 AL=键入字符
无
AL=接收的字符 无
无
DL=FFH,立即从键盘接 收1个字符至AL;若无码 可读,则返回ZF=1; DL≠FFH,无出口参数 AL=键入字符 AL=键入字符 无
BUF BU M/S
D2
D1
AEOI PM
(2).操作命令字OCW
(1)操作命令字OCW1——屏蔽操作命令字
A0
D7
D6
D5
D4
D3
D2
D1
D0
1
(2)操作命令字OCW2——中断方式命令字
A0
D7
D6
D5
D4
D3
D2
D1
D0
1
R
SL EOI
0
0
L2
L1
L0
(3)操作命令字OCW3——状态操作命令字
A0
各级中断的用途如表7-1所示。
表7-1 IBM PC/AT的中断源和类型号
中断向量地址指针 8259A引脚 中断类型号
优先级
中断源
00020H 00024H 00028H 001C0H 001C4H 001C8H 001CCH 001D0H 001D4H 001D8H 001DCH 0002CH 00030H 00034H 00038H 0003CH
1.中断屏蔽方式
(1)普通屏蔽方式。利用操作命令字OCW1,使屏 蔽寄存器IMR中的一位或数位置1来屏蔽一个或数个中 断源的中断请求。
若要开放某一个中断源的中断请求,则将IMR 中相应的位置0。
(2)特殊屏蔽方式。在某些场合,执行某一个中断 服务程序时,要求允许另一个优先级比它低的中断请求 被响应,此时可采用特殊屏蔽方式
T4
T3
(3)初始化命令字ICW3——主/从片初始化字
主片ICW3的格式如下:
A0
D7
D6
D5
D4
D3
D2
D1
D0
1
从片ICW3的格式如下:
A0
D7
D6
D5
D4
D0 1
0
0பைடு நூலகம்
00
0
D3
D2
D1
ID2 ID1
ID0
• (4)初始化命令字ICW4——方式控制字
A0
D7
D6
D5
D4
D3
1 D0
0
0
0 SFNM
动
器
地址 译码
SP/EN D7~D0
CAS0 CAS1 CAS2
A0 CS
从片 8259A
IIRR01
外设的 中断申请
INT
IR7
来自其他从片
图7-12 参与8259A组成的级联中断系统图
7.3.5 8259A的编程命令 1.初始化命令字ICW
写ICW1
写ICW2
N
级联?
Y 写ICW3
N
要ICW4?
(2)特殊全嵌套方式。
与全嵌套方式基本相同,所不同的是在特殊全嵌 套方式下,当执行某一级中断服务程序时,可响应同级 的中断请求,从而实现对同级中断请求的特殊嵌套 (8259A级联使用时,某从片的8个中断源对主片来说, 可以认为是同级的)。
特殊全嵌套方式用于多片级联。
3.优先级控制方式
(1)优先级自动循环方式。
(2)设计
• ① 8259A初始化编程
• ;主片8259A的初始化
•
MOV AL,11H ;写入ICW1,设定边沿触发,级联方式
•
OUT 20H,AL
•
JMP INTR1 ;延时,等待8259A操作结束,下同
• INTR1:MOV AL,08H
•
;写入ICW2,设定IRQ0的中断类型号为08H
•
OUT 21H,AL
4.中断结束方式
(1)自动中断结束方式。
在中断服务程序中,中断返回之前,不需要发出 中断结束命令就会自动清除该中断源所对应的ISR位 (实际上在CPU发出第二个INTA信号时,8259即自动 清除ISR中的对应位)。
这种方式用在多个中断不会嵌套的系统中。
(2)非自动中断结束方式。
在中断服务程序返回之前,必须发中断结束命令 才能使ISR中的当前服务位清除。
8086/8088 CPU
MCE/PDEN
8288
总线
接 数接 据 总线
驱动器 IORC
INTA IOWC
总 驱动器
线 的OE端
D7~D0 地址 总线
INTR
地址 译码
INTA WR RD
SP/EN
CAS0 CAS1
主片 CAS2
8259A
A0 地址
IR0
IR1
IR7
数据总线 地址总线
驱
连接其他芯片
• MOV AL,0BH ;写入OCW3,读ISR命令
• OUT 0A0H,AL
• NOP
;延时,等待8259A操作结束
• IN AL,0A0H ;读出ISR
•
┇
• ;向从片发EOI命令
• MOV AL,20H
• OUT 0A0H,AL ;写从片EOI命令
•
┇
• ;向主片发EOI命令
• MOV AL,20H