收藏 分享(赏)

微机原理与接口技术——中断系统.ppt

上传人:精品资料 文档编号:10951384 上传时间:2020-01-26 格式:PPT 页数:146 大小:3.65MB
下载 相关 举报
微机原理与接口技术——中断系统.ppt_第1页
第1页 / 共146页
微机原理与接口技术——中断系统.ppt_第2页
第2页 / 共146页
微机原理与接口技术——中断系统.ppt_第3页
第3页 / 共146页
微机原理与接口技术——中断系统.ppt_第4页
第4页 / 共146页
微机原理与接口技术——中断系统.ppt_第5页
第5页 / 共146页
点击查看更多>>
资源描述

1、第七章 中断系统,2,掌握:,中断的基本概念 中断响应的一般过程 中断向量表及其初始化 8088/8086中断系统 可编程中断控制器8259A 中断调用,3,一、中断的基本概念,中断: CPU执行程序时,由于发生了某种随机的事件(外部或内部),引起CPU暂时中断正在运行的程序,转去执行一段特殊的服务程序(称为中断服务程序或中断处理程序),以处理该事件,该事件处理完后又返回被中断的程序继续执行,这一过程称为中断。,4,中断源,引起CPU中断的事件,发出中断请求的来源。,内部中断,外部中断,异常中断,软件中断,可屏蔽中断,非屏蔽中断,异常事件引起,中断指令引起,INTR中断,NMI中断,5,引入中

2、断的原因,提高数据传输率; 避免了CPU不断检测外设状态的过程,提高了CPU的利用率。 实现对特殊事件的实时响应。,6,中断系统,正确识别中断请求,实现中断响应、中断处理及中断返回; 实现中断优先级排队; 实现中断嵌套,中断系统是指实现中断功能的软硬件的统称。功能有:,中断系统的功能,实现中断及返回中断源发出中断请求,CPU决定是否响应:若响应,则保护断点和现场,转入相应中断服务程序,中断服务结束后,恢复现场和断点,继续执行原程序。,7,非预料事件是指事件发生的时间无法预知,即中断源何时产生中断不确定,是随机的。,中断源产生中断的随机性,使中断服务程序的执行也具有随机性,即何时执行中断服务程序

3、不是在程序中安排好的。,中断系统的功能(续),8,实现优先权排队 按各中断请求的重要程度排列CPU响应的次序称为中断优先级。即同时有多个中断请求到来时,CPU会首先响应和处理优先级别最高的中断请求。 中断优先级的实现可以用软件或硬件的办法。,中断系统的功能(续),9,实现中断嵌套: 当CPU在处理某一级中断时,若有高一级的中断请求,中断系统应能安排CUP暂时停止现行的中断处理,响应高一级的中断,中断系统的功能(续),10,11,二、外部中断响应的一般过程,中断请求 中断源识别及中断判优 中断响应 中断处理(服务) 中断返回,12,中断请求,中断请求信号应保持到中断被处理为止; CPU响应中断后

4、,中断请求信号应及时撤销。,NMI(非屏蔽中断) INTR(可屏蔽中断),13,中断源识别,软件查询法 中断矢量法 由中断源提供中断类型号,CPU根据类型确定中断源。,中断源识别及判优由硬件系统完成,14,中断判优,当有多个中断源同时提出请求时,需要确定首先响应哪一个中断源。 优先级法则 低优先级的中断程序允许被高优先级的中断源所中断 排队法则 先来先响应,中断嵌套,15,中断判优,软件判优 顺序查询中断请求,先查询的先服务 即先查询的优先级别高 硬件判优 链式判优、并行判优(中断向量法),16,中断响应,向中断源发出INTA中断响应信号; 关中断 保护硬件现场 将FLAGS压入堆栈 保护断点

5、 将CS、IP压入堆栈 获得中断服务程序入口地址,由硬件系统完成,17,中断处理,保护现场 执行中断服务程序 恢复现场 中断服务程序的特点: 为“远过程” 用IRET指令返回,18,中断服务子程序完成的工作,关中断,保护现场,保护断点,找入口地址 保护软件现场(参数) 开中断(STI) 中断处理 关中断(CLI) 恢复现场 中断返回,19,中断返回,执行IRET指令,使IP、CS和FLAGS从堆栈弹出如要实现中断嵌套,则在保护现场后,要执行开中断指令,恢复断点和硬件现场,中断处理过程流程,20,当前CPU正在进行某一优先权级别的中断源的处理; 有更高级别的中断源发出请求,且新中断源满足响应条件

6、; CPU中止当前的中断服务程序,保护断点和现场,转而响应高级中断这种多级中断的处理方式即为“嵌套”。某些中断系统对中断嵌套的层数有一定限制。,中断嵌套,21,高级中断源能中断低级的中断处理当CPU正在处理某个中断时,如果外部又有一个优先级别比本优先级别更高的中断请求,则可以实现中断嵌套。,22,中断嵌套,中断嵌套示意图,23,中断服务程序(用户自行编制):保护现场:保存CPU内部各寄存器的内容,以便在服务程序中使用; 开总中断:将IF置1,使CPU在中断服务期间仍能响应更高级的INTR请求; 具体处理:用户的中断服务 关总中断:将IF位清0; 恢复现场:将入栈保护的各寄存器内容依次弹出; 中

7、断返回:执行IRET指令,CPU将自动弹出给IP、CS、FLAGS,就可以接着执行被中断的原程序; 开总中断:再次将IF位置1,使返回后能够重新响应,24,25,7.2 8086中断系统,内部中断外部中断,异常中断软件中断,非屏蔽中断 可屏蔽中断,256个中断源,除法错中断 溢出中断 单步中断,根据8086内部的中断逻辑电路,各种中断源的优先权顺序为:被0除中断软件中断INTO NMI INTR 单步中断。,CPU内的中断逻辑,8086中断系统,26,中断类型码、中断向量表和中断向量,中断类型码:8086可以处理256个中断请求,每个中断请求均对应于惟一固定的类型码。被0除类型码是0,单步为1

8、;NMI为2;断点中断为3,溢出中断为4 等。 中断向量:即中断服务程序的入口地址,包括段地址(高字单元)和偏移地址(低字单元)。 中断向量表:存放中断向量的表,位于内存空间的最低地址单元,长1KB。共可容纳256个中断向量(25641024)。,27,中断类型码,一、中断类型码:8086可以处理256个中断请求。每个中断请求均对应于唯一固定的类型码。被0除类型码是0,单步为1; NMI为2;断点中断为3,溢出中断为4;等。,28,IBM PC/XT中断源的功能,INTR,BIOS 可调用,DOS 可调用,29,1、非屏蔽中断(NMI):不受中断标志位的控制,中断类型号为2,所以中断向量放在0

9、000:0008开始的4个单元中。NMI中断一般用于紧急情况的处理,不受中断标志位IF影响 。2、可屏蔽中断(INTR):受中断标志位的控制,IF=1,CPU才能响应INTR中断。CPU响应INTR中断时,往INTA引脚上发两个负脉冲,外设接到第二个负脉冲后,立即往数据总线上送出中断类型码,供CPU读取。,1、外部中断硬件中断,30,非屏蔽中断NMI,IBM PC/XT的NMI来源于三方面: 存储器奇偶校验错误PCK I/O通道奇偶校验错误IOCHCK 协处理器产生异常N.P.NPI 三种信号通过NMI屏蔽触发器,向CPU的NMI引脚送出; 系统上电之初,RESET信号先将NMI屏蔽触发器清0

10、。等系统自检完成之后,再写入控制字解除对NMI的屏蔽。,31,外部中断源的管理,多个外部硬件中断源共用一条INTR线时,要在程序中采取一定措施或用外部硬件解决中断源的优先权排列和多级中断的嵌套等。 中断优先权(优先级):中断优先权就是为每个中断源所确定的响应级别。 软件排序:CPU响应中断后,在程序中用查询的方法判定外设的中断请求。,32,外部中断源的管理,软件查询排序的特点是:查询次序即优先权排序,最先被询问的故障具有最高优先级;节省硬件;修改方便,只要改变程序中的查询次序即可;由询问转至真正的服务程序入口时间长,在中断源较多的情况下执行速度较慢。 硬件排序:采用优先权的编码电路,对各种外部

11、硬中断进行排队。还有菊花链式硬件排序电路,以及中断控制集成芯片8259A,33,34,2、内部中断软件中断,内部中断指由指令的执行或软件对标志寄存器中某个标志的设置产生的中断,专用中断指令中断,内部中断的种类,(1)除法出错中断 类型号为00H,除法出错中断既不是外部硬件产生,也不是用软件指令产生,而是CPU自身产生的,因此0型中断没有对应的中断指令,即指令系统中没有INT 0这条指令。,35,36,对单步中断要注意三点: 一、所有类型的中断在其处理过程中,CPU会自动地把标志寄存器FLAGS压入堆栈,然后清除TF和IF。因此当CPU进入单步中断处理程序时,就不再处于单步工作方式,而以正常方式

12、工作。只有在单步处理结束时,从堆栈中弹出原来的标志,才能使CPU又回到单步方式。(IF=1, TF=1) 二、通常程序编制好后,在DEBUG调试程序时可使用单步中断检查程序,是通过跟踪命令TF来实现单步运行。,(2)单步中断(陷阱中断) 类型号为01H,37,三、8086/8088指令系统中没有设置或清除TF标志的指令,但指令系统中的PUSHF和POPF为程序员提供了置位或复位TF的手段。置位和复位TF的程序段如下所示:,(2)单步中断(陷阱中断) 类型号为01H,内部中断的种类,置位TF标志(D8=1) PUSHF POP AX OR AX, 0100H PUSH AX POPF,;复位TF

13、标志 PUSHF POP AX AND AX, 0FEFFH PUSH AX POPF,(2)单步中断(陷阱中断) 类型号为01H,38,内部中断的种类,39,(3) 断点中断 类型号为03H,设置断点实际上是把一条断点指令INT 3插入程序中,CPU每执行到断点处的INT 3指令便产生一个中断。,(4)溢出中断 类型号为04H,在执行溢出中断指令INTO时,若标志寄存器FLAGS中的溢出标志OF=1,则产生一个类型号为4的内部中断,称为溢出中断。,内部中断的种类,对带符号数来说,溢出就意味着出错(加、减运算),一旦产生应立即发现,而CPU并不知道当前处理的数据是无符号数还是带符号数,只有程序

14、员才明确这一点。因此通常在带符号数的加、减法运算后面总是跟着INTO指令,40,(4)溢出中断 类型号为04H,41,如下面的指令用来测试加法的溢出: ADD AX ,VALU INTO,当标志寄存器的OF=0时,则INTO指令不产生中断,CPU继续运行原程序; 当OF=1时,进入溢出中断处理程序,打印出一个出错信息,在处理程序结束时,不返回原程序继续运行,而是把控制交给操作系统。,(4)溢出中断 类型号为04H,42,(5) 指令中断,在8086/8088的指令系统中,当CPU执行中断指令INT n时,也能形成内部中断,其中n在理论上可取值0255。当n0、1、3、4时,就是上述的四种内部中

15、断。,内部中断的种类,内部中断的特点,(1) 除单步中断以外,所有内部中断都不能被屏蔽。 (2) 所有内部中断不从外部接口中读取中断类型号也不发送中断响应信号,即不执行中断响应的总线周期。 (3) 指令中断没有随机性,外中断是随机性的。指令中断是由程序中指令引起的,指令位置事先已知。外中断是随机性的,由I/O设备引起,何时引起事先未知。,43,44,(4) 除单步中断外,所有内部中断的优先权都比外部中断的优先权高。,内部中断的特点,8086中断的优先级别:,内部中断(单步中断除外),非屏蔽中断,可屏蔽中断,单步中断,IBM PC/XT中断源的功能,INTR,BIOS 可调用,DOS 可调用,4

16、5,中断向量和中断向量表,一、中断向量:中断服务程序的入口地址,包括段地址(CS, 存放于高4字节单元)和偏移地址(IP, 存放于低4字节单元)。 二、中断向量表:存放中断向量的表格。位于内存空间的最低地址,长度1KB,可容纳256类中断向量(25641024)。中断号与中断服务程序入口地址的连接表,46,中断向量和中断向量表,47,48,中断向量表的初始化,将用户自定义的中断服务程序入口地址放入向量表 注意点: 向量表所在的段地址=0 存放子程序入口的单元的偏移地址=n4,中断向量的设置方法,用三种方法来为中断类型N设置中断向量,1) 直接装入法 MOV AX, 00H MOV DS, AX

17、 MOV BX, N*4;中断号BX MOV AX, OFFSET NEWINT ;中断服务程序偏移地址 MOV WORD PTR BX,AX;装入偏移地址 MOV AX, SEG NEWINT;段基址 MOV WORD PTR BX+2,AX;装入段基址,NEWINT PROC,IRET NEWINT ENDP,、,、,49,中断向量的设置方法,2) 使用串送存指令装入法 CLI; 关中断 MOV AX, 0 MOV ES, AX ;ES=0 MOV DI, N*4 ;中断向量指针 MOV AX, OFFSET NEWINT ;偏移地址 CLD; DF=0,增地址 STOSW; 存串指令 A

18、XDIDI+1,再DI+2 MOV AX, SEG NEWINT; 段基址 STOSW; 存串指令 AXDI+2DI+3 STI; 开中断,50,中断向量的设置方法,3) 使用DOS功能调用设置中断向量设置中断向量是把由AL指定的中断类型N的中断向量DS:DX放置在中断向量表中。 预置:(AH)=25H 功能号( AL)=N 中断类型号DS:DX=中断向量 执行:INT 21H,例如: MOV AX, SEG NEWINT MOV DS, AX MOV DX, OFFSET NEWINT MOV AL, N MOV AH, 25H INT 21H,51,中断向量的设置方法,例:利用 INT 2

19、1H 设置中断向量MOV AH,25H ; DOS功能调用号25H AH MOV AL,40H ; 将设置的中断类型码 AL MOV DS,SEG USERINT MOV DX,OFFSET USERINT ; 入口参数:中断服务程序的入口地址 DS:DX INT 21H执行之后,中断服务程序的入口地址值将放入中断向量表中n4处连续的4个单元中。,52,53,7.2.4 中断响应与处理,一、内部中断响应过程1. 当内部中断发生时,或由INT n指令获得中断类型码,或是按预定方式得到中断类型码(专用中断:0、1、3、4);2. 将类型码4,作为中断向量表的指针;3. FR(PSW)入栈保护;,5

20、4,4. 清除IF和TF标志(0 IF、0 TF,屏蔽新的INTR中断和单步中断;5. 把断点处的IP和CS值压入堆栈:先压入CS值,再压入IP值;6. 取中断向量(中断服务程序的入口地址),分别送至CS和IP。按新的地址执行中断服务子程序。,内部中断响应过程,55,内部中断的特点: 1进入中断时,不需要执行中断响应周期去获得中断类型码。 2除单步中断外,内部中断无法用软件禁止,不受IF的影响。 3内部中断没有随机性,由指令在程序中的位置决定。 4除单步中断外,内部中断优先级高于硬件中断。,内部中断响应过程,外部中断响应过程,1. 非屏蔽中断NMI的响应中断类型码为2。当NMI发生时,CPU在

21、执行完当前指令后,转去中断类型码为2的中断服务子程序。 响应过程(除中断类型码获得方式外)同INT n。CPU提供,不是外设提供。,56,57,可屏蔽中断INTR:CPU将执行持续两个总线周期的中断响应周期。第一个总线周期 INTA*有效,向外设送出的中断应答信号;第二个总线周期INTA*再次有效,表示外设应送出中断类型码。CPU将在T4周期前沿读取中断类型码。,外部中断响应过程,58,在INTR线上的请求信号(高电平)必须保持到当前指令的结束。 当INTR线有效且IF=1,则CPU在当前指令执行完毕后,响应外部中断请求,转入中断响应周期。 中断响应周期有2个,每个响应周期由4个T组成,中间以

22、空闲状 态(3个)隔开。,2. 可屏蔽中断INTR的响应,59,在每个中断响应周期,CPU都往引脚INTA*发一个负脉冲信号 请求中断的外设在收到第2个INTA*时,将中断类型码 DB(通常由8259传送)。获得中断类型码后,则转入中断处理过程(同内部中断)。INTR共执行7个总线周期。,中断响应周期时序,CPU从引脚INTA 发中断响应信号,接口芯片接收此信号,把中断类型号准备好;同时ISRi=1,IRRi=0。 CPU再从引脚INTA 发中断响应信号,接口芯片接此信号后,将中断类型号送至数据总线上; CPU从数据总线获取中断类型号。,60,61,中断类型码的获取 NMI、断点中断、溢出中断

23、、被0除、单步中断等类型码固定。 INT N软中断类型码由立即数N给出。 外部中断读取中断类型码。,中断响应过程,62,63,已知中断类型码后,如何进入中断服务程序? 1、将中断类型码乘以4,得到中断向量表的向量首址指针; 2、将断点(当前CS、IP的值)入栈保护; 3、取中断向量:把向量表指针所指的4个连续字节的内容作为中断服务程序的入口地址,分别送给IP和CS; 4、按新的CS:IP指针执行中断服务程序。,中断响应过程,64,(FLAG),0150,1000,中断响应过程,四、中断过程举例设某输入设备数据准备就绪后向CPU申请可屏蔽中断,中断类型码为80H,中断响应后执行的服务子程序名为I

24、NTPROC。程序开始,首先应对中断向量表进行安排,即先进行中断初始化。程序如下:, CLI PUSH DS MOV AX,0000H ;中断向量指针的段基址 MOV DS,AX MOV BX,0200H ;中断向量指针的偏移量 MOV AX,OFFSET INTPROC MOV BX,AX ;偏移量 中断向量表 MOV AX,SEG INTPROC MOV BX+2,AX ;段基址 中断向量表 POP DS STI ,65, CLI PUSH DS MOV AX,0000H ;中断向量指针的段基址 MOV DS,AX MOV BX,0200H ;中断向量指针的偏移量 MOV AX,OFFSE

25、T INTPROC MOV BX,AX ;偏移量 中断向量表 MOV AX,SEG INTPROC MOV BX+2,AX ;段基址 中断向量表 POP DS STI MOV AX, 2000H ADD AX,AX MOV SI,AX ,66,(1)INTR有效,外设申请中断,67,START:MOV AX,DATAMOV DS,AXCLI ;关中断,设置中断向量SUB AX,AXMOV ES,AX ;中断向量表的段基址为0000HMOV DI,460H ;在中断向量表中的偏移量MOV AX,OFFSET INTSVCLDSTOSW ;写中断向量的偏移量MOV AX,SEG INTSVSTOS

26、W ;写中断向量的段基址STI INT 60H ;软中断指令MOV AH,4CH ;返回DOS INT 21H,定义一个软中断,中断类型号为60H,在中断服务程序中完成ASCII码加偶校验位(第7位)的工作,ASCII码首地址为ASCBUF,字节数为COUNT,加偶校验位后仍放回原处。,68,INTSV PROC ;中断服务程序PUSH AX ;保护现场PUSH BXPUSH CXMOV CX,COUNTMOV BX,OFFSET ASCBUF L2: MOV AL,BXAND AL,AL ;建立标志PF, PF=1,有偶数个1JP L1OR AL,80HMOV BX,AL ;加入偶校验后写回

27、 L1: INC BXLOOP L2POP CX ;恢复现场POP BXPOP AXIRET,69,利用DOS功能调用设置中断向量表 设置中断向量:把由AL指定中断类型码的中断向量DS:DX置在中断向量表中。预置 AH=25H, AL=中断类型码DS:DX=中断向量执行 INT 21H,读取中断向量:把由AL指定中断类型码的中断向量从中断向量表中取到ES:BX中。预置 AH=35H, AL=中断类型码执行 INT 21H返回时送: ES:BX=中断向量,70,7.3 可编程中断控制器8259A,专用于系统内可屏蔽硬件中断的控制,管理系统的外部中断请求。主要功能特点:1、每片8级优先级管理,级联

28、后可达64级2、自动产生中断向量3、每路中断可分别屏蔽4、功能灵活, 优先权等多种工作方式可编程,71,7.3.1 8259A的结构和功能,72,8259A的内部结构,IRR中断请求寄存器(8位) 保存8个(IR0IR7)外部中断请求信号 Di1,表示IRi引脚有中断请求 Di0,表示IRi引脚无中断请求,73,IR中断屏蔽寄存器(8位) 保存对中断请求信号IRi的屏蔽状态; Di1,则IRi引入的中断被屏蔽(关闭); Di0,则IRi引入的中断被开放。,8259A的内部结构(续),74,当IR7IR0端有多个中断请求同时发生时, 由PR判定其最高优先权; 在INTA脉冲期间将它置入中断服务寄

29、存器ISR的相应位。,PR优先权判别器(8位),8259A的内部结构(续),75,76,ISR中断服务寄存器(8位) 保存正在被8259A服务着的中断状态; Di1,表示IRi中断正在服务中; Di0,表示没有被服务。,8259A的内部结构(续),8位双向三态缓冲器,构成8259A与系统数据线的接口。对8259A编程写入的命令字和读出8259A状态信息都是通过它传送。,数据总线缓冲器,8259A的内部结构(续),77,78,读写控制逻辑,接收读/写控制信号RD / WR、片选信号CS和端口选择信号A0 。一片8259A在系统中占用2个口地址, 用地址线A0来选择端口;用高位地址线通过译码产生8

30、259A的片选信号。,8259A的内部结构(续),包括命令字(ICW1ICW4)寄存器,操作字(OCW1OCW3)寄存器和相关的控制逻辑; 通过INT端向CPU发中断请求信号, 从INTA端接收CPU的中断响应信号, 控制8259A进入中断状态。,控制电路,级连缓冲/比较器,一片8259A只能接收8级中断, 当超过8级时,可用多片8259A级连使用, 构成主从结构。可扩充到64级。,8259A的内部结构(续),79,中断级连方式的连接,一个系统中,8259A可以级连,有一个主8259A,若干个(最多8个)从8259A 级连时,主8259A的三条级连线CAS0CAS2作为输出线,连至每个从825

31、9A的CAS0CAS2 每个从8259A的中断请求信号INT,连至主8259A的一个中断请求输入端IR 主8259A的INT线连至CPU的中断请求输入端 SP/EN在非缓冲方式下,规定该8259A是主片(SP1)还是从片(SP0),动画,图示,80,8259级连电路,81,8259A的引脚功能,D7D0 : 双向数据总线。传送控制、状态信息和中断类型号。 WR* : 写信号。输入, 低电平有效。当有效时, 8259A接收CPU送来的命令字。 RD* : 读信号。输入, 低电平有效。当有效时, 8259A将状态信息放入数据总线供CPU检测。,82,A0 : 内部地址信号,输入。8259A只占两个

32、地址, A0与CS* 一同构成8259A的端口奇/偶地址选择。 CS*: 片选信号。输入, 低电平有效。有效时, CPU可对该8259A进行读写。,8259A的引脚功能(续),83,与处理器接口引脚的逻辑功能,84,IR7IR0 : 外部中断请求信号,输入。 INT :中断请求信号,输出。当IR7IR0任一引脚有中断请求时, 8259A从INT向CPU发出中断请求信号。 INTA :中断响应信号,输入。当CPU接收到中断请求信号,在允许中断条件下, CPU响应中断, 并发出中断响应信号到INTA端。,8259A的引脚功能(续),85,CAS2CAS0 : 级连信号,双向引脚。用于控制多片825

33、9A的级连使用。 主片: CAS2CAS0 引脚输出 从片: CAS2CAS0 引脚输入SP / EN : 双功能引脚。 当缓冲方式时, 该引脚输出, 它用于总线收发器的使能信号; 当非缓冲方式时, 该引脚输入, SP=1表示该片是主片, SP=0表示该片是从片。,8259A的引脚功能(续),86,8259A的工作过程,动画,87,2. 当外设发出中断请求后,其对外部中断请求的处理过程如下: 若有IRi=1,则IRR中相应位置1。 若对应IMR中的相应位为0,且经优先权判别器PR后,则8259A向CPUINTR。 若IF=1,则CPU在执行完当前指令后,发INTA8259A ISR中对应当前最

34、高优先权的位为1,且IRR中相应位清0。,8259A的工作过程,1. 上电后,由CPU执行一段程序对8259初始化(通过输入初始化命令字实现)。完成初始化后,8259A处于 就绪状态 。,89,CPU 进入响应中断的过程,继而执行中断子程序。, CPU发第二个INTA8259A,8259ADB上送8位的向量号N(即中断类型号,初始化8259A时已设定好)。CPU做:N4 从中断向量表中取出中断服务程序的入口地址。 若8259A为AEOI(自动结束中断),则在第二个INTA尾,ISR中相应的位复位。否则,至中断服务程序结束,发出EOI命令使ISR中相应位复位.,中断触发方式 电平触发方式当IR7

35、IR0 出现高电平时, 表示有中断请求。这个高电平应持续到8259A收到第一个中断响应脉冲之前。 边沿触发方式当IR7IR0 出现由低电平到高电平的跃变, 表示有中断请求。,8259A中断管理(工作)方式,91,中断屏蔽方式,普通屏蔽方式将IMR中某一位或几位置“1”, 即可将相应位的中断请求屏蔽。例如,将11110000写入IMR, 即可屏蔽IR7IR4的中断,开放 IR3IR0 的中断。 特殊屏蔽方式通常情况下,当一个中断被响应时,禁止同级或较低级别的中断请求。在特殊屏蔽方式下,当一个中断被响应时,仅屏蔽同级别的再次中断,较低或较高级别的中断请求可被允许进入。,8259A中断管理(工作)方

36、式(续),92,中断优先级别管理方式,完全嵌套方式(固定优先级方式) IR7IR0的优先级固定, IR0 为最高级, IR1次之,IR7为最低级。 CPU响应某一级中断时,8259A将ISR中与该中断源对应的那一位置“1”,并自动禁止同级和较低级的中断请求,但高优先级中断可中断当前的服务,实现中断嵌套。,8259A中断管理(工作)方式(续),93,特殊全嵌套方式,当CPU正处理某级中断请求时,只禁止较低级别的中断请求,而允许同级或较高级的中断请求进入。 特殊全嵌套方式用于多片级连系统。当主片处于该方式,可响应来自同一从片的其它中断请求。,8259A中断管理(工作)方式(续),94,自动循环方式

37、,IR7IR0中断源轮流为最高优先级,当任一级中断服务结束后,该中断源自动降为最低级,而它的下一级的中断源自动升为最高级。,例如:现正为IR3引入的中断服务,若中断服务程序完毕, IR3被赋予最低优先级,IR4被赋予最高优先级,各级中断源的优先级从高到低依次为: IR4 ,IR5 ,IR6 ,IR7 ,IR0 ,IR1 ,IR2 ,IR3 。,8259A中断管理(工作)方式(续),95,特殊循环方式,用户可置优先权命令指定最低优先级。,例如:设置IRi为最低优先级,则最高优先级赋予 IRi1,其它各级按循环方式类推。,8259A中断管理(工作)方式(续),96,中断结束方式,把ISR寄存器的中

38、断服务标志ISRi位清0,意味着结束IRi引入的中断服务。如何将ISRi位清0,8259A提供了6种中断结束方式。 自动EOI(Automatic End of Interrupt)方式 8259A在收到第2个中断响应脉冲信号之后,自动把ISR中置1的最高优先级服务标志 ISRi位清0,不需要在中断服务程序中向8259A送中断结束(EOI)命令字。,8259A中断管理(工作)方式(续),97,普通EOI (End of Interrupt)方式,执行IRET之前,向8259A送一个 EOI 命令字,将把ISR中相应位清0。 在完全嵌套方式下,采用普通EOI方式。,特殊中断结束方式 该种方式下,

39、在中断服务程序结束,执行IRET之前,向8259A送一个“特殊EOI” 命令字,可将ISR中指定位清0。,8259A中断管理(工作)方式(续),98,普通EOI,优先级循环方式 执行 IRET之前,向8259A送一个“普通EOI,优先级循环方式” 命令字,将ISR中级别最高的置1位清0,同时完成优先级循环。,自动EOI优先级循环方式 在CPU响应中8259A在收到第2个中断响应脉冲信号之后,自动把ISR中置1的最高优先级服务标志 ISRi位清0,并完成优先级循环。,8259A中断管理(工作)方式(续),99,特殊EOI,优先级循环方式,当前中断服务结束,执行IRET之前,向8259A送一个“特

40、殊EOI,优先级循环方式” 命令字,可将ISR中指定位清0。并完成优先级循环。,8259A中断管理(工作)方式(续),100,总线连接方式,缓冲方式 如果8259A通过总线驱动器和系统数据总线相连,则8259A应采用缓冲方式; 此时SP / EN为输出端,它输出一个低电平信号,可作为总线驱动器的启动信号。 非缓冲方式 如果8259A数据线和系统数据总线直接相连,则8259A应工作于非缓冲方式下。,8259A中断管理(工作)方式(续),101,三、8259A的级联主8259A的中断请求端IR0IR7用于接收从8259A的中断输出,最多可扩展至64级优先权中断。CAS0、CAS1、CAS2作为从片

41、识别码 。,102,7.3.2 8259A的编程,8259A的两种命令字 初始化命令字: ICW1ICW4 操作命令字: OCW1OCW38259A的启动:必须先通过编程写入初始化命令字,使它处于工作起始状态;初始化过程:按照固定的顺序进行。ICW1、ICW2必须写,ICW3、ICW4视具体情况而定。,103,初始化命令字ICW,有4个初始化命令字ICW 8259A在开始工作前必须写入 必须按照ICW1ICW4顺序写入 ICW1和ICW2是必须写 ICW3和ICW4由工作方式决定是否写,104,ICW1中断请求触发方式设定,ICW1是第一个初始化命令字 ICW1使用偶端口(A0=0) D41,

42、作为ICW1特征 写入 ICW1时,自动将中断屏蔽寄存器IMR清0,并恢复各中断源的优先级为IR0最高, IR1次高, ,IR7最低。,105,ICW1的格式芯片控制字,106,D0 (IC4)位: 是否写ICW4选择。 D0= ,需要写ICW4 ; D0= , 不写ICW4。 D1 (SNGL)位:单片多片选择。D1=0,多片级连使用; D1=1,单片使用。 D3 (LTIM)位:触发方式选择D3=0,边沿触发; D3=1,电平触发。 D7、D6 、D5 、D2 4位:8086CPU不用(置0) D4位:特征位D4=1,表示写 ICW1字,107,ICW2中断类型号设定,ICW2的功能是设置

43、中断类型号; 它使用奇端口(A0=1); 紧跟在ICW1之后设置;,108,ICW2的格式,109,D7D3(T7T3) 中断类型号的高5位, 由用户写入 中断类型码的低3位由8259A自动设定 IR0为000、IR1为001、IR7为111 它在第一个INTA到来时, 将这个编码写入低3位 D2、D1、D0 三位固定为0,110,例 若对8259A采用 电平触发, 单片使用, 需写ICW4, 则程序段为:,例 在PC系列中断系统中, 硬盘的中断类型号的高5位是08H, 它的中断请求线连到8259A的IR5上, 写ICW2字的程序段为: MOV AL , 08H ; 中断类型号高5位,0000

44、1000B OUT 21H , AL ; 写入ICW2端口(A0=1),MOV AL , 1BH ; ICW1的内容,00011011B OUT 20H , AL ; 写入ICW1端口(A0=0),111,ICW3中断级连方式设定,ICW3仅在多片级连方式中使用 ICW3使用奇端口(A0=1),112,主8259A, 若Si=1, 表示IRi引脚上接有从片; 从8259A, 用ID2ID1ID0的编码表示本从片接在主8259A的哪根引脚上; IR0IR7对应的编码为000111。,ICW3的格式,113,ICW4中断结束, 嵌套方式设定,ICW4使用奇端口(A0=1); 它确定中断结束的方式和

45、中断嵌套的方式 ICW4的格式为:,114,D0 (PM)位: 系统选择。D0 =0, 用于8085 系统; D0=1, 用于8086系统 D1 (AEOI)位: 中断结束方式选择。 D1=0,普通EOI方式; D1=1,自动EOI方式 D3(BUF)位: 缓冲方式选择。D3 =1, 工作于缓冲方式D3=0, 工作于非缓冲方式 在缓冲方式下, SP/EN引脚输出给总线收发器, 此时, 由M/S位来定义本8259A是主片或是从片。,115,D2(M/S)位: 主/从片选择。当BUF=1时(缓冲方式), D2=0为从片; D2=1表示主片;当BUF=0时, M/S位无意义。 D4(SFNM)位:

46、中断嵌套方式选择。D4=0表示普通全嵌套方式; D4=1表示特殊全嵌套方式。 D7D6D5=000,116,例 多片8259A级连方式连接, 从片A和B的中断请求线INT分别接到主片的IR3和IR6, 故:,从片A的ICW3=0000 0011B=03H 从片B的ICW3=0000 0110B=06H 主片的 ICW3=0100 1000B=48H 从片A程序段为: MOV AL , 03H ; 写从片A的ICW3 OUT 0A1H , AL ; ICW3的端口地址 (A0=1),117,从片B的程序段: MOV AL , 06H ; 写从片B的ICW3 OUT 0B1H , AL ; ICW

47、3的端口地址 (A0=1) 主片的程序段: MOV AL , 48H ;写主片的ICW3 OUT 81H , AL ; ICW3的端口地址 (A0=1),118,例 PT86单板机中, CPU为 8086, 非自动结束方式;使用2片8259A, 非缓冲方式; 主片为特殊全嵌套方式。 主片的 ICW4=0001 0101B=15H 程序段为: MOV AL , 15H ; ICW4的内容 MOV DX , 0FFDFH ; ICW4的端口地址(A0=1) OUT DX , AL,119,操作命令字OCW,8259A工作期间,可以随时接受操作命令字OCW OCW共有3个:OCW1OCW3 OCW的

48、写入时没有顺序要求,120,OCW1中断屏蔽字,对IRi输入中断请求进行屏蔽控制; OCW1占用奇地址(A0=1); OCW1格式为,Di(Mi)=1, 则IRi位中断请求被屏蔽(置中断屏蔽) Di(Mi)=0, 则IRi位中断请求被开放(清中断屏蔽),121,例 要使IR3开放, 其余均被屏蔽, 则 OCW1=1111 0111B=0F7H 程序段为: MOV AL , 0F7H OUT 21H , AL ; 21H是8259A奇端口(A0=1) 例5.12 IMR寄存器的内容可读出。 MOV AL , 0 ; 置IMR为全“0” OUT 21H , AL ; OCW1的口地址(奇地址) I

49、N AL , 21H ; 读IMR(奇地址),122,OR AL , AL ; 检查是否为全“0” JNZ ERR ; 不为“0” , 则转错误处理 MOV AL , 0FFH ; 置IMR为全“1” OUT 21H , AL ; OCW1的口地址 IN AL , 21H ; 读IMR ADD AL , 1 ; 检查是否为全“1” JNZ ERR ; 不为全“1”, 转错误处理,123,OCW2 优先级循环及结束方式操作字,设定8259A的中断优先级循环和结束方式 OCW2占用偶地址(A0=0) OCW2格式为:,124,D7(R): 中断优先级循环设定D7=0, 固定优先权方式D7=1, 循环优先权方式 D6(SL): 中断级别指定D6=0, 不指定中断级, L0L2编码无效D6=1, 用L0L2编码来指定中断优先级,

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

当前位置:首页 > 企业管理 > 管理学资料

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报