【单片微机原理及应用】第8章中断(8.2-8086中断系统)
- 格式:pptx
- 大小:737.17 KB
- 文档页数:23
微机原理及应⽤第⼋章中断系统第⼋章: 中断系统输⼊, 输出设备是⼈机交换信息的必要外设., 中断控制⽅式是CPU经I/O接⼝与外设传送数据的最佳⽅式, CPU被动响应外设的中断请求, 提⾼CPU的⼯作效率§8.1 8086CPU的中断结构⼀: 8086CPU的中断源1: 内部中断源(软中断)由中断指令INT 获得的中断2: 外部中断源(硬中断)A: ⾮屏蔽中断源——8086CPU引脚NMI获得上升沿触发B: 可屏蔽中断源——8086CPU引脚INTR获得⾼电平触发⼆: 8086CPU中断优先级别1: 软中断2: 不可屏蔽中断NMI3: 可屏蔽中断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: 数据段定义法DATA SEGMENT A T 0000H ; 定义数据段(DS) = 0000HORG n * 4 ; n为中断类型号SUB DW noffset ; 中断服务程序的⼊⼝IPDW nseg ; 中断服务程序的⼊⼝CSDATA ENDSB: 指令传送法DATA SEGMENT A T 0000HORG n * 4SUB DW 2DUP(?)DATA ENDSCODE SEGMENTASSUME CS:CODE, DS:DA TAMOV AX, DATAMOV DS, AXMOV SUB, noffset ; 中断服务程序的⼊⼝IPMOV SUB + 2, nseg ; 中断服务程序的⼊⼝CS2: INT 21H功能设置法A: 置中断向量功能1): 功能号25H → AH2): 中断号n → AL3): ⼊⼝参数中断服务程的⼊⼝地址CS:IP → DS:DX4): INT 21H注: 中断服务程的⼊⼝地址CS:IP值将放⼊中断向量表的n * 4处连续4个存储单元中B: 读中断向量功能1): 功能号35H → AH2): 中断号n → AL3): INT 21H4): 出⼝参数ES:BX注: ES:BX中为中断号n的中断服务程的⼊⼝地址CS:IP值《例》某中断服务程序的中断号为40H,中断服务程序的⼊⼝地址CS:IP = 3500H:4830H,⽤INT 21H功置中断向量到中断向量表解:MOV AH, 25HMOV AL, 40HPUSH DS ; 下述指要⽤DS, 故暂时放⼊堆栈MOV AX, 3500HMOV DS, AX ; (DS) = (CS) = 3500HMOV DX, 4830H ; (DX) = (IP) = 4830HINT 21HPOP DS ; 恢复原DS值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 ← HB: 中断屏蔽 —— 清中断屏蔽控制标志位IF = 0中断允许 —— 置中断屏蔽控制标志位IF = 1C: 中断⽆响应 —— 若IF = 0, 输出/INTA = H中断有响应 —— 若IF = 1, 输出/INTA = L4: INTR 的中断过程A: 8086CPU 引脚INTR ← HB: 程序判断中断控制标志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的INTR2: 功能A: 输⼊中断源有⼀个为⾼时输出为⾼B: 可屏蔽中断请求由多中断源提供3: 优先级流程法先判断那⼀个输⼊中断源, 则此中断源优先级最⾼⼆: 硬件菊花链法由数字逻辑电路构成优先级电路, 现⼰不常⽤三: 专⽤芯⽚法软件法, 硬件法的结合——可编程中断控制器§8.4 可编程中断控制芯⽚—— 8259A特点A: 可程序控制芯⽚的功能B: 可提供中断源的中断类型码C: 可屏蔽输⼊端的中断源形式A: 单⽚⽅式——有8个中断源B: 级联⽅式——最多64个中断源⼀: 8259A的结构及功能1: 8259A的内部逻辑结构A: 中断请求寄存器——IRR1): 可输⼊IR0 ~ IR8共8个外部中断源2): IRR寄存器中的值可经DB读⼊CPU注: IRR有⼝地址, 即可编程读B: 中断服务寄存器——ISR1): 为中断源IR0 ~ IR8服务, 为CPU服务若IRR请求, CPU响应, 则ISR中相对应位为1若中断服务程序结束, 则ISR中相对应位为0 2): ISR寄存器中的值可经DB读⼊CPU 注: ISR有⼝地址, 即可编程读C: 中断屏蔽寄存器——IMR1): 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: 优先权分析器——PR1): 对IRR中的IRR0 ~ IRR7中断源进⾏优先权分析2): IRR0 ~ IRR7的优先权分配可编程确定注: PR有⼝地址, 即可编程写E: 芯⽚控制逻辑1): 8259A的中断请求INT →8086CPU的INTR2): 8086CPU的/INTA →8259A的/INTAF: 芯⽚读写逻辑1): 8259A的⽚内地址线仅有A0(⼀线⼆址)注: 学习8259A的难点, 解决多寄存器读写与⼀线两址的⽭盾2): 8259A的⽚选线/CS由地址译码产⽣注: PC/XT微机中8259A的地址为20H, 21H3): 8259A的读写线/RD, /WR直接与8086CPU的/RD, /WR连接G: 芯⽚数据线8259A的数据线为8位即D0 ~ D7H: 芯⽚的级联线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 → IR4B: 其后⼯作同等优先权三: 中断源IR0 ~ IR7的中断触发⽅式1: 电平触发⽅式—— IR0 ~ IR7输⼊⾼电平有效A: 现象——中断源持续⾼电平B: 问题——造成连续中断请求C: 解决——在中服程序中令IF = 02: 边沿触发⽅式—— IR0 ~ IR7输⼊上升沿有效A: 特点—— IRR寄存器锁存触发信号B: 脉宽——上升沿脉冲宽度符合要求C: ⽅法——采⽤负脉冲的后沿触发四: 8259A的初始化命令字和操作命令字若要使⽤8259A, 必须按规定向其写⼊初始化命令字使8259A进⼊⼯作状态(⼀般由系统程序完成)若要改变8259A的功能, 可随时向其写⼊操作命令字使8259A按要求⼯作(⼀般由⽤户程序完成) (⼀): 8259A⼝地址讨论1: 8259A实际⼝地址⼀线⼆址, 址1 — A = 0, 址2 — A = 12: 8259A操作⼝地址A: 4个写初始化命令字操作B: 3个写操作命令字操作C: 3个读寄存器IRR, ISR, IMR操作D: 1个读中断类型号操作注: 2个地址怎样完成11个读写操作3: 地址分配表及应⽤特点表8.2 8259A的读写操作A: A0 = 0时的读操作, IRR, ISR, 中断类型号→ CPU注: 解决1址3读问题, ⽤位控制定义读⼊法B: A0 = 1时的读操作, 仅IMR → CPUC: 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⼝地址= 20HB: 位定义1): D4 = 1 为同址识别位注: 若D4 = 1 CPU对ICW1命令字写操作若D4 = 0 CPU对0CW2, 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⼝地址= 21HB: 位定义1): D2 ~ D0 IR0 ~ IR7的编码, 即中断类型号的低3位2): D7 ~ D3 中断类型号的⾼5位注: 中断类型号的⾼5位由⽤户编程定义,中断类型号的低3位⾃动产⽣, 保证IR0 ~ IR7连续《例》定义8259A的8个中断类型号为08H ~ 0FH 解: 08H = 00001000B, 0FH = 00001111B低3位为000B ~ 111B表⽰中断源IR0 ~ IR7的编码⾼5位为00001BMOV AL, 08HOUT 21H, AL4: ICW3 ——主/从8259A初始化命令字A: 写操作条件在ICW1中, D1 = 0B: ⼝地址A0 = 1, PC/XT⼝地址= 21HC: 写操作⽅法同址顺序写⼊法注: 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 = 1B: ⼝地址A0 = 1, PC/XT⼝地址= 21HC: 写操作⽅法同址顺序写⼊法D: 位定义1): D0 = 0 ⽤于8080CPUD0 = 1 ⽤于8086CPU2): 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, 不写ICW3 OUT 20H, AL ; 写ICW1, D3 = 0, IR0 ~ IR7为边沿触发⽅式MOV AL, 00001000B ; IR0 ~ IR7 对应中断类型号为08H ~ 0FH OUT 21H, AL ; 写ICW2MOV AL, 00001001B ;D0 = 1, 8086⽅式, D1 = 0, ⾮⾃动EIO OUT 21H, AL ; 写ICW4, ,D4 = 0, 固定优先权(三): 操作命令字OCW的写⼊⽅法注: ICW按顺序写⼊(先写), OCW按需要写⼊(后写)1: OCW1 ——写IMR寄存器命令字A: ⼝地址A0 = 1, PC/XT⼝地址= 21HB: 位定义1): D0 ~ D7对应寄存器IMR中的IMR0 ~ IMR72): Dn = 0 对应中断源IRn中断允许Dn = 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结束⽅式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 未⽤(四): 8259A的读操作⽅法1: 读IMR寄存器A: ⼝地址A0 = 1, PC/XT⼝地址= 21HB: 地址唯⼀, ⽆同址2: 读IRR寄存器A: ⼝地址A0 = 0, PC/XT⼝地址= 20HB: 条件先写OCW3中的D2,D1,D0 = 0103: 读ISR寄存器A: ⼝地址A0 = 0, PC/XT⼝地址= 20HB: 条件先写OCW3中的D2,D1,D0 = 0114: 读中断类型号A: ⼝地址A0 = 0, PC/XT⼝地址= 20HB: 条件先写OCW3中的D2 = 1C: 读⼊数据位定义1): D7 = 0 ⽆中断请求IR0 ~ IR7D7 = 1 有中断请求IR0 ~ IR72): D2 ~ D0 为IR0 ~ IR7编码(当D7 = 1时)3): D6 ~ D3 未⽤。