微机原理及应用第八章中断系统.docx
《微机原理及应用第八章中断系统.docx》由会员分享,可在线阅读,更多相关《微机原理及应用第八章中断系统.docx(17页珍藏版)》请在冰点文库上搜索。
微机原理及应用第八章中断系统
第八章:
中断系统
输入,输出设备是人机交换信息的必要外设.,中断控制方式是CPU经I/O接口与外设传送数据的最佳方式,CPU被动响应外设的中断请求,提高CPU的工作效率
§8.18086CPU的中断结构
一:
8086CPU的中断源
1:
内部中断源(软中断)
由中断指令INT获得的中断
2:
外部中断源(硬中断)
A:
非屏蔽中断源——8086CPU引脚NMI获得上升沿触发
B:
可屏蔽中断源——8086CPU引脚INTR获得高电平触发
二:
8086CPU中断优先级别
1:
软中断
2:
不可屏蔽中断NMI
3:
可屏蔽中断INTR
三:
8086CPU中断处理过程(311页图2.8)
1:
CPU获得中断请求
2:
CPU执行完当前指令
3:
CPU判断中断请求的优先级别
4:
保护现场,F,CS,IP入栈
5:
CPU执行中断服务程序
6:
恢复现场,IP,CS,F出栈
7:
CPU执行下一条指令
重复1~7
四:
中断向量表的设置
将中断服务程序的入口地址置入中断向量表中
1:
编程写入法
A:
数据段定义法
DATASEGMENTAT0000H;定义数据段(DS)=0000H
ORGn*4;n为中断类型号
SUBDWnoffset;中断服务程序的入口IP
DWnseg;中断服务程序的入口CS
DATAENDS
B:
指令传送法
DATASEGMENTAT0000H
ORGn*4
SUBDW2DUP(?
)
DATAENDS
CODESEGMENT
ASSUMECS:
CODE,DS:
DATA
MOVAX,DATA
MOVDS,AX
MOVSUB,noffset;中断服务程序的入口IP
MOVSUB+2,nseg;中断服务程序的入口CS
2:
INT21H功能设置法
A:
置中断向量功能
1):
功能号25H→AH
2):
中断号n→AL
3):
入口参数中断服务程的入口地址CS:
IP→DS:
DX
4):
INT21H
注:
中断服务程的入口地址CS:
IP值将放入
中断向量表的n*4处连续4个存储单元中
B:
读中断向量功能
1):
功能号35H→AH
2):
中断号n→AL
3):
INT21H
4):
出口参数ES:
BX
注:
ES:
BX中为中断号n的中断服务程的入口地址CS:
IP值
《例》某中断服务程序的中断号为40H,
中断服务程序的入口地址CS:
IP=3500H:
4830H,
用INT21H功置中断向量到中断向量表
解:
MOVAH,25H
MOVAL,40H
PUSHDS;下述指要用DS,故暂时放入堆栈
MOVAX,3500H
MOVDS,AX;(DS)=(CS)=3500H
MOVDX,4830H;(DX)=(IP)=4830H
INT21H
POPDS;恢复原DS值
中断向量表中的数据
30H
48H
00H
35H
40H*4
§8.2外部中断方式
一:
PC/XT的外部中断源
314页图8.3示外部中断源
二:
INTR中断源
1:
8259A与8个外部中断源
A:
8253定时器,键盘中断源直接到主机板
B:
其余6个中断源经扩展槽到主机板
2:
8259A与8086CPU的连接
A:
8259A获得外部中断请求
B:
8259A的INT=H输出
C:
8086CPU的INTR=H,获得中断请求输入
3:
中断请求,中断屏蔽,中断响应
A:
中断请求——输入INTR←H
B:
中断屏蔽——清中断屏蔽控制标志位IF=0
中断允许——置中断屏蔽控制标志位IF=1
C:
中断无响应——若IF=0,输出/INTA=H
中断有响应——若IF=1,输出/INTA=L
4:
INTR的中断过程
A:
8086CPU引脚INTR←H
B:
程序判断中断控制标志IF的值
C:
若IF=0,8086CPU引脚/INTA→H,无中断响应
D:
若IF=1,8086CPU引脚/INTA→L,有中断响应
E:
程序判断多中断优先级
F:
执行中断类型号08H~0FH中的一个中断服务程序
注:
对可屏蔽中断,当中断请求有效时,
要获得中断响应的条件是置IF=1
三:
NMI中断源
1:
PC/XT的NMI外部中断源
2:
NMI中断请求NMI←
3:
NMI无中断响应输出,NMI与标志位IF无关
4:
NMI的中断过程
A:
8086CPU的引脚NMI←
B:
执行02H中断类型号中断服务过程
§8.3中断优先级管理
当外部中断源为多个时,必须定义其优先级别并对其管理
一:
软件查询法
1:
硬件电路
A:
多中断源输入
B:
或门输出接8086CPU的INTR
2:
功能
A:
输入中断源有一个为高时输出为高
B:
可屏蔽中断请求由多中断源提供
3:
优先级流程法
先判断那一个输入中断源,则此中断源优先级最高
二:
硬件菊花链法
由数字逻辑电路构成优先级电路,现己不常用
三:
专用芯片法
软件法,硬件法的结合——可编程中断控制器
§8.4可编程中断控制芯片——8259A
✓特点A:
可程序控制芯片的功能
B:
可提供中断源的中断类型码
C:
可屏蔽输入端的中断源
✓形式A:
单片方式——有8个中断源
B:
级联方式——最多64个中断源
一:
8259A的结构及功能
1:
8259A的内部逻辑结构
A:
中断请求寄存器——IRR
1):
可输入IR0~IR8共8个外部中断源
2):
IRR寄存器中的值可经DB读入CPU
注:
IRR有口地址,即可编程读
B:
中断服务寄存器——ISR
1):
为中断源IR0~IR8服务,为CPU服务
若IRR请求,CPU响应,则ISR中相对应位为1
若中断服务程序结束,则ISR中相对应位为0
2):
ISR寄存器中的值可经DB读入CPU
注:
ISR有口地址,即可编程读
C:
中断屏蔽寄存器——IMR
1):
IMR中IMR0~IMR7与IRR中IR0~IR7位对应
若IMRn=1,则对应中断源IRn屏蔽
若IMRn=0,则对应中断源IRn允许
2):
寄存器IMR与中断标志IF的区别
IMR屏蔽IRR,当IMRn=1时
IF屏蔽CPU的中断请求INTR,当IF=0时
IF的级别比IMR高
3):
IMR寄存器与CPU间可经DB读写操作
注:
IMR有口地址,即可编程读写
D:
优先权分析器——PR
1):
对IRR中的IRR0~IRR7中断源进行优先权分析
2):
IRR0~IRR7的优先权分配可编程确定
注:
PR有口地址,即可编程写
E:
芯片控制逻辑
1):
8259A的中断请求INT→8086CPU的INTR
2):
8086CPU的/INTA→8259A的/INTA
F:
芯片读写逻辑
1):
8259A的片内地址线仅有A0(一线二址)
注:
学习8259A的难点,解决多寄存器读写与一线两址的矛盾
2):
8259A的片选线/CS由地址译码产生
注:
PC/XT微机中8259A的地址为20H,21H
3):
8259A的读写线/RD,/WR直接与8086CPU的/RD,/WR连接
G:
芯片数据线
8259A的数据线为8位即D0~D7
H:
芯片的级联线
1):
当外部中断源≤8个时,仅有单片8259A
当外部中断源>8个时,需用多片8259A级联
2):
级联线仅在8259A级联方式下有作用
注:
级联线CAS0~CAS2,/EN即/SP接线方式
2:
8259A的引脚图
A:
8259A为DIP28封装
B:
8259A为+5V供电
二:
8259A的中断优先权
中断源IR0~IR7的优先权序可编程确定
1:
固定优先权(完全嵌套方式)
A:
优先权序IR0(高)→IR7(低)
B:
该优先权序始终不变
2:
等优先权(普通循环方式)
A:
初始优先权序IR0(高)→IR7(低)
B:
若响应了IRn中断,则IRn中断权最低,IRn-1中断权最高
C:
每个中断优先权相同
3:
特殊优先权(特殊循环方式)
A:
初始优先权序由编程确定
若定义IR5为初始最高优先权,
则初始优先权序IR5→IR7→IR0→IR4
B:
其后工作同等优先权
三:
中断源IR0~IR7的中断触发方式
1:
电平触发方式——IR0~IR7输入高电平有效
A:
现象——中断源持续高电平
B:
问题——造成连续中断请求
C:
解决——在中服程序中令IF=0
2:
边沿触发方式——IR0~IR7输入上升沿有效
A:
特点——IRR寄存器锁存触发信号
B:
脉宽——上升沿脉冲宽度符合要求
C:
方法——采用负脉冲的后沿触发
四:
8259A的初始化命令字和操作命令字
✓若要使用8259A,必须按规定向其写入初始化命令字
使8259A进入工作状态(一般由系统程序完成)
✓若要改变8259A的功能,可随时向其写入操作命令字
使8259A按要求工作(一般由用户程序完成)
(一):
8259A口地址讨论
1:
8259A实际口地址
一线二址,址1—A=0,址2—A=1
2:
8259A操作口地址
A:
4个写初始化命令字操作
B:
3个写操作命令字操作
C:
3个读寄存器IRR,ISR,IMR操作
D:
1个读中断类型号操作
注:
2个地址怎样完成11个读写操作
3:
地址分配表及应用特点
表8.28259A的读写操作
A0
对应的读/写操作
0
0
1
0
读IRR、ISR或中断状态查询码
1
0
1
0
读IMR
0
1
0
0
写OCW2、OCW3或ICW1
1
1
0
0
写OCW1、ICW2、ICW3或ICW4
×
1
1
0
无操作,数据线呈高阻态
×
×
×
1
无操作,数据线呈高阻态
A:
A0=0时的读操作,IRR,ISR,中断类型号→CPU
注:
解决1址3读问题,用位控制定义读入法
B:
A0=1时的读操作,仅IMR→CPU
C:
A0=0时的写操作,CPU→OCW2,OCW3,ICW1
注:
解决1址3写问题,用同址顺序写入法
D:
A0=1时的写操作,CPU→OCW1,ICW2,ICW3,ICW4
注:
解决1址4写问题,用位识别写入法
(二):
初始化命令字ICW的写入方法
1:
ICW1~ICW4的写入流程
A:
ICW1,ICW2为必写初始化命令字
ICW3,ICW4为选写初始化命令字
B:
ICW2,ICW3,ICW4采用同址顺序写入法
2:
ICW1——芯片控制初始化命令字
A:
口地址A0=0,PC/XT口地址=20H
B:
位定义
1):
D4=1为同址识别位
注:
若D4=1CPU对ICW1命令字写操作
若D4=0CPU对0CW2,OCW3命令字写操作
2):
D0=0不写ICW4命令字
D0=1要写ICW4命令字
3):
D1=0多片8259A方式,要写ICW3命令字
D1=1单片8259A方式,不写ICW3命令字
4):
D3=0IR0~IR7为边沿触发方式
D3=1IR0~IR7为电平触发方式
5):
D2,D5,D6,D7位不用(8086CPU时)
3:
ICW2——中断类型号初始化命令字
A:
口地址A0=1,PC/XT口地址=21H
B:
位定义
1):
D2~D0IR0~IR7的编码,即中断类型号的低3位
2):
D7~D3中断类型号的高5位
注:
中断类型号的高5位由用户编程定义,
中断类型号的低3位自动产生,保证IR0~IR7连续
《例》定义8259A的8个中断类型号为08H~0FH
解:
08H=00001000B,0FH=00001111B
低3位为000B~111B表示中断源IR0~IR7的编码
高5位为00001B
MOVAL,08H
OUT21H,AL
4:
ICW3——主/从8259A初始化命令字
A:
写操作条件在ICW1中,D1=0
B:
口地址A0=1,PC/XT口地址=21H
C:
写操作方法同址顺序写入法
注:
ICW2,ICW3,ICW4,OCW1均为同址(A0=1),写顺序为
写ICW2→写ICW3(若要)→写ICW4(若要)→写OCW1
D:
主8259A位定义
1):
若D0~D7为1,则IR0~IR7对应端接有从8259A芯片
2):
若D0~D7为0,则IR0~IR7对应端未接从8259A芯片
E:
从8259A位定义
1):
D2~D0从8259A的INT端接主8259A的IRn端编码
2):
D7~D3未用
5:
ICW4——方式控制初始化命令字
A:
写操作条件在ICW1中,D0=1
B:
口地址A0=1,PC/XT口地址=21H
C:
写操作方法同址顺序写入法
D:
位定义
1):
D0=0用于8080CPU
D0=1用于8086CPU
2):
D1=0普通,特殊EIO结束方式
D1=1自动EIO结束方式
3):
D3,D2=00,01级联非缓冲方式
D3,D2=10,11级联缓冲方式
4):
D4=0单片8259A固定优先权
D4=1级联8259A固定优先权
5):
D7~D5未用
《例》PC/XT系统BIOS对8259A的初始化命令字写入程序
MOVAL,00010011B;D0=1,要写ICW4,D1=1,不写ICW3
OUT20H,AL;写ICW1,D3=0,IR0~IR7为边沿触发方式
MOVAL,00001000B;IR0~IR7对应中断类型号为08H~0FH
OUT21H,AL;写ICW2
MOVAL,00001001B;D0=1,8086方式,D1=0,非自动EIO
OUT21H,AL;写ICW4,,D4=0,固定优先权
(三):
操作命令字OCW的写入方法
注:
ICW按顺序写入(先写),OCW按需要写入(后写)
1:
OCW1——写IMR寄存器命令字
A:
口地址A0=1,PC/XT口地址=21H
B:
位定义
1):
D0~D7对应寄存器IMR中的IMR0~IMR7
2):
Dn=0对应中断源IRn中断允许
Dn=1对应中断源IRn中断屏蔽
2:
OCW2——中断优先权选择命令字
注:
ICW4可定义8259A工作于固定优先权,8259A的
等优先权,特殊优先权在此定义
A:
口地址A0=0,PC/XT口地址=20H
B:
识别位D4,D3=0,0(同址识别位法,对OCW2,OCW3)
C:
位定义
1):
D2~D0特殊优先权中断源IRn编码
2):
D6=0自动循环优先权
D6=1特殊循环优先权
3):
D7=0固定优先权
D7=1循环优先权
注:
仅当D6=1,D7=1时,D2~D0值才有意义
4):
D5=0自动EIO结束方式
D5=1非自动EIO结束方式
3:
OCW3——运行方式命令字
A:
口地址A0=0,PC/XT口地址=20H
B:
识别位D4,D3=0,1(同址识别位法,对OCW2,OCW3)
C:
位定义
1):
D2=0CPU下次同址读操作读入IRR,ISR中的值
D2=1CPU下次同址读操作读入中断类型号的值
2):
D1,D0=00,01无意义
D1,D0=10CPU下次同址读操作读入IRR中的值
D1,D0=11CPU下次同址读操作读入ISR中的值
3):
D6,D5级联方式下中断屏蔽的应用(约)
4):
D7未用
(四):
8259A的读操作方法
1:
读IMR寄存器
A:
口地址A0=1,PC/XT口地址=21H
B:
地址唯一,无同址
2:
读IRR寄存器
A:
口地址A0=0,PC/XT口地址=20H
B:
条件先写OCW3中的D2,D1,D0=010
3:
读ISR寄存器
A:
口地址A0=0,PC/XT口地址=20H
B:
条件先写OCW3中的D2,D1,D0=011
4:
读中断类型号
A:
口地址A0=0,PC/XT口地址=20H
B:
条件先写OCW3中的D2=1
C:
读入数据位定义
1):
D7=0无中断请求IR0~IR7
D7=1有中断请求IR0~IR7
2):
D2~D0为IR0~IR7编码(当D7=1时)
3):
D6~D3未用