第7章中断系统.ppt

上传人:本田雅阁 文档编号:3131007 上传时间:2019-07-14 格式:PPT 页数:133 大小:1.63MB
返回 下载 相关 举报
第7章中断系统.ppt_第1页
第1页 / 共133页
第7章中断系统.ppt_第2页
第2页 / 共133页
第7章中断系统.ppt_第3页
第3页 / 共133页
第7章中断系统.ppt_第4页
第4页 / 共133页
第7章中断系统.ppt_第5页
第5页 / 共133页
点击查看更多>>
资源描述

《第7章中断系统.ppt》由会员分享,可在线阅读,更多相关《第7章中断系统.ppt(133页珍藏版)》请在三一文库上搜索。

1、,第8章 中断系统,本章主要内容 中断的基本概念 8086/8088的中断系统 中断控制器8259A,中断的基本概念,本节主要内容 中断及中断源 中断处理过程 中断优先权管理,中断的意义,中断是CPU和外部设备交换数据的一种方式;是一种使CPU挂起正在执行的程序而转去处理特殊事件的操作 当外围设备准备好向CPU传送的数据或者外设已准备就绪接收CPU的数据,就向CPU发中断请求,或者计算机系统有异常事故要求CPU处理 这时, CPU暂停原程序的执行,启动中断服务程序,转去中断处理,处理完毕后,又返回原来的断点,继续执行原来的程序,中断的概念图示,轮询方式 中断方式:,与调用子程序的区别,由CAL

2、L指令引起 CPU能确切知道何时调用 只需将CALL指令的下一条指令的地址压入栈保存 需要传递的参数预先可知 用RET指令返回,由外设提出 CPU无法能确知何时中断 要完成中断周期内确定的各种操作后,才能去响应 运行服务程序所需要的参数预先不知 用IRET指令返回,中断源, 能够导致CPU产生中断的来源就是中断源;或者称中断源就是能够引起中断的事件 对于CPU来说,中断源有两类:硬中断源和软中断源 硬中断也称为外中断,是由外部的电路在CPU的引脚上产生的中断请求 软中断是在CPU执行程序过程中产生的中断请求;可以是一条软中断指令,也可以是因为程序运行出现某种问题而导致的软中断,CPU中断源的示

3、意图,开中断与关中断,外中断源又可以分为条件中断(也称为可屏蔽中断)和无条件中断(也称为不可屏蔽中断) 对于条件中断,要求CPU必须处于某种条件下,才可以响应中断。如果CPU处于可以响应条件中断的状态,称为开中断状态。如果CPU处于不可以响应条件中断的状态,称为关中断状态,关中断方法:IF=0 使用CLI指令 开中断方法:IF=1 使用STI指令,几个基本概念,中断源:引起中断的事件 断点:主程序被打断的位置 中断服务程序 :中断源的响应和处理函数,中断系统的基本功能,管理和处理中断事务的系统称为中断系统 接受中断请求 实现中断、启动中断服务程序及中断返回 确定中断的优先级别,对多个中断进行排

4、队管理 实现中断优先处理,即实现优先权高的中断,可以中断优先权低的中断,中断处理过程,中断处理过程一般包括 中断请求 中断排队 中断响应 中断服务 中断返回,中断请求,中断请求信号:当中断源需要CPU为其服务时,中断源将发出的“中断请求”信号 请求中断的条件: 该外设本身的准备工作已完成 系统允许该外设发出中断请求 中断请求屏蔽:并不是所有的中断请求都可提交 中断屏蔽触发器输出端置“1”时,允许该中断(EI) 输出端置“0”时,则屏蔽该中断(DI),中断排队,中断排队就是按照一定的策略,在多个当前中断请求中,确定其中的一个中断源 中断排队的基本原则是: 先响应高优先级中断 同级别的先来先服务

5、单级中断处理和多级中断处理:单级中断处理不允许其他设备再中断服务程序;多级中断处理允许优先级高的中断中断优先级低的中断服务程序,单级中断处理和多级中断处理示意,为单级中断处理示意图 为多级中断处理示意图,中断响应,CPU给设备发出一个中断应答信号,进入中断响应周期 中断响应的工作任务: 关中断(不允许接收新的中断请求) 保存断点 保护现场(保存某些寄存器的值到堆栈) 形成中断服务程序的入口地址(将指令指针指向中断服务程序的入口),程序转向中断服务程序,中断服务与中断返回,中断服务是指CPU需要执行的中断服务程序 中断返回是指该运行结束后应返回原来的程序 中断服务程序由程序员根据中断源的操作事先

6、编制并存储,相关寄存器压栈 保护将在该服务程序中使用的寄存器中的原内容,中断服务程序的结构图,IF=1 表示在该服务程序运行过程中,该可以被中断而运行更高级别的其他中断服务程序,IF=0 恢复现场时,不允许再响应中断,以保证恢复的有序和正确,使用中断返回指令,结束中断服务,返回中断前的原程序,更详细的程序框架,入口地址:PUSH AX ;保护现场 PUSH BX PUSH CX PUSH DX PUSH SI PUSH DI PUSH SP PUSH BP STI ;开中断 标号 ;具体的中 断服务,CLI ;关中断 POP BP ;恢复现场 POP SP POP DI POP SI POP

7、DX POP CX POP BX POP AX STI ;开中断 IRET ;中断返回,中断优先级,在实际系统中一般有多个中断源,有时会出现有多个中断同时请求中断的情况,而CPU每次只能响应一个中断 为了能够有序的处理多个中断申请,所以要有中断优先级的规定 如果CPU在执行中断服务程序时,又接受了新的中断申请,就会打断正在执行的中断服务程序,为新的中断源服务。这种在中断服务过程中,又接受新的中断申请并为之服务的情况,称为中断嵌套。有了中断优先级可以使得中断嵌套有序的进行,中断优先权管理, 中断优先权管理就是判别和确定各个中断源的中断优先权,决定首先响应哪个中断请求 实现中断优先权的判别,一般有

8、软件和硬件两种方法,软件方式确定中断优先权,软件法是在CPU接受多个中断请求后,用软件查询的方法,确定哪个中断源首先被查询到;先被查询的先响应; 中断被查询的次序就是优先权的高低次序; 该次序需要程序员在编写中断服务程序时,通过查询来确定,软件查询确定中断级别的接口示意,假设有8个外设中断源;存放在I/O端口中;已经约定A外设的级别最高,H的最低;他们的状态或1或0(1为有请求) 只要有请求,即可通过或门向CPU请求 此时,CPU将通过查询,决定先响应哪一个中断请求,软件查询中断的程序 IN AL,80H ;端口80H的内容送AL TEST AL 80H ;测试AL的最高位 JNZ ASEV

9、;对A的服务程序标号 TEST AL,40H JNZ BSEV ;对B的服务程序标号 TEST AL 01H JNZ HESV ;对H的服务程序标号,软件方式确定中断优先权,已设置A的级别最高 从A到H依次查询 先查询到的先响应,软件查询流程图,硬件方式确定中断优先权,用硬件方式实现中断优先权的判别 常用的硬件电路有:中断优先权编码、链式优先权排队电路及专用硬件电路等 广泛使用8259A控制器,硬件方式确定中断优先权的例,高优先级中断的三态缓冲器连接到数据总线。,小结,中断的概念 中断源、断点、中断服务程序 中断处理的一般流程 中断请求-中断优先级判别-中断响应-断点现场保护-中断处理程序-断

10、点现场恢复-中断返回 中断优先级 优先级判别方法、中断屏蔽、中断嵌套,8086/8088的中断系统,本节主要内容 8086/8088的中断指令 8086/8088的中断分类 中断向量表 8086/8088的中断处理过程,8086/8088的中断指令,8086/8088提供了3条中断操作指令 1.中断指令 INT n 2.溢出中断指令 INTO 3.中断返回指令 IRET,中断类型码一共256个;取值为0-255,或00H-0FFH; 一个唯一的中断类型码标记一种中断服务程序,INTO指令检查溢出标志OF,如果OF=1,则启动一个中断号为4的中断过程,如果OF=0,不做任何操作。INTO指令一般

11、安排在有符号数算术运算指令后面,用于进行溢出检查。 IMUL DX ;乘法指令 INTO ;若发生溢出,则启动INT 4中断服务处理 MOV RESULT,AX MOV RESULT+2,DX,结束服务程序返回原程序,CLI :关闭中断(将标志寄存器FLAGS的IF位置0); STI :开启中断(将标志寄存器FLAGS的IF位置1); 其中,CLI、STI以及IRET可用于硬件中断控制,INT n、INTO为8086/8088的软件中断调用指令。,8086/8088的中断指令,SP,IP,CS,FLAG,中断返回后,中断指令的执行过程中涉及的堆栈操作,IPL,IPH,CSL,CSH,FLAGL

12、,FLAGH,IPL,IPH,CSL,CSH,FLAGL,FLAGH,SP,SP,SP,8086/8088的中断分类,8086/8088的中断系统可以处理256种不同的中断 8086/8088中断源可分为: 软中断(也称内部中断) 硬中断(也称外部中断) 可屏蔽中断(即条件中断) 不可屏蔽中断(即无条件中断),8086/8088的内部中断,内部中断也称为软中断 它是由CPU执行某些指令或CPU执行程序中某些错误引起的中断 除单步中断外,其他的内部中断都是非屏蔽中断,8086/8088的内部中断,除法错中断-类型码为0 CPU在执行除法指令DIV或IDIV时,若发现除数为0或商超过了寄存器所能表

13、达的范围,就立即产生了一个类型为0的内部中断 CPU不需要执行任何指令,直接地自动地响应该中断,转去执行“除法错误中断服务处理程序”,8086/8088的内部中断,单步中断类型码为1 单步中断与类型0中断相似,没有对应的中断指令 它是由CPU对状态标志寄存器中的单步标志TF的测试而产生的 当CPU测试到TF1,自动产生单步中断;此时,每执行一条指令,就会产生一个中断 中断服务程序的功能一般是显示此时的运算结果及了解系统的信息提示,8086/8088的内部中断,断点中断类型码为3 执行 INT(3) 指令就会产生一个类型为3的内部中断,也称为断点中断 它和单步中断类似,断点中断也是8086808

14、8提供给用户的一个调试手段,一般用在调试程序中 断点中断与单步中断不同在于:单步中断每执行一条指令中断一次;断点中断是程序运行到预先设置的断点处,中断一次;设置断点就是在此处加一个INT指令,8086/8088的内部中断,溢出中断类型码为4 溢出中断是由CPU执行一条INTO指令实现的,当OF1时,执行 INTO 就会进入类型码为4的内部中断;其中断服务程序一定是处理溢出错误,内部中断,8086/8088的内部中断,软件中断-类型码为n 当执行INT n 指令时,形成软件中断,中断类型码由指令提供 该指令可设置在程序的任何地方,从执行功能上来说,它与段间调用子程序类似,使用更加方便。用户只要知

15、道中断号,不用知道具体的中断程序地址。 它将状态标志寄存器与断点一起推入堆栈,并从中断向量表中取出中断服务程序(相当于子程序)的入口地址,内部中断问题,内部中断与CPU 正在运行的程序是同步的;有些还是程序的组成部分 故有人称他们为“程序运行异常”,而不把他们以“中断”对待 外部中断是“异步”的,事先一般不可知;而且由外设提出请求,8086/8088的外部中断,外部中断通过外部的硬件设备产生 由送至CPU引脚NMI和INTR上的请求信号引起中断 外部中断分为非屏蔽中断和可屏蔽中断,非屏蔽中断(NMI) 非屏蔽中断请求由NMI引脚送入,它不能被屏蔽,即不受标志IF状态的影响,在当前指令执行完后,

16、CPU就必须响应 非屏蔽中断类型码固定为2,外部中断,非屏蔽中断有以下几个特点: 不受内部中断允许触发器及状态标志IF的影响 外部通过非屏蔽中断引脚NMI提出请求 非屏蔽中断主要用于处理系统的意外和故障 上升沿触发(边沿触发),外部中断,可屏蔽中断 可屏蔽中断请求由INTR引脚送入,CPU是否响应,取决于标志寄存器中的中断允许标志lF的状态 电平触发;必须“长时间”保持,直至CPU响应 若IF0,表示中断禁止,CPU不响应;若IF1,表示中断允许,CPU可以响应 进入中断响应总线周期,CPU发出中断响应信号INTA,并从数据总线获取中断源的中断类型码,选择并进入中断服务程序,外部中断,可屏蔽中

17、断INTR请求,有两个控制条件决定是否响应 第一条:中断请求是否被屏蔽,对应于8259A中断屏蔽触发器 IMR的输出状态;若为0,则允许中断;若为1,则屏蔽中断 第二条:CPU是否允许中断,即标志寄存器中位IF是否等于1,外部中断,8086/8088中断优先级,中断向量的意义 中断服务处理程序的入口地址(首地址);它包含段地址和偏移地址两个部分 中断向量占用4个字节;低地址存放中断处理程序的入口偏移地址,高地址存放其段地址,中断向量表,中断向量表的意义 8086/8088微处理器规定:从物理地址00000H开始,依次安排存放各个中断向量,形成一个特殊的存储区域,称为中断向量表;在表中,各中断向

18、量的存放顺序按中断类型码排列,并约定从0开始 256个不同类型的中断向量将占用1KB区域;中断向量表建立在内存空间中最低1K地址,地址从00000003FFH,中断向量表,中断向量表,中断向量在中断向量表中的存放地址称为中断向量地址指针 中断向量指针由CPU采用将“中断类型码乘于4”的方式确定并管理 CPU将依据该指针从中断向量表中取出两个字分别送入IP和CS 中断类型码联系着中断向量和中断向量地址指针,中断向量表,例如:对于中断类型码为24H的中断源 其中断向量地址指针为 24H 40090H 即在0000:0090H开始的单元依次存放该中断源的中断服务程序的人口地址 若00090H0009

19、3H中的内容分别是00H、46H、A4H、3BH,则该中断源的中断服务程序入口地址为 3BA4H:4600H,中断向量表,同样: 若中断类型码42H的中断向量为 5678H:1234H 则中断向量表中 从00108H0010BH这4个单元内应依次存放34H、12H、78H、56H,中断类型码的意义,CPU根据中断类型码,确定向量指针,到中断向量表中取出中断服务程序的入口地址,实现程序执行顺序的跳转 不同的处理器,对于类型码的分配是不同的,IBM PCXT机的中断类型号的安排,IBM PCXT机的中断类型号的安排,编制好中断服务程序后,给中断服务程序安排了存储空间,还须将它的入口地址按照中断类型

20、码的顺序,置入中断向量表中;称为中断向量表的设置 当中断到来时,CPU才会根据中断类型码,自动取出中断向量,转入中断服务程序中 系统提供的服务程序的设置由系统自动完成;用户自定义的服务程序的中断向量应由用户用程序写入,中断向量表的设置,中断向量表的两中设置方法,向中断向量表置入中断向量的方法 用传送指令实现 用DOS的系统功能调用,INT 2lH实现,例:假设某中断服务程序的入口地址为 INTSUB,中断类型码为40H;试用传送指令设置中断向量表,中断向量表的设置,VECTAB SEGMENT AT 0000 ;设置连接方式 ORG 0100H ;对应类型码40H ADDRP DW 2 DUP

21、(?) VECTAB ENDS CODE SEGMENT CLI ;关中断 PUSH DS ;保护现场 MOV AX,VECTAB MOV DS,AX ;指定段基址为 0000 MOV ADDRP,OFFSET INTSUB ;存放中断向量 MOV ADDRP+2,SEG INTSUB POP DS ;恢复现场 STI ;开中断 CODE ENDS,假设中断号为40的中断服务程序地址为0835H,编写程序将该中断向量写入到中断向量表中。 40号中断的中断向量表地址为 4*40 = 00A0H,因此 00A0H存放0835H,00A2存放0000H。 【书上P180有误】 MOV BX,0A0H

22、 MOV AX,0835H MOV ES:BX, AX MOV AX,00H MOV ES:BX+2,AX,中断向量表的设置,25H功能调用方法,设置中断向量表 执行调用前需预置参数 1)AH中预置功能号25H; 2)AL中预置中断类型码; 3)DS和DX中预置中断服务程序的入口地址(段地址和偏移地址分别置入DS和DX) 预置完以上参数后,执行INT 21H指令就可把中断服务程序的入口地址置入中断向量表中适当的位置,中断向量表的设置,例8-4 设中断服务程序的入口地址为INTSUB,中断类型码为70H,则用下列指令段可设置中断向量,中断向量表的设置,PUSH DS MOV AX,SEG INT

23、SUB MOV DS,AX LEA DX ,INTSUB MOV AL,70H MOV AH,25H INT 21H POP DS,35H功能调用,读取中断向量表 执行调用前需预置参数 1)AH中预置功能号35H; 2)AL中预置中断类型码; 执行INT 21H后: ES:读出的中断服务程序入口的段地址; BX:读出的中断服务程序入口的偏移地址,读取中断向量表,8086/8088的中断响应流程,按优先级查询中断源,获取中断类型号,中断响应,一个INTR中断请求被响应时,CPU实际执行的总线时序全过程如下: 1) 执行两个中断响应总线周期;被响应的中断源将在第二个中断响应总线周期中,由低8位数据

24、线送回一个单字节的中断类型码。CPU接收后,左移两位(4),作为中断向量的首字节地址,存入CPU内部暂存器,中断响应过程,2) 执行一个总线写周期,把状态标志寄存器FR推入堆栈 3) 把FR中的中断允许标志IF和单步标志TF置0,禁止中断响应过程中,其他可屏蔽中断的进入;同时禁止中断处理过程中单步中断 4) 执行一个总线写周期,把CS的内容推入堆栈 5) 执行一个总线写周期,把IP的内容推入堆栈,中断响应过程,6) 执行一个总线读周期,把中断向量前两个字节读入,送到IP 7) 执行一个总线读周期,把中断向量后两个字节读入,送到CS 对非屏蔽中断或内部中断,则由第2步开始执行,因为此时中断类型码

25、已确定无需从数据线上读取,中断响应过程,中断响应时序,小结,8086/8088中断指令 8086/8088中断分类:内部中断、外部中断,不同类型中断的响应时序 8086/8088的中断向量表:中断向量、中断向量表、中断向量指针、中断类型码、中断向量表的设置 8086/8088的中断处理流程,主要内容: 8259A的主要功能 8259A的结构及引脚功能 8259A的工作过程 8259A的工作方式(不要求) 8259A的初始化命令字和操作命令字 8259A的编程,中断控制器8259A,中断控制器的作用: 接收外部的中断请求 确认当前级别最高的中断请求,并送至CPU 的INTR引脚 当CPU响应中断

26、时,送出中断类型码 中断处理过程中屏蔽低优先权的中断请求,而允许高优先权的中断请求送出,实现中断的嵌套等,中断控制器8259A,8259A是一种可编程中断控制器 可用于管理Intel 8080/8085, 8086/8088, 80286/80386的可屏蔽中断 1) 每片8259A能管理8级中断;在不增加其他硬件电路情况下,采用9片芯片级联可构成主从式中断管理系统,可扩展至64级中断 2 )每级中断都可以被屏蔽或允许 3) 在中断响应周期,可提供中断源的中断类型码,供CPU查找获得相应的中断向量,8259A的主要功能,4) 允许并控制实现多级中断,即中断嵌套 5) 设置多种优先权管理方式、屏

27、蔽功能 6) 8259A为可编程芯片,用户可通过编程选择不同的工作方式,使用灵活、方便 7) 具有中断查询方式功能,供CPU以查询方式与各外设进行IO操作,8259A的主要功能,8259A的结构及引脚功能,1.内部结构 8259A的结构框图如下页图所示,它由8个基本部分组成:,8259A的结构框图,1.内部结构, 中断请求寄存器IRR 8位寄存器;寄存8个外界中断请求信号;IR0IR7分别对应他们的请求状态 Di位为1表示IRi引脚有中断请求;为0表示无请求 中断屏蔽寄存器IMR 8位寄存器;寄存对中断请求信号IR的屏蔽状态 Di位为1,表示IRi中断将被屏蔽 (禁止); 为0,则表示允许,优

28、先权判别器PR 8位寄存器;寄存经过IMR后的IRi 根据当时的规则和当前ISR中的状态,决定哪一个级别最高,决定送出哪一个IRi; 条件是PRi的级别ISRi的级别 送出当前级别最高的中断请求信号 中断服务寄存器ISR 8位寄存器;寄存正在被CPU响应着的中断的状态 Di位为1,表示IRi中断正在响应中;为0,则表示未被响应 置“1”,将被一直保持到该级中断处理过程结束为止,1.内部结构, 数据总线缓冲器 数据总线缓冲器为8位双向三态缓冲器,是8259A与CPU间数据传输的通道,CPU通过数据总线缓冲器向8259A送初始化命令和操作命令字,或是读取状态信息和中断类型码;D0D7最终与CPU低

29、8位数据总线连接 读写控制逻辑 读写控制逻辑的功能是负责接收CPU发来的控制信号,完成规定的写入命令操作以及读IRR、ISR和IMR的操作;同时接受片选信号和片内译码地址A0,1.内部结构,1.内部结构,8259A芯片有两个端口;只需要A0一个地址位片内寻址 对于16位的CPU ,通常将CPU的A1接到8259的A0端。在软件设计时,用连续的2个偶数地址寻址8259A端口的奇/偶地址, 级联缓冲比较器 级联缓冲比较器用于实现8259A的级联,构成主从式中断管理系统,使中断源由8级扩展到最多为64级 级联时,各片CAS0CAS2对应相连;对于主片而言,经过比较,确定并输出级联设备的编码,选中对应

30、的从片;对于从片,接受来自主片的设备编码,1.内部结构,1.内部结构, 控制逻辑 控制逻辑根据CPU编程设定的工作方式, 产生片内控制信号,控制片内的工作方式; 根据IRR、IMR的内容和PR判断结果,向 CPU发出中断请求INT;并接受来自CPU 的中断响应信号INTA,中断请求寄存器IRR接收外部的中断请求并锁存 如IRi =1,表示第i个端子有中断请求,中断屏蔽寄存器IMR内容决定是否让它进入优先权判别器PR,若IMR中对应的位为0,则中断请求进入PR, PR判别该中断请求是否是当前优先权最高的中断请求,是则8259A的INT为1,向CPU发出INTR请求信号,当CPU的中断允许标志IF

31、l,CPU响应中断,发回INTA信号给8259A, 8259A使中断服务寄存器ISR中相应位置1,并将中断请求寄存器IRR相应位清0;再送出中断类型码,若允许中断嵌套,则由8259A的优先权判别器PR判断IRR中新的中断请求优先权是否高于正在响应的中断,是则再次送出(INT1),向CPU发INTR请求信号,从而实现中断嵌套;此时ISR中将有两个(或以上)的中断服务状态置 1 当某个中断服务结束时,CPU送出中断结束命令,即将8259A中ISR的相应位复位,从而结束一个中断的服务,8259A的工作过程,复位即置0 置位即置1,8259A是具有28个引脚、双列直插式的芯片,8259A的引脚及功能,

32、在一个系统中,8259A可以级联,有一个主,若干个从 级联时,主8259A的三条级连线CAS0CAS2作为输出线,连至每个从8259A的CAS0CAS2 每个从8259A的中断请求信号INT,连至主8259A的某一个中断请求输入端IRi 主8259A的INT线连至CPU的中断请求输入端,中断控制器8259A的级联,PC/AT机两片8259级联硬件连接图,PC中的级联 例,PC机各级中断源及类型码,8259A的工作方式,8259A有多种工作方式 只做简介,普通完全嵌套,8259A的中断请求输入端引入的中断具有确定的优先权排队顺序 普通完全循环的原则是:高优先级的中断可进入低优先级,但低优先级不能

33、进入高优先级或同等优先级 适用于单片8259的情况,特殊完全嵌套,适用于8259A有级联的情况 特殊完全循环的原则仍然是:高优先级的中断可进入低优先级,但低优先级不能进入高优先级或同等优先级 但在确定优先级别时,将综合考虑主片和从片上的相关中断 首先确定主片上个IRi的优先级别,高级别一定中断低级别的中断;其次还要考虑从片上的各IRi的优先级别,同一片上的高级别中断可以中断低级别中断 由于从片上的各级中断对主片而言,都是同级别的,所以该种工作方式可以实现“同级别中断的相互中断”,特殊完全嵌套,假如某系统为级联方式,主片设置为特殊完全循环方式 接在主片IR3上的从片比接在IR4上的从片具有高的优

34、先权 主片上IR0,IR1,IR2的单级中断比从片中各IRi具有更高优先级别;当然IR5 IR6 IR7就低 IR3中的高级别中断,就可以中断IR3中低级别的中断,特殊完全嵌套例,从8259A发来的新的申请可以打断前面的中断服务,固定优先权与循环优先权,固定优先权是指中断请求IR0IR7的优先级别是固定不变的,使得从IR0引入的中断总是具有最高优先权, IR7的级别最低 在某些情况下,我们需要能改变这种优先级别,这时,可采用“循环优先权方式” 在这种方式下,从IR0IR7引入的中断轮流具有最高优先权,自动循环方式,当任何一级中断被处理完,它的优先级别就被自动改变为最低,而最高优先级分配给该中断

35、的下一级中断 例如:现正为IR3引入的中断服务,若服务完毕,IR3为最低优先级,IR4有最高优先级,IR5有次高优先级,依次排列,特殊循环方式,指定最低级别的循环方式 指定一个为最低级别,其他的也相应变化,改变个中断源的优先级别 例如:指定IR4为最低级别的中断服务,则IR5成为最高优先级,IR6有次高优先级,依次排列,数据线的缓冲方式,在级联的工作方式下,为了提高数据的传送能力,通常在8259和CPU数据总线之间增加数据缓冲器(如8286)芯片 此时, SP/EN 将作为8286输入输出的选通信号 主片或从片的选择确定该由ICW4决定,而不再由SP/EN确定 在非缓冲的级联方式下, 由SP/

36、EN确定主片或从片;主片的SP=1,从片的SP=0,中断结束方式,中断结束的意义 在中断服务程序结束后,用什么方式使ISR复位 由于存在中断嵌套现象,故需要不同的方式实现 分为自动EOI和非自动EOI 非自动又分为普通EOI方式和特殊EOI方式 非自动EOI方式下,需要在中断程序结束前,通过命令字OCW2,向8259传送中断结束命令,自动EOI方式,CPU在进入中断响应总线周期后的第二个中断响应信号结束时,自动将ISR寄存器相应置“1”位清“0” 中断结束时,不需要向8259A送中断结束EOI命令 问题:任何一级中断在执行中断服务程序期间,在8259A中都没有了标志;如果在此过程中,出现了新的

37、中断请求,则只要CPU允许中断,不管出现的中断级别如何,都将打断正在执行的中断服务而被优先执行 使用自动EOI结束方式,一般适用于不会发生同级中断或低级中断中断高级中断的情况,普通(一般)EOI方式,当任何一级中断服务程序结束时,给8259A传送一个EOI命令,8259A将ISR寄存器中级别最高的置“1”位清“0” 这种方式只有在当前结束的中断总是尚未处理完的级别最高的中断时,才能使用这种结束方式。如果在中断服务中修改过中断级别,则可能会产生混乱而不能采用这种方式,特殊EOI方式,在普通EOI方式的基础上,当中断服务程序结束给8259A发出 EOI命令的同时,将当前结束的中断级别(即IRi)也

38、同时传送给8259A 在这种情况下,8259A将ISR寄存器中指定级别的相应置“1”位清“0” 这种方式适合于任何情况下使用,中断屏蔽方式,意义:屏蔽中断源 普通屏蔽方式通过设置并传送命令字使IMR中的一位或几位置1,屏蔽对应的请求;屏蔽的策略可通过OCW1随时修改 特殊屏蔽方式-用于中断嵌套环境;允许低级别的中断进入到正在响应的高级别中断中,而响应低级别的中断;待该中断结束后,再继续原高级别的中断,在高级别中断响应过程中,用命令字OCW1将IMR中对应的位置1;之后,ISR中相应的位将“跟随”复位;此时,CPU仍在执行程序,但8259已无任何中断响应的“标记”,从而开放可较低级别的中断;即实

39、现了将正在响应的高级中断中断,而响应低级别的中断,中断触发方式,意义:CPU以何种方式接收到外设提交的中断请求信号 边沿触发-非屏蔽中断一般为边沿触发 电平触发-可屏蔽中断一般为电平触发 程序查询引入-CPU不是依靠NMI和INTR被动接收中断,而是主动查询8259的端口状态,并通过数据总线获得“状态字”,判断有无中断请求产生,8259A为可编程的中断控制器 工作状态和操作方式,可由接收CPU的命令字而确定和更改;这个过程称为“编程” 命令字有两大类: 初始化命令字:对8259A输入初始化命令字,使其处于预定的工作状态; 操作命令字:在响应中断的过程中,输入操作命令字,控制8259A执行不同的

40、操作方式,8259A的初始化命令字和操作命令字,MOV AL,13H OUT 20H,AL MOV AL,08H OUT 21H,AL MOV AL,0DH OUT 21H,AL,初始化命令字ICW最多有4个;均为8位 8259A在开始工作前,必须由CPU写入 必须按照ICW1 ICW4顺序写入 ICW1和ICW2是必须送的 ICW3和ICW4由ICW1工作方式,决定是否写入,1. 初始化命令字ICW,ICW1基本工作状态命令字,0,ICW1基本工作状态命令字例,指令执行后,对8259设置了基本工作状态 MOV AL,13H OUT 20H,AL 说出其具体意义,ICW2中断类型码基数命令字,

41、中断类型码基数是指IR0对应的中断类型码 ICW2的低3位是对应8个中断请求端的编号,从000到 111,由8259自行确定;高5位为该8259中8个中断请求类型码中的共有数码(相同的数码) 通过ICW2确定了IR0的中断类型码,同时也就自动地确定了本片上其他7个IRi对应的中断类型码,ICW2中断类型码基数命令字,CPU响应某个中断后,8259A将通过数据总线送出该中断类型码字节 高5位即为ICW2的高5位;低3位是由ICW2低3位确定的IRi中的某一个(000-111),ICW2中断类型码基数命令字,ICW2中断类型码基数命令字,由此可见,一片8259A上的8个中断源的8个中断类型码是连续

42、的 如:设置ICW240H,则8259A的IR0IR7 ,对应的8个中断类型码为:40H,41H,42H,43H,44H,45H,46H,47H,ICW3主片/从片标示命令字,ICW3是在级联方式下,才需要设置的初始化命令字 当ICWl的D1 位为0时,8259A在级联方式下工作,必须设置ICW3 而且主片和从片都需要分别设置ICW3,ICW3主片/从片标示命令字,说明该从片的INT引脚接到主片哪个引脚,ICW3主片/从片标示命令字,例:主片的 ICW300101011,表示IR5,IR3、IRl和IR0上连有从8259A 例:从片的 ICW300000101,则此从片的INT连至主片的IR5

43、上,ICW4工作方式初始化命令,当ICWl的D0位为1,才需要设置ICW4 设置的工作方式包括 数据传送方式-缓冲与非缓冲 级联下的优先权管理方式 中断结束方式 CPU的类型 该片8259A的主从方式,ICW4工作方式初始化命令,8259A的初始化,系统初始化时对8259A设置ICWlICW4称为8259A初始化 8259A的初始化流程图如下页图所示,8259A芯片的初始化流程图,8259A的初始化问题,1)系统中的每一片8259A都须按此流程进行初始化工作 2)写入4个初始命令字ICWlICW4的顺序固定不变 3) ICWl写入偶地址端口(A00);ICW2、ICW3和ICW4写入奇地址端口

44、;8259A会按照规定顺序自己区分ICW2ICW4 4) ICWl 中指明是否需设置ICW3、ICW4;级联方式下;主、从片都需设置ICW3,8259A的初始化,设8259A的端口地址为20H、21H。下面是该8259A的初始化程序段: MOV AL,13H OUT 20H,AL MOV AL,08H OUT 21H,AL MOV AL,0DH OUT 21H,AL,该8259A芯片的工作状态为:单片8259A,中断请求上升沿触发,中断类型码为08H,09H,0AH,0BH,0CH,0DH,0EH,0FH分别对应IR0IR7,普通全嵌套方式,缓冲方式,用于80868088系统中,普通中断结束方

45、式,初始化后,8259A进入设定的工作状态,可以随时接受操作命令字OCW OCW共有3个:OCW1 OCW3 写入时没有顺序要求,需要哪个OCW就写入哪个OCW,操作命令字OCW,OCW1中断屏蔽操作命令字,屏蔽命令字写入中断屏蔽寄存器IMR Di=Mi对应IRi,为1将禁止IRi中断;为0则允许IRi中断,OCW2优先权管理方式和中断结束方式操作命令字,设置优先级循环方式以及中断结束的方式 命令字中标志位D3D4=00 写入偶地址端口,即A0=0 设置循环方式位D7:1为循环优先权,0为固定循环 设置中断结束命令位D5:1为非自动EOI,0为自动EOI 设置末三位的有效性位D6: 1时末3位

46、有效,对应特殊循环和特殊EOI工作方式 此时的末3位即为被指定的IRi的编号 0时末3位无效,对应自动循环和普通EOI的工作方式,OCW2优先权管理方式和中断结束方式操作命令字,OCW3特殊屏蔽方式和查询方式操作,作用:设置查询方式、设置或撤消特殊屏蔽方式、以及确定读取8259A中哪个寄存器当前状态 命令字中标志位D4D3=01 写入的端口地址:A0=0 设置查询方式:由D2定义 设置或撤消特殊屏蔽方式:由D6、D5 两位定义 确定8259A内部寄存器:由D1、D0 两位定义,OCW3特殊屏蔽方式和查询方式操作,0,A0,实际应用中,应先送入OCW1,确定被特殊屏蔽的IMi=1,然后送入OCW

47、3,将对应的中断服务中断,ICWl写入偶地址端口(A00),标志位为 1 ICW2、ICW3和ICW4写入奇地址端口(A01) 。8259A将按照规定顺序区分ICW2ICW4 8259A开始工作后,可以随时接受操作命令字 OCWl用于设置中断屏蔽,写入奇地址 OCW2用于控制中断结束、优先权循环等操作方式,写入偶地址 OCW3主要用于控制8259A的运行方式等。写入偶地址,小结,D4D3:这两个位恒为00,可作为OCW2的标志位 D4D3:这两个位恒为01,可作为OCW3的标志位 CPU可随时从8259A奇地址读取IMR内容,而不必先设置OCW3(即缺省方式);而在读IRR或ISR之前,必须发

48、出一个OCW3命令字,用以选择要读出的寄存器,小结,CPU 可由OCW3中P位(即 D2)置1,设定读取“查询字” “查询字”反映8259A是否有中断请求 步骤 向偶数端口发送OCW3(P=1),并RD=0 使用IN指令,从偶数端口读取到包含最高级别中断请求信息的“查询字” 响应该请求,并使ISRi置位,读取状态字,查询字,中断I位为1, 有外设请求中断,W2W0的编码 当前中断请求的 最高优先级,查询字的意义,可编程中断控制器8259A及其应用,例8-5 2片8259级联,从片的INT接主片的IR2 端口地址:主片20H、21H,从片A0H、A1H 主片和从片均采用边沿触发 主片采用特殊全嵌套方式,从片是一般全嵌套方式 采用非缓冲方式,主片接+5V,从片接地 主片的中断类型号为08H0FH,从片的中断类型号为70H77H 写出主8259A和从8259A的初始化程序段。,相应的初始化程序段如下: ICW1A EQU 20H ;主片端口地址 ICW2A EQU ICW1A+1 ICW3A EQU ICW2A ICW4A EQU ICW2A ICW1B EQU 0A0H ;从片端口地址 ICW2B EQU ICW1B+1 ICW3B EQU ICW2B ICW

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 其他


经营许可证编号:宁ICP备18001539号-1