1、微机原理第八章: 中断系统第八章: 中断系统输入, 输出设备是人机交换信息的必要外设., 中断控制方式是CPU经I/O接口与外设传送数据的最佳方式, CPU被动响应外设的中断请求, 提高CPU的工作效率8.1 8086CPU的中断结构一: 8086CPU的中断源 1: 内部中断源 (软中断) 由中断指令INT 获得的中断 2: 外部中断源 (硬中断) A: 非屏蔽中断源 8086CPU引脚NMI获得上升沿触发 B: 可屏蔽中断源 8086CPU引脚 INTR获得高电平触发二: 8086CPU中断优先级别 1: 软中断 2: 不可屏蔽中断NMI 3: 可屏蔽中断INTR三: 8086CPU中断处
2、理过程 (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: 数据段定义法 DATA SEGMENT AT 0000H ; 定义数据段(DS) = 0000H ORG n * 4 ; n为中断类型号 SUB DW noffset ; 中断服务程序的入口IP DW nseg ; 中断服务程序的入口CS
3、DATA ENDS B: 指令传送法 DATA SEGMENT AT 0000H ORG n * 4 SUB DW 2DUP(?) DATA ENDS CODE SEGMENT ASSUME CS:CODE, DS:DATA MOV AX, DATA MOV DS, AX MOV SUB, noffset ; 中断服务程序的入口IP MOV SUB + 2, nseg ; 中断服务程序的入口CS2: INT 21H功能设置法 A: 置中断向量功能 1): 功能号 25H AH 2): 中断号 n AL 3): 入口参数 中断服务程的入口地址CS:IP DS:DX 4): INT 21H 注:
4、中断服务程的入口地址CS:IP值将放入中断向量表的n * 4处连续4个存储单元中B: 读中断向量功能 1): 功能号 35H AH 2): 中断号 n AL 3): INT 21H 4): 出口参数 ES:BX 注: ES:BX中为中断号n的中断服务程的入口地址CS:IP值例 某中断服务程序的中断号为40H, 中断服务程序的入口地址CS:IP = 3500H:4830H, 用INT 21H功置中断向量到中断向量表 解: MOV AH, 25H MOV AL, 40HPUSH DS ; 下述指要用DS, 故暂时放入堆栈 MOV AX, 3500H MOV DS, AX ; (DS) = (CS)
5、 = 3500H MOV DX, 4830H ; (DX) = (IP) = 4830H INT 21H POP DS ; 恢复原DS值 中断向量表中的数据30H48H00H35H 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: 中断请求, 中断
6、屏蔽, 中断响应 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中的一个中断服务程序 注: 对可屏
7、蔽中断, 当中断请求有效时, 要获得中断响应的条件是置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的INTR2: 功能 A: 输入中断源有一个为高时输出为高 B: 可屏蔽中断请求由多中断源提供3: 优先级流程法 先判断那一个输入中断源,
8、则此中断源优先级最高 二: 硬件菊花链法 由数字逻辑电路构成优先级电路, 现己不常用 三: 专用芯片法 软件法, 硬件法的结合可编程中断控制器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): 为中
9、断源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读写操
10、作 注: 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)
11、: 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:
12、 该优先权序始终不变 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输入上
13、升沿有效 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, IM
14、R操作 D: 1个读中断类型号操作注: 2个地址怎样完成11个读写操作 3: 地址分配表及应用特点 表8.2 8259A的读写操作A0对应的读/写操作0010读IRR、ISR或中断状态查询码1010读IMR0100写OCW2、OCW3或ICW11100写OCW1、ICW2、ICW3或ICW4110无操作,数据线呈高阻态1无操作,数据线呈高阻态A: A0 = 0时的读操作, IRR, ISR, 中断类型号 CPU 注: 解决1址3读问题, 用位控制定义读入法B: A0 = 1时的读操作, 仅IMR CPUC: A0 = 0时的写操作, CPU OCW2, OCW3, ICW1 注: 解决1址3写
15、问题, 用同址顺序写入法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 = 1 CPU对ICW1命令字写操作 若D4 = 0 CPU对0CW2,
16、 OCW3命令字写操作 2): D0 = 0 不写ICW4命令字 D0 = 1 要写ICW4命令字 3): D1 = 0 多片8259A方式, 要写ICW3命令字 D1 = 1 单片8259A方式, 不写ICW3命令字 4): D3 = 0 IR0 IR7为边沿触发方式 D3 = 1 IR0 IR7为电平触发方式 5): D2, D5, D6, D7位不用(8086CPU时)3: ICW2 中断类型号初始化命令字 A: 口地址 A0 = 1, PC/XT口地址 = 21H B: 位定义 1): D2 D0 IR0 IR7的编码, 即中断类型号的低3位 2): D7 D3 中断类型号的高5位 注
17、: 中断类型号的高5位由用户编程定义, 中断类型号的低3位自动产生, 保证IR0 IR7连续例定义8259A的8个中断类型号为08H 0FH 解: 08H = 00001000B, 0FH = 00001111B 低3位为000B 111B表示中断源IR0 IR7的编码 高5位为00001B MOV AL, 08H OUT 21H, AL4: ICW3 主/从8259A初始化命令字 A: 写操作条件 在ICW1中, D1 = 0 B: 口地址 A0 = 1, PC/XT口地址 = 21H C: 写操作方法 同址顺序写入法 注: ICW2, ICW3, ICW4, OCW1均为同址( A0 =
18、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 用于8
19、080CPU 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的初始化命令字写入程序MOV AL, 00010011B ; D0 = 1, 要写ICW4, D1 = 1, 不写ICW3OUT 20H, AL ; 写ICW1, D3 = 0, IR0 IR7为边沿触发方式MOV AL
20、, 00001000B ; IR0 IR7 对应中断类型号为08H 0FHOUT 21H, AL ; 写ICW2MOV AL, 00001001B ;D0 = 1, 8086方式, D1 = 0, 非自动EIOOUT 21H, 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
21、 = 1 对应中断源IRn中断屏蔽2: OCW2 中断优先权选择命令字 注: ICW4可定义8259A工作于固定优先权, 8259A的等优先权, 特殊优先权在此定义A: 口地址 A0 = 0, PC/XT口地址 = 20HB: 识别位 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结束方
22、式 D5 = 1 非自动EIO结束方式3: OCW3 运行方式命令字A: 口地址 A0 = 0, PC/XT口地址 = 20HB: 识别位 D4, D3 = 0, 1 (同址识别位法, 对OCW2, OCW3)C: 位定义 1): D2 = 0 CPU下次同址读操作读入IRR, ISR中的值 D2 = 1 CPU下次同址读操作读入中断类型号的值 2): D1,D0 = 00, 01 无意义 D1,D0 = 10 CPU下次同址读操作读入IRR中的值 D1,D0 = 11 CPU下次同址读操作读入ISR中的值 3): D6, D5 级联方式下中断屏蔽的应用(约) 4): D7 未用 (四): 8
23、259A的读操作方法1: 读IMR寄存器 A: 口地址 A0 = 1, PC/XT口地址 = 21H B: 地址唯一, 无同址2: 读IRR寄存器 A: 口地址 A0 = 0, PC/XT口地址 = 20H B: 条件 先写OCW3中的D2,D1,D0 = 0103: 读ISR寄存器 A: 口地址 A0 = 0, PC/XT口地址 = 20H B: 条件 先写OCW3中的D2,D1,D0 = 0114: 读中断类型号 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 未用微机原理第 11 页
©2010-2024 宁波自信网络信息技术有限公司 版权所有
客服电话:4008-655-100 投诉/维权电话:4009-655-100