微机原理及接口技术含单片机七中断_第1页
微机原理及接口技术含单片机七中断_第2页
微机原理及接口技术含单片机七中断_第3页
微机原理及接口技术含单片机七中断_第4页
微机原理及接口技术含单片机七中断_第5页
已阅读5页,还剩118页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、第六章 中断12教学重点 8086 CPU的中断系统 8259A的中断工作过程和工作方式 中断服务程序的编写3第一节 概述一、中断的基本概念二、中断处理过程三、中断优先级四、中断嵌套1、中断 在CPU正常运行程序时,由于内部或外部某个非预料事件的发生,使CPU暂停正在运行的程序,而转去执行处理引起中断事件的程序,然后再返回被中断了的程序,继续执行。这个过程就是中断。4一、中断的基本概念5中断服务程序1中断服务程序 2非预料事件1CPU执行流程非预料事件 262、中断源和中断优先权 引起中断的因素很多,将发出中断申请的外设或内部原因,称为中断源常见中断源: 外设的请求(输入输出设备、实时时钟82

2、53等) 硬件故障信号,如电源掉电等。 软件中断,INT中断指令或CPU运算产生的某些错 误(除数为0、运算溢出)给每个中断源指定一个优先权,称为中断优先权当多个中断源同时发出中断请求时, CPU按照中断优先权的高低顺序,依次响应。73、中断服务程序 处理中断源,完成其所要求功能的程序, 称中断服务程序(中断例行程序、中断子程)。CPU执行流程中断服务程序1中断服务程序2非预料事件2非预料事件18非预料事件是指事件发生的时间无法预知, 即中断源何时产生中断不确定,是随机的。但事件的性质及处理方法则是已知的, 确定的, 即中断服务程序是事先编写好的, 只是何时执行未知。中断源产生中断的随机性,使

3、中断服务程序的执行也具有随机性,即何时执行中断服务程序不是在程序中安排好的。94、断点和中断现场断点: 是指CPU执行的现行程序被中断时的下一条指令的地址,又称断点地址。中断现场: 是指CPU转去执行中断服务程序前的运行状态,包括CPU内部各寄存器、断点地址等。101000:150H 、 、 、 、 、MOV AX, 0ADD AX, DXMOV DI , AX、 PUSH AX 、 、 IRETCPU在执行此指令时,某中断源发申请中断;CPU在执行完该指令后,转去执行中断子程地址1000:150H为断点断点概念:11二、中断处理过程1、CPU响应中断的条件在现行指令周期内无总线请求中断允许标

4、志IF=1现行指令执行完毕122、CPU对中断响应中断响应过程:关中断禁止接受其他的中断请求。保护断点断点处IP和CS值压入堆栈保留,以便中断返回。识别中断源找到中断服务程序的入口地址两种识别方法:查询中断软件查询向量中断硬件实现,提供入口地址信息保护现场 为了不使中断服务程序的运行影响主程序的状态,把在中断服务程序中要使用的寄存器的内容压入堆栈保护执行中断服务程序恢复现场 压入堆栈的现场信息弹出恢复到原寄存器中。开中断与返回13三、中断优先级 解决中断优先级的方法:软件查询确定优先级查询程序的查询顺序决定了外设中断的优先级别的高低。优点:硬件简单,不需要改动硬件就可改变优先级顺序。缺点:实时

5、性差,尤其在中断源较多的情况下,由查转到相应的中断服务程序的入口地址时间较长。14IN AL,XX TEST AL,01H JNZ INT0 TEST AL,02H JNZ INT1 TEST AL,04H JNZ INT2 TEST AL,80H JNZ INT7 INTDB1寄存器INT0INT1INT7软件查询确定优先级15解决中断优先级的方法:简单硬件查询方式菊花链法 外设的中断优先级由其在链式排队电路中的先后顺序来决定。中断控制专用硬件方式使用一个专门的中断优先级控制器来解决中断优先级的排队管理。16菊花链优先级查询原理 P21317四、中断嵌套(多重中断) CPU执行优先级较低的中

6、断服务程序时,允许响应比他优先级更高的中断源请求,而挂起正在处理的中断。嵌套可多级,具体级数原则上不受限制,取决于堆栈深度。18第二节 8086/8088CPU的中断系统一、 8086/8088CPU的中断分类二、8086/8088CPU的中断优先权三、8086/8088CPU响应中断的过程四、中断向量和中断向量表五、8086/8088CPU如何获取中断类型号19一、8086/ 8088CPU的中断分类按中断源的不同,中断分为内部中断和外部中断。1、内部中断(软中断)指CPU执行某些特殊操作或由INT指令引起的中断 被零除操作或OF=1时执行INTO指令引起 使用DEBUG中的单步或断点设置操

7、作引起 执行INT n 指令引起20指外部芯片通过CPU的INTR引脚或NMI引脚发出中断申请引起的中断。当INTR上有高电平信号当NMI上有上升沿信号2、外中断(硬中断)8088GNDA14A13A12A11A10A9A8AD7AD6AD5AD4AD3AD2AD1AD0NMIINTRCLKGND最大模式(最小模式)VCCA15A16/S3A17/S4A18/S5A19/S6(HIGH)(SSO)MN/MXRDRQ/GT0(HOLD)RQ/GT1(HLDA)LOCK(WR)S2(IO/M)S1(DT/R)S0(DEN)QS0(ALE)QS1(INTA)TESTREADYRESET21 可屏蔽中

8、断 由INTR引脚引起的中断,称可屏蔽中断。 CPU是否响应INTR引脚上的中断请求取决于IF标志: IF=1,CPU响应INTR引脚上的中断请求 IF=0,CPU不响应INTR引脚上的中断请求 即当IF=0时,将INTR引脚上的中断申请屏蔽。 非屏蔽中断 由NMI引脚引起的中断,称非屏蔽中断。 当NMI引脚上产生上升沿信号,CPU必响应此中断请求,即NMI引脚上的中断请求不受IF标志的控制, IF不能屏蔽NMI引脚上的中断请求。22保留(ALT打印机)中断逻辑INTn指令INTO指令除法错误单步TF=1非屏蔽中断请求IR0IR6IR5IR4IR3IR2IR1IR7可编程中 断控制器(PIC)

9、8259AINTn4012CPUINTRNMI08090A0B0C0D0E0F系统定时器键盘保留(打印机)软盘串行通信接口保留(通信)彩色/图形接口8086/8088中断源23当有多个中断源同时产生中断申请时,CPU先响应优先权最高的中断源,再响应优先级较低的中断源。二、8086/8088CPU的中断优先权优先级 高 低 内中断 ( 除零,INT 指令,断点,INTO指令 ) 非屏蔽中断 可屏蔽中断 低 内中断( 单步 ) 24三、8086CPU响应中断的过程当中断源产生中断申请后,不论是内中断、非屏蔽中断,还是可屏蔽中断,只要满足响应条件,在执行完当前指令后,CPU内部硬件会自动完成下列响应

10、中断的过程: 获取中断类型号N 当前PSW的内容入栈 清IF、TF标志为0 当前CS的内容入栈 当前IP的内容入栈 取内存单元( 0 : N 4 )字内容送IP 取中断子程 取内存单元( 0 : N 4 + 2 )字内容送CS 入口地址 此时CS:IP指向中断程序的入口,开始执行中断程序。保存现场25内 存中断向量表0:0 3FFH1000:150h3000:200h0: N40: N4+20: 0000 、 、 0200h 3000h 、 、 、 MOV AX, 0 ADD AX, DX MOV DI, AX、 MOV BX,CX、 IRET、类型N中断子程 某中断源发申请中断,申请执行类型

11、号为N的中断子程响应中断前 SS:SP 响应中断后SS:SP 堆栈执行IRET后 (IP) (CS)(PSW)01501000(PSW)SS:SP (IP)=0200h(CS)=3000h0:3FFH0:026从中断子程返回断点处,靠的是执行中断子程最后的指令IRET,从堆栈中取出断点地址给CS:IP,继续执行被中断的程序。故中断子程最后应安排 IRET 指令。1000:150h3000:200h0: N40: N4+20: 0000 、 、 0200h 3000h 、 、 、 MOV AX, 0 ADD AX, DX MOV DI, AX、 MOV BX,CX、 IRET、响应中断前 SS:

12、SP 响应中断后SS:SP 堆栈执行IRET后 (IP) (CS)(PSW)01501000(PSW)SS:SP (IP)=0200h(CS)=3000h四、中断向量和中断向量表中断向量:中断服务程序的入口地址(首地址)逻辑地址含有段地址CS和偏移地址IP(32位)每个中断向量的低字是偏移地址、高字是段地址,需占用4个字节8088微处理器从物理地址000H开始,依次安排各个中断向量,向量号也从0开始256个中断占用1KB区域,就形成中断向量表27向量号为N的中断向量的物理地址N4288086/8088的中断向量表向量号255的CS值用户中断(向量号255)3FCH向量号255的IP值向量号2的

13、CS值非屏蔽中断(向量号2)008H向量号2的IP值向量号1的CS值单步中断(向量号1)004H向量号1的IP值向量号0的CS值除法错中断(向量号0)000H向量号0的IP值29中断向量求法若中断类型号为n,IP (4n,4n+1) CS (4n+2,4n+3)例1:中断类型号20,中断向量表地址从0段0080H开始的4个单元,80H(10H),81H(20H),82H(30H),83H(40H) ,则中断向量为?例1 结果: CS : IP中断向量为(4030H:2010H) 例2:在一个系统中,对应于中断类型号27H的中断处理程序放在2345H:7890H开始的内存区域,请计算相应的中断向

14、量表地址及内容。例2结果:0段:009CH009FH 存放90H、78H、45H、23H四、中断向量和中断向量表 30由三部分组成:专用中断(04)凡是8086/8088系统中统一规定的中断类型。保留中断27个(531)为系统开发所保留的中断类型。用户自定义中断(32255)中断向量表组成四、中断向量和中断向量表 31五、8086CPU如何获取中断类型号由前面介绍知,当中断源产生中断请求后,不论是内中断、非屏蔽中断,还是可屏蔽中断,只要满足响应条件,在执行完当前指令后,CPU内部硬件会自动完成响应中断的过程,共七个步骤而第一步就是获取中断类型号。不同的中断源,8086CPU获取中断类型号的方法

15、不同。32根据8086CPU对中断的分类,各中断获取类型号的方法33向量类型 INTACLKAD7AD0T1T2T3T4第 一 个中断响应周期T1T2T3T4第 二 个中断响应周期 可屏蔽中断响应周期时序 CPU从引脚 INTA 发中断响应信号, 接口芯片接收此信号,把中断类型号准备好;同时 ISRi=1,IRRi=0。 CPU再从引脚 INTA 发中断响应信号, 接口芯片接此信号后,将中断类型号送至数据总线上; CPU从数据总线获取中断类型号。34第三节 可编程中断控制器8259A 一、引言 二、8259A的内部结构和引脚及工作过程 三、8259A的编程四、8259A在IBM PC/XT系统

16、中的应用五、 8259A在 Pentium机中的应用35一、引言中断申请管理接口INT中断申请接口1网络接口2硬盘接口3软盘接口4打印机8088CPUINTRIF361. 向CPU的引脚INTR发中断申请信号当有多个外设同时发出中断请求时,能按照一定的优先级顺序,向CPU发出中断申请,使CPU能优先响应优先级最高的外部设备的中断申请。2. 送中断类型号 在CPU中断响应周期,针对不同外设的中断请求, 向CPU传送不同的中断类型号,使CPU执行相应的中断子程。中断申请管理接口的主要功能:在IBM PC机由8259A可编程中断控制器(PIC)来完成。37二、 8259A的内部结构和引脚及工作过程1

17、. 8259A的内部结构和引脚2. 8259A的工作过程381 8259A的内部结构和引脚 p270、272D7D0INTAINT中断请求寄存器中断屏蔽寄存器数据总线缓冲器IR0IR7读/写控制逻辑级联缓冲器比较器RDWRA0CSCAS0CSA1CAS2SP/EN优先权判别电路中断服务寄存器控制逻辑39(1) 中断控制中断请求寄存器IRR保存8条外界中断请求信号IR0IR7的请求状态Di位为1表示IRi引脚有中断请求;为0表示无请求中断服务寄存器ISR保存正在被8259A服务着的中断状态Di位为1表示IRi中断正在服务中;为0表示没有被服务中断屏蔽寄存器IMR保存对中断请求信号IR的屏蔽状态D

18、i位为1表示IRi中断被屏蔽(禁止);为0表示允许40(2) 与处理器接口 A0 RD* WR* CS*功能 0 1 0 0 1 1 0 0 0 0 1 0 1 0 1 0 1 1 0 1写入ICW1、OCW2和OCW3写入ICW2ICW4和OCW1读出IRR、ISR和查询字读出IMR数据总线高阻状态数据总线高阻状态41(3)中断级连一个系统中,8259A可以级连,有一个主8259A,若干个(最多8个)从8259A级连时,主8259A的三条级连线CAS0CAS2作为输出线,连至每个从8259A的CAS0CAS2每个从8259A的中断请求信号INT,连至主8259A的一个中断请求输入端IR主82

19、59A的INT线连至CPU的中断请求输入端SP*/EN*在非缓冲方式下,规定该8259A是主片(SP*1)还是从片(SP*0)动画示例42分两步: (1)处理外设中断申请,决定是否向CPU发中断申请信号。 (2)若发中断申请信号,且CPU响应,则在CPU中断响应周期送出中断类型号。2. 8259A 的工作过程43(1) 处理外设中断申请,决定是否向CPU发中断申请信号 中断屏蔽寄存器 IMR 决定 IRR 中的中断申请 是否进入优先级裁决器 PR。 IMR对应位为 0,允许中断申请进入优先级裁决器, 为 1,不允许进入,中断申请被IMR屏蔽。 中断申请寄存器IRR 锁存外部的中断申请。 若 I

20、R0IR7 引脚上有中断申请,则将 IRR 相应位置1 当前中断服务寄存器 ISR 记录CPU正在响应的中断。 ISR中的某位为1,表示CPU正在响应此级中断, ISR中的某位为 0,表示CPU没有或已响应完此级中断, 优先级裁决器PR 据新进入的中断申请和 ISR的内容, 决定是否发中断申请信号。 如果进入的中断申请比 ISR 中记录的中断优先级高, 则通过 8259A 的 INT 引脚向 CPU发出中断请求信号; 如果进入的中断申请不比 ISR 中记录的中断优先级高, 同级或低级,则不向 CPU 发中断请求信号。44 中断申请寄存器IRR 锁存外部的中断申请。 若 IR0IR7 引脚上有中

21、断申请,则将 IRR 相应位置1IORIOW总线数 据 线D0D7INTAA0片选译码A5A9CSA0RD INTAWRINTD0D7 ICW1 芯片控制 ICW2 中断类型号 ICW3 主从片关系 ICW4 方式控制000 0 0 0 0 0 ISR当前中断服务寄存器IR0IR1IR2IR3IR4IR5IR6IR7OCW1 中断屏蔽寄存器 IMR 00 OCW2 优先级、发EOI OCW3 特殊屏蔽设置PR优先级裁决器IRR中断申请寄存器000 0 0 0 0 0 10010100INTR1145 中断屏蔽寄存器 IMR 决定 IRR 中的中断申请 是否进入优先级裁决器 PR。 IMR对应位

22、为 0,允许中断申请进入优先级裁决器, 为 1,不允许进入,中断申请被IMR屏蔽。IORIOW总线数 据 线D0D7INTAA0片选译码A5A9CSA0RD INTAWRINTD0D7 ICW1 芯片控制 ICW2 中断类型号 ICW3 主从片关系 ICW4 方式控制000 0 0 0 0 0 ISR当前中断服务寄存器IR0IR1IR2IR3IR4IR5IR6IR7OCW1 中断屏蔽寄存器 IMR 00 OCW2 优先级、发EOI OCW3 特殊屏蔽设置PR优先级裁决器IRR中断申请寄存器100 0 0 0 0 1 10010100INTR46 当前中断服务寄存器 ISR 记录CPU正在响应的

23、中断。ISR中的某位为1,表示CPU正在响应此级中断, 即正在执行此中断源的中断子程;ISR中的某位为 0,表示CPU没有或已响应完此级中断, 即不在执行此中断源的中断子程IORIOW总线数 据 线D0D7INTAA0片选译码A5A9CSA0RD INTAWRINTD0D7 ICW1 芯片控制 ICW2 中断类型号 ICW3 主从片关系 ICW4 方式控制001 0 0 0 0 0 ISR当前中断服务寄存器IR0IR1IR2IR3IR4IR5IR6IR7OCW1 中断屏蔽寄存器 IMR 00 OCW2 优先级、发EOI OCW3 特殊屏蔽设置PR优先级裁决器IRR中断申请寄存器100 0 0

24、0 0 1 10010100INTR47 优先级裁决器PR据新进入的中断申请和 ISR的内容, 决定是否发中断申请信号。 如果进入的中断申请比 ISR 中记录的中断优先级高, 则通过 8259A 的 INT 引脚向 CPU发出中断请求信号; 如果进入的中断申请不比 ISR 中记录的中断优先级高,同级或低级,则不向 CPU 发中断请求信号。IORIOW总线数 据 线D0D7INTAA0片选译码A5A9CSA0RD INTAWRINTD0D7 ICW1 芯片控制 ICW2 中断类型号 ICW3 主从片关系 ICW4 方式控制001 0 0 0 0 0 ISR当前中断服务寄存器IR0IR1IR2IR

25、3IR4IR5IR6IR7OCW1 中断屏蔽寄存器 IMR 00 OCW2 优先级、发EOI OCW3 特殊屏蔽设置PR优先级裁决器IRR中断申请寄存器100 0 0 0 0 1 10010100INTR48(2) 若发中断申请信号,且CPU响应, 则在CPU中断响应周期送出中断类型号 CPU接收到 INTR上的中断申请信号后:如果 IF 标志为0,则CPU不响应此中断申请信号, 即中断申请被IF屏蔽。如果 IF 标志为1, 则处理完当前的指令后, 进入中断响应周期 通过 INTA 引脚发出两个负脉冲信号, 从数据总线上获取中断类型号, 进入中断响应的过程。49向量类型 INTACLKAD7A

26、D0T1T2T3T4第 一 个中断响应周期T1T2T3T4第 二 个中断响应周期 8088CPU中断响应周期时序50 将 ISR 中相应位置1,表示 CPU 响应此级中断,执行此中断源的中断子程。8259A在接收到第一个INTA中断响应信号后:001 0 0 0 0 0 ISR当前中断服务寄存器IR0IR1IR2IR3IR4IR5IR6IR7PR优先级裁决器IRR中断申请寄存器100 0 0 0 0 1 ICW1 芯片控制 ICW2 中断类型号 ICW3 主从片关系 ICW4 方式控制OCW1 中断屏蔽寄存器 IMR 00 OCW2 优先级、发EOI OCW3 特殊屏蔽设置10010100IO

27、RIOW总线数 据 线D0D7INTAA0片选译码A5A9CSA0RDWR INTAINTD0D7INTR01 把 IRR中对应的位清0,清除IRR中锁存的中断申请信号。51 通过数据线,将被响应申请的中断类型号送给CPU。类型号由ICW2提供,在初始化8259A时已设定好。8259A在接收到第二个INTA中断响应信号后:001 0 0 0 0 0 ISR当前中断服务寄存器IR0IR1IR2IR3IR4IR5IR6IR7PR优先级裁决器IRR中断申请寄存器100 0 0 0 0 1 ICW1 芯片控制 ICW2 中断类型号 ICW3 主从片关系 ICW4 方式控制OCW1 中断屏蔽寄存器 IM

28、R 00 OCW2 优先级、发EOI OCW3 特殊屏蔽设置10010100IORIOW总线数 据 线D0D7INTAA0片选译码A5A9CSA0RDWR INTAINTD0D7INTR01 CPU获得中断类型号后,进入CPU响应中断的过程, 执行中断子程,处理中断源申请的功能。52 取中断类型号N 当前PSW的内容入栈 清IF、TF标志为0当前CS的内容入栈 当前IP的内容入栈 取内存单元( 0 : N 4 )字内容送IP 取中断子程 取内存单元( 0 : N 4 + 2 )字内容送CS 入口地址 此时CS:IP指向中断程序的入口,开始执行中断程序。保存现场CPU响应中断过程:执行完中断子程

29、中最后一条指令IRET后,返回被中断处,继续执行被中断的程序。53三、8259A的编程8259A的编程结构8259A的工作方式8259的初始化命令字和操作命令字8259A的编程方法 544个初始化命令寄存器 ICW1、ICW2 ICW3、ICW4 3个操作命令寄存器 OCW1(IMR) OCW2、OCW3当前中断服务寄存器 ISR中断申请寄存器 IRR 8259A内部有9个 可读写的寄存器1. 8259A的编程结构 1 I3I4ICW1 芯片控制 ICW2 中断类型号 ICW3 主从片关系 ICW4 方式控制处理部分控制部分000 0 0 0 0 0 ISR当前中断服务寄存器PR优先级裁决器I

30、RR中断申请寄存器000 0 0 0 0 0 中断屏蔽寄存器 IMROCW2 10010100 00 01 OCW3OCW18259A中断控制器558259A有两个I/O端口地址A0=0 偶地址端口A0=1 奇地址端口 对 9个寄存器的读写 均通过这两个端口实现 写入数据的特征位 写入的先后顺序 区分是对哪个寄存器 进行操作根据 1 I3I4ICW1 芯片控制 ICW2 中断类型号 ICW3 主从片关系 ICW4 方式控制处理部分控制部分000 0 0 0 0 0 ISR当前中断服务寄存器PR优先级裁决器IRR中断申请寄存器000 0 0 0 0 0 中断屏蔽寄存器OCW2 10010100

31、00 01 OCW3OCW18259A中断控制器D0D7A0CSRDWR80111A0100A056(1) 初始化命令字(ICW1- ICW4) 决定8259A的工作方式 通常是在计算机系统启动时在初始程序设置, 一旦设定,一般在系统工作过程不再改变。例 开机后,BIOS将8259A初始化为: IR0IR7中断申请信号为上升沿触发方式; IR0IR7对应的中断类型号分别为08H0FH; 优先级IR0最高, IR7最低;(2) 操作命令字(OCW1,OCW2,OCW3) 在应用程序中设定,可以在初始化以后的任意时刻写入8259A,动态地控制CPU处理中断的过程(3) ISR和IRR存放当前825

32、9A的状态 通过读取 ISR 和 IRR 的内容,可了解当前8259A工作情况572 8259A的工作方式普通全嵌套方式特殊全嵌套方式自动循环方式特殊循环方式优先权固定方式优先权循环方式设置优先权方式普通中断结束方式特殊中断结束方式自动中断结束方式非自动中断结束方式结束中断处理方式屏蔽中断源方式普通屏蔽方式特殊屏蔽方式中断触发方式边沿触发方式电平触发方式数据线连接方式缓冲方式非缓冲方式58(1)设置优先权方式普通全嵌套方式8259A的中断优先权顺序固定不变,从高到低依次为IR0、IR1、IR2、IR7中断请求后,8259A对当前请求中断中优先权最高的中断IRi予以响应,将其向量号送上数据总线,

33、对应ISR的Di位置位,至到中断结束(ISR的Di位复位)在ISR的Di位置位期间,禁止再发生同级和低级优先权的中断,但允许高级优先权中断的嵌套特殊全嵌套方式优先权自动循环方式优先权特殊循环方式59(2)结束中断处理方式什么是8259A的中断结束?8259A利用中断服务寄存器ISR判断:某位为1,表示正在进行中断服务;该位为0,就是该中断结束服务。这里说明如何使ISR某位为0,不反映CPU的工作状态。60(2)结束中断处理方式自动中断结束方式普通中断结束方式配合全嵌套优先权方式使用当CPU用输出指令往8259A发出普通中断结束EOI命令时,8259A就会把所有正在服务的中断中优先权最高的ISR

34、位复位特殊中断结束方式配合循环优先权方式使用CPU在程序中向8259A发送一条特殊中断结束命令,这个命令中指出了要清除哪个ISR位61(3)屏蔽中断源方式普通屏蔽方式将IMR的Di位置1,则对应的中断IRi被屏蔽,该中断请求不能从8259A送到CPU如果IMR的Di位置0,则允许IRi中断产生特殊屏蔽方式将IMR的Di位置1,对应的中断IRi被屏蔽的同时,使ISR的Di位置062(4)中断触发方式边沿触发方式8259A将中断请求输入端出现的上升沿作为中断请求信号电平触发方式中断请求端出现的高电平是有效的中断请求信号63(5)数据线连接方式缓冲方式8259A的数据线需加缓冲器予以驱动8259A把

35、SP*/EN*引脚作为输出端,输出允许信号,用以锁存或开启缓冲器非缓冲方式SP*/EN*引脚为输入端若8259A级连,由其确定是主片或从片 643、 8259A的初始化命令字和操作命令字初始化编程8259A开始工作前,必须进行初始化编程给8259A写入初始化命令字ICW中断操作编程在8259A工作期间可以写入操作命令字OCW将选定的操作传送给8259A,使之按新的要求工作还可以读取8259A的信息,以便了解他的工作状态65(1) 初始化命令字ICW初始化命令字ICW最多有4个8259A在开始工作前必须写入必须按照ICW1ICW4顺序写入ICW1和ICW2是必须送的ICW3和ICW4由工作方式决

36、定流程D7D6D5D4D3D2D1D066ICW11LTIMSNGLIC4D7D6D5D4D3D2D1D0表示可以任意为1为0都可以(建议为0) 1只能为1,作为标志中断触发方式:LTIM1,电平触发方式LTIM0,边沿触发方式 规定单片或级连方式:SNGL1,单片方式SNGL0,级连方式是否写入ICW4IC41,要写入ICW4IC40,不写入ICW4,即ICW4规定的位全为067ICW2T7T6T5T4T3D7D6D5D4D3D2D1D0设置中断向量号T7T3为中断向量号的高5位低3位由8259A自动确定:IR0为000、IR1为001、IR7为11168ICW3S7S6S5S4S3S2/I

37、D2S1/ID1S0/ID0D7D6D5D4D3D2D1D0级连命令字主片8259A:Si1对应IRi接有从片;否则IRi没有连接从片从片8259A:ID0ID2编码说明从片INT引脚接到主片哪个IR引脚69ICW4000SFNMBUFM/SAEOIPMD7D6D5D4D3D2D1D0嵌套方式:特殊全嵌套方式(SFNM1)普通全嵌套方式(SFNM0)数据线的缓冲方式:缓冲方式(BUF1)非缓冲方式(BUF0) 主片/从片选择:主片(M/S=1)从片(M/S=0)中断结束方式:自动中断结束(AEOI1)非自动中断结束(AEOI0)微处理器类型:16位80 x86(PM1)8位8080/8085(

38、PM0)70初始化主片8259Amov al,11h;写入ICW1,多片,边沿触发out 20h,aljmp intr1intr1:mov al,08h;写入ICW2out 21h,aljmp intr2intr2:mov al,04h;写入ICW3out 21h,aljmp intr3intr3:mov al,1h;写入ICW4out 21h,al中断控制器的初始化程序段71初始化从片8259Amov al,11h;写入ICW1out 0a0h,aljmp intr5intr5:mov al,70h;写入ICW2out 0a1h,aljmp intr6intr6:mov al,02h;写入I

39、CW3out 0a1h,aljmp intr7intr7:mov al, 01h;写入ICW4out 0a1h,al中断控制器的初始化程序段72(2) 操作命令字OCW8259A工作期间,可以随时接受操作命令字OCWOCW共有3个:OCW1OCW3写入时没有顺序要求,需要哪个OCW就写入那个OCWD7D6D5D4D3D2D1D073OCW1M7M6M5M4M3M2M1M0D7D6D5D4D3D2D1D0屏蔽命令字内容写入中断屏蔽寄存器IMRDiMi对应IRi,为1禁止IRi中断;为0允许IRi中断。各位互相独立。74OCW2RSLEOI00L2L1L0D7D6D5D4D3D2D1D0R、SL和

40、EOI配合使用产生中断结束EOI命令和改变优先权顺序L2L0的3位编码指定IR引脚 75OCW30ESMMSMM01PRRRISD7D6D5D4D3D2D1D0ESMM、SMM设置中断屏蔽方式P、RR和RIS规定随后读取的状态字含义76(3) 读取状态字CPU可读出IRR、ISR、IMR和查询字A0为低,由OCW3中RR和RIS位设定读取IRR或ISR,由OCW3中P位设定读取查询字而A0引脚为高电平时读取的都是IMR查询字反映8259A是否有中断请求D7D6D5D4D3D2D1D077查询字IW2W1W0D7D6D5D4D3D2D1D0中断位I位为1,有外设请求中断W2W0的编码决定当前中断

41、请求的最高优先级78(4) 命令字和状态字的区别方法 利用读写信号区别写入的控制寄存器和读出的状态寄存器 利用地址信号区别不同I/O地址的寄存器 由控制字中的标志位说明是哪个寄存器 由芯片内顺序控制逻辑按一定顺序识别不同的寄存器 由前面的控制字决定后续操作的寄存器接口电路中常用的方法79(1)通过中断屏蔽寄存器IMR的读写,设置中断屏蔽字(2) 通过OCW2操作命令寄存器,发中断结束EOI命令由于课时所限,只要求掌握如下编程:4. 8259A的编程方法8259A有多种工作方式,这些工作方式均可编程选择,使用相当灵活。80通过往奇地址端口写入IMR内容实现 对应位为0,允许该级中断申请进入 对应

42、位为1,禁止该级中断申请进入(1)设置中断屏蔽字IORIOW总线数 据 线D0D7INTAA0片选译码A5A9CSA0RD INTAWRINTD0D7 ICW1 芯片控制 ICW2 中断类型号 ICW3 主从片关系 ICW4 方式控制000 0 0 0 0 0 ISR当前中断服务寄存器IR0IR1IR2IR3IR4IR5IR6IR7OCW1 中断屏蔽寄存器 IMR 00 OCW2 优先级、发EOI OCW3 特殊屏蔽设置PR优先级裁决器IRR中断申请寄存器100 0 0 0 0 1 10010100INTR81 新增允许 IR2 的中断申请 IN AL, 21H ;读入原IMR的内容 AND

43、AL, 1111 1011B ;D2=0,允许IR2的中断申请 OUT 21H, AL ;写入IMR 禁止 IR4 的中断申请 IN AL, 21H ;读入原IMR的内容 OR AL, 0001 0000B ;D4=1,禁止IR4的中断申请 OUT 21H, AL ;写入IMR例 已知 IBM PC/XT系统中 8259A的奇地址端口地址为21H82设置完成后的结果:IORIOW总线数 据 线D0D7INTAA0片选译码A5A9CSA0RD INTAWRINTD0D7 ICW1 芯片控制 ICW2 中断类型号 ICW3 主从片关系 ICW4 方式控制000 0 0 0 0 0 ISR当前中断服

44、务寄存器IR0IR1IR2IR3IR4IR5IR6IR7OCW1 中断屏蔽寄存器 IMR 00 OCW2 优先级、发EOI OCW3 特殊屏蔽设置PR优先级裁决器IRR中断申请寄存器100 0 0 0 0 1 10010000INTR83(2) 发中断结束命令 EOI由 8259A 的工作过程可知:ISR中的内容是优先级裁决器进行裁决的重要依据 CPU响应某级中断后,8259A自动将ISR的对应位置1,如果CPU已执行完中断子程,而ISR中的对应位仍为1, 8259A的优先级裁决器仍会据ISR的内容做裁决, 从而会屏蔽同级或低级的中断申请。在中断响应后,对 ISR中相应位的清0很重要, 它是8

45、259A认为中断结束的标志。84IORIOW总线数 据 线D0D7INTAA0片选译码A5A9CSA0RD INTAWRINTD0D7 ICW1 芯片控制 ICW2 中断类型号 ICW3 主从片关系 ICW4 方式控制101 0 0 0 0 0 ISR当前中断服务寄存器IR0IR1IR2IR3IR4IR5IR6IR7OCW1 中断屏蔽寄存器 IMR 00 OCW2 优先级、发EOI OCW3 特殊屏蔽设置PR优先级裁决器IRR中断申请寄存器100 0 0 0 0 1 10010100INTR85一、 初始化8259A时,设置8259A工作方式为自动清0方式, 则在CPU响应中断后,硬件自动将I

46、SR的对应位清0。清 ISR 内容的方法有两种:二、 初始化8259A时,设置8259A工作方式为非自动清0方式, 需在中断子程中,通过软件方式清0。方法是:通过往OCW2写入20H实现,即由偶地址端口写入: EOI00100000特征位,表示对OCW2操作20H86编程在中断子程 IRET 返回前,发中断结束命令EOI例 已知 IBM PC系统中, 8259A的偶地址端口地址为 20H; BIOS 初始化 8259A 时,设置 8259A 工作方式为非自动清 0 方式。intsub PROC 、 、 、 MOV AL, 20H ;将中断结束命令字20H 送AL OUT 20H, AL ;写入

47、OCW2中 IRET ;中断返回 intsub ENDP87四、8259A在IBM PC/XT系统中的应用18259A与系统的连线。2BIOS初始化程序对8259A的设置。881与系统的连线+5V CLKRESETREADYMN/MXVCCRDQS0QS1LOCKTESTHIGHNMIGNDGND地址锁存器8282(两片)STB 数据收发器OE 8286T MRDC 8288 MWTC 总线 IORC控制器 IOWC INTA8259A及有关电路DT/RDENALE地址总线数据总线控制总线PC总线A15A8S6S3/A19A16AD7AD08088CPUS0S1S2INTRRQ/GT0RQ/G

48、T1内存I/O接口注意:8259A在连线中的位置89 8259A的片选地址范围为 20 3F H 偶、奇端口地址通常取用20H、21H方 波键 盘保 留串 口2 硬 盘软 盘打印机IOW18.2HzA0CS8259A总线A0数 据 线 IORRDWR片选译码IR0IR1IR2IR3IR4IR5IR6IR7A5A9D0D7D0D7VccSP/ENCA0CA1CA2GND+ 5V203FH用于多片8259A级连情况INTAINT INTA INTR串 口1 90IR0 接一个频率为18.2Hz的方波; 若CPU对该申请给予响应, 则每秒执行18.2次该申请对应的中断子程。 IR1接键盘接口发出的中

49、断申请; 每按下一键,若CPU对该申请给予响应, 则执行一次该申请对应的中断子程。 IR2IR7通过系统总线引出, 对应引脚信号为IRQ2IRQ7。18.2Hz时钟信号 8259A的8个中断申请与外设的连接918088INTR主 板IF键 盘18.2Hz 方波8259AINT中断屏蔽寄存器键盘中断申请IR1IR2IR7IR0当前中断服务寄存器键盘接口IRQ2IRQ7PC总线外设接口外设08h09h0Ah0FhIBM PC/XT微机可屏蔽中断响应过程示意图92IBM PC/XT总线插槽引脚信号GNDRESET +5VIRQ2-5VDRQ2-12V+12VGNDMEMWMEMRIOWIORDACK

50、3DRQ3DACK1DRQ1DACK0CLOCKIRQ7IRQ6IRQ5IRQ4IRQ3DACK2T/CALE+5VOSCGNDI/O CH CKD7D6D5D4D3D2D1D0I/O CH RDYAENA19A18A17A16A15A14A13A12A11A10A9A8A7A6A5A4A3A2A1A0 93 IR0IR7 中断申请信号为上升沿触发方式; IR0IR7 对应的中断类型号分别为08H0FH; 优先级IR0最高, IR7最低; 采用非自动结束方式, 需向OCW2发EOI中断结束命令, 清除ISR中的记录。2BIOS初始化程序对8259A的设置94IOWA0CS8259A总线A0数

51、据 线 IORRDWR片选译码A5A9D0D7D0D70AH0BH0CH0DH0EH0FH08H09H203FHSP/ENCA0CA1CA2GND方 波键 盘保 留串口2串口1硬 盘软 盘打印机18.2HzIR0IR1IR2IR3IR4IR5IR6IR7Vcc+ 5V用于多片8259A级连情况INTAINT INTA INTR95五、 8259A在Pentium机上的应用1. 连线2. 可屏蔽中断类型分配96从8259AIRQ8IRQ9IRQ10IRQ11IRQ12IRQ13 IRQ14IRQ15主8259AIRQ0IRQ1IRQ3IRQ4IRQ5 IRQ6IRQ7INT至CPUINT中断路由

52、器IRQ7IRQ6IRQ5IRQ4 IRQ3IRQ2ISA总线PCI总线PCI总线系统时钟键盘芯片组1. Pentium机中8259A的连线97要点:1. 中断系统由两片8259A ,一个中断路由器构成, 集成在芯片组中2. 从8259A的中断申请与主8259A的IRQ2相连 ISA总线上有6个中断申请,其中IRQ2连至从8259A的IRQ9 系统软件上,将IRQ9的中断向量指向IRQ2的中断向量3. 主8259A的端口地址为: 20H, 21H 8个对应的中断申请IRQ7IRQ0类型号为0Fh08h 从8259A的端口地址为: A0H, A1H 8个对应的中断申请IRQ15IRQ8类型号为7

53、7h70h4. 中断路由器(Interrupt Router) : 动态分配PCI上的中断申请到8259A中未被占用的中断上。982. Pentium机中的可屏蔽中断类型分配中断申请引脚IRQ0IRQ1IRQ2IRQ3IRQ4IRQ5IRQ6IRQ7IRQ8IRQ9IRQ10IRQ11IRQ12IRQ13IRQ14IRQ15中断类型号08h09h0Ah0Bh0Ch0Dh 0Eh0Fh70h71h72h73h74h75h76h77h哪个设备使用系统时钟(8254)键盘连接从8259COM2串口2COM1串口1 保留软盘控制器LPT1并口实时时钟(RTC)保留(软件指向0Ah类型)保留显卡鼠标数值

54、协处理器硬盘控制器保留99第四节 中断程序设计一、中断向量的保存、设置和恢复二、问题讨论一、中断向量的保存、设置1. 保存中断向量 (35H功能)入口参数 AL = 要保存向量的中断类型号N功能号 AH = 35H类型号 21H出口参数 BX = ( 0: N4 ) ES = ( 0: N4 +2 )实现功能 将类型号N 的中断向量保存在ES、BX中100方法一: 用堆栈保存中断向量MOV AL, 09H ;取中断向量 MOV AH, 35HINT 21HPUSH ES ;用堆栈保存PUSH BX 、 、101例 保存09H类型的中断向量(如何保存(ES ),(BX) )102方法二: 用变量

55、保存中断向量 save_09cs DW ? ;定义变量 save_09ip DW ? 、 MOV AX, SEG save_09cs MOV DS, AX MOV AL, 09H ;取中断向量 MOV AH, 35H INT 21H MOV save_09cs , ES ;用变量保存 MOV save_09ip , BX 入口参数 AL = 要设置向量的中断类型号N DS:DX = 中断子程的入口地址(中断向量) 功能号 AH = 25H 类型号 21H 出口参数 无 实现功能 将类型N的中断向量设置在向量表中, 即 ( 0: N 4) =类型N中断子程入口地址的偏移值 ( 0: N 4+2)

56、 =类型N中断子程入口地址的段值1032. 设置中断向量 (25H功能)104例1 设置中断子程Sound 的中断向量,类型号为60Hcode SEGMENT ASSUME CS:codestart: 、 MOV AX, SEG sound MOV DS, AX MOV DX, Offset sound MOV AL, 60H MOV AH, 25H INT 21H 、 INT 60H ;调用60H中断子程 、 MOV AH,4CH INT 21H ; 中断子程 sound PROC 、 、 、 IRET sound ENDP code ENDS END start二、问题讨论 中断嵌套问题1

57、05106 中断嵌套问题1. 嵌套的概念2. 内中断引起的嵌套3. 可屏蔽硬中断引起的嵌套4. 可屏蔽硬中断嵌套的条件CPU正在执行某一中断子程,又被其它中断源中断使CPU转去执行另一中断子程,这个过程叫中断嵌套107 1. 嵌套的概念中断子程序1中断申请CPU执行流程中断子程序2在中断子程中, 用INT指令调用中断子程,引起了中断嵌套, 这种嵌套就是内中断引起的嵌套。108 2. 内中断引起的嵌套CPU执行流程中断子程序n1中断子程序n2INT n1INT n2 内中断引起的嵌套不受 IF 和 8259A 的控制, 嵌套的层次受限于堆栈的大小。109在响应了某级可屏蔽硬中断后,又有新的可屏蔽中断申请发出,若满足响应条件,CPU

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论