版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、1,第 七 章,中断控制接口,2,7.1 中断的概念,1. 什么是中断 所谓中断,就是当CPU正常运行程序时,由于内部或外部的随机事件,引起CPU暂时中止正在运行的程序,转而去执行请求中断的外设(或内部事件)的中断服务程序,中断服务结束后再返回被中止的程序。这一过程称为中断。,3,中断的用处:,主机可以与外设同步并行操作 实时处理;故障处理,断点,主程序,中断服务程序,中断请求,对外设 进行处理,继续执行,返回断点,4,2. 中断输入接口电路,5,1)中断源 能够引起程序中断的事件都称为中断源。 有些中断是已知的,例如指令中断源,这类中断源是以指令的形式给出的,例如INT 20H,这条指令如同
2、其它的汇编指令一样,是出现在程序中的,所以这个中断源什么时候发生是预先知道的; 有些中断源是随机的,也就是说,提出中断请求的时刻是未知的,例如硬件中断,中断源是通过中断控制接口电路输入至CPU的,中断源具体的发生时刻与外部硬件电路有关。,3. 中断的概念,6,2)中断优先级 当系统中有多个中断源同时到来时,就需要将中断源排个队,优先级高的中断服务程序先执行,执行完优先级别高的中断服务程序,再执行优先级别低的中断服务程序。 完成中断优先级的排列可以是软件查询方式,也可以利用硬件电路实现。 软件查询方式的硬件电路简单,但是需要利用程序来控制优先级的执行顺序,对于简单的小型微机系统可以用此方法。 硬
3、件电路实现优先级排列,不必利用程序控制。,7,3)中断嵌套 所谓中断嵌套是指高优先级别的中断打断当前低优先级的中断服务程序的执行。,8,4)中断类型号 中断类型号是指每个中断源的编号。 每个中断源都有唯一的编号,每一个编号都对应各自的中断服务子程序。当响应中断时,必须首先获得中断类型号,有了中断类型号,才能找到对应的中断服务子程序。,9,4. 中断响应过程,外设需要CPU服务时,首先要发出中断请求。发出中断请求的外设就是中断源。 广义地说,能引起CPU程序产生中断的随机事件都称为中断源。不仅外部可以产生中断,CPU的内部也可以产生中断。这些中断源的共同特点是都需要CPU对其进行适当的处理.而处
4、理的步骤(程序)是预先已设定好的。,1)中断请求,10,2) 中断判优 当系统具有若干个中断源时,若某一时刻有两个及以上的中断源同时发出中断请求,因为CPU往往只有一条中断请求线(INTR),而CPU任一时刻只能响应并处理一个中断,这就要求CPU判别优先级最高的中断源并响应之。中断判优就是要解决请求中断的事件优先级的顺序问题。 中断判优的方法有软件判优和硬件判优两种。软件判优电路简单,判优速度慢;硬件判优电路复杂,判优速度快。,11,用软件方法确定中断优先权,CPU响应中断后,在中断服务程序中用软件判断中断源。,申请中断,XOR AL, AL MOV DX, 340H IN AL, DX RC
5、R AL, 1 JC SERV0 RCR AL, 1 JC SERV1 ,;读中断寄存器状态,;判断是否为0#申请中断,;判断是否为1#申请中断,;清CF,12, 用硬件方法确定中断优先权,雏菊花链式电路,中断优先级自上而下,上面端口的中断请求可以屏蔽下面的中断请求。硬件电路自然完成了中断判优。,13,中断响应就是CPU中断现在正在进行的处理任务,转向中断请求相对应的中断处理程序的过程.在中断响应过程中应解决以下四个问题:保护断点,保护现场;CPU关中断,不允许此时被新的中断源所打断;转入中断请求所对应的处理程序。,3)中断响应,最后一个问题是实现CPU控制权的转移,它是中断响应过程的关键。其
6、实质是如何由中断源得到相应服务程序的入口地址的问题。现在常用的方法是采用中断向量,即由所响应的中断源在中断响应时间向CPU提供自己的中断向量号,CPU根据中断向量号就能够找到中断服务程序的入口地址,进而转入中断服务程序。,14,4)中断处理,中断处理就是执行中断服务程序,以完成中断源提出的处理要求,中断服务处理程序是软件编程问题,与子程序的编写原则类似。在中断服务程序中,用STI指令开中断,以实现中断嵌套,并对服务程序中的所用的寄存器应预先保护(若中断响应中CPU不是自动保护的话),而在服务程序后面加入恢复现场的语句。,15,5) 中断返回,中断返回就是控制权由中断服务程序转移到被中断的程序的
7、过程。执行中断返回指令与一般“返回主程序”指令类似。所不同的是,大多数中断返回指令还有其他的附加功能,例如部分或全部恢复CPU的现场(除程序计数器外,还有标志寄存器FR等),有些CPU的中断返回指令可自动恢复全部通用寄存器的内容。,16,取指令,中断?,中断响应,中断处理(服务),中断返回,启动,否,是,开中断,执行中断服务程序,关中断,保存断点、现场,判别中断源,转中断服务,关中断,恢复现场、断点,开中断,返回断点,硬件实现,软件(硬件)实现,执行指令,17,中断传送流程,18,外部中断,内部中断,可屏蔽中断,不可屏蔽中断,1. 中断分类与中断类型,各种输入输出设备、一些接口卡等引起的中断,
8、由写在程序中的语句引起的一段程序的执行过程,处理机硬件故障、程序运行出错等引起的中断,可以被CPU通过指令限制其发出中断请求的中断,不可屏蔽中断具有最高优先级,它(们)的中断请求一旦发出,CPU就必须立即响应。,微机中断源,(硬件中断),(软件中断),特殊中断,指令中断,7.2 8086/8088的中断系统,19,1) 外部中断(硬件中断),硬件中断是由来自外部的事件产生的,即由外部设备提出中断申请而产生的。硬件中断的产生具有随机性,何时产生中断,CPU预先并不知道。 8086的硬件中断有两种:不可屏蔽中断NMI和可屏蔽中断INTR。,不可屏蔽中断NMI:常用于紧急的故障处理,由系统使用。 可
9、屏蔽中断INTR: CPU在指令周期的最后一个T状态采样INTR线,20,NMI(Non-Maskable Interrupt),17引脚,非屏蔽中断请求信号,输入。上升沿触发(边沿触发)。,非屏蔽中断请求,不受中断标志IF的影响,不能用软件控制(屏蔽),每当该端输入一个正沿触发信号时,CPU就会在当前指令周期结束后,进入中断类型号为2的中断处理程序,在8086微机中,该中断用于I/O与内存的奇偶校验。,21,CPU在执行每条指令的最后一个时钟周期会对INTR信号进行采样,若CPU的IF为1且INTR信号为高电平,CPU会在现行指令结束后响应中断请求,进入中断处理程序。,可屏蔽中断请求,18引
10、脚,可屏蔽中断请求信号,输入。高电平有效(电平触发)。,INTR (Interrupt Request),22,24引脚,中断响应信号,输出,为连续两个总线周期的负脉冲。,(Interrup Acknowledge),当外设向CPU申请可屏蔽中断INTR,CPU如果允许中断,则连续发出两个负脉冲给外设。第一个负脉冲通知外设已受理中断;外设在第二个负脉冲时向数据总线上发送中断类型码。,中断响应信号,23,中断响应周期时序图,1) 在第一个响应周期内,CPU输出总线锁定信号LOCK,防止其他处理器或DMA控制器占用总线。与此同时,外设收到此信号,知道CPU已响应中断,开始准备送中断类型码; 2)
11、在第二个响应周期时,总线锁定信号LOCK解除,ALE无效,允许数据线工作。此时,外设(中断控制器)将已准备好的中断类型码送上数据总线供CPU读取。,24,2) 内部中断 (软件中断),软件中断包括指令中断和专用中断(特殊中断),ROM-BIOS中断:占用中断号10H1FH, 05H,40H, 41H, 46H,其中包括对I/O设备的控制。 如:INT 16H 键盘I/O控制; INT 1AH 时钟控制,DOS 中断:占用中断号20H3FH,提供了DOS的主要功能。如:INT 21H 系统功能调用。,指令中断是由用户在程序中发出中断指令INT nH产生的,其中n称为软中断号。何时产生软中断是由程
12、序安排的,是可以预知的。软中断包括ROM-BIOS中断和DOS中断两部分。,25,专用中断(特殊中断)由内部的突发事件所引起的中断,CPU指定中断。,在指令的执行过程中,CPU发现某种突发事件时就启动内部逻辑转去执行预先规定的中断号对应的中断服务程序。这类中断也是不可屏蔽的中断,其处理过程类似于软件中断,有时也归为软件中断。,26,0号中断:除数为0的中断,当微处理器执行DIV(无符号数除法)或IDIV(有符号数除法)指令时,若出现商超出机器所能表示的最大范围,就如同被0除了一样,这时引起0号中断。,27,1号中断:单步中断,微处理器执行一条指令前,如果检测到单步标志位TF为1,则在该条指令执
13、行后立即停止,引起1号中断,支持程序的单步跟踪功能。 如DEBUG.EXE调试程序中的跟踪命令T,就是将TF置为1。,28,当微处理器执行当前指令码为CCH(INT 3H)时,立即引起3号中断。系统并未提供断点中断的中服程序,通常由实用软件自己设计。如DEBUG的G命令允许设置多达10个程序断点,并对断点处的指令执行结果进行显示,供用户检查。,3号中断:断点中断,29,4号中断:溢出中断,当微处理器执行CEH(INTO)指令时,当检测到溢出标志OF为1时,立即引起溢出中断。 在运算过程中出现溢出标志OF为1后,CPU并非自动转入溢出处理程序。OF=1只是溢出中断的一个必要条件。用户在编程时,若
14、要对某些运算操作进行溢出监控,就应在这些操作指令后面加上INTO指令,并设计相应的溢出中断服务程序。当OF=0时,INTO不会产生任何操作。,30,8086中断源(共有256个 00HFFH),中断优先级:软件中断、NMI、INTR、单步中断。,软中断内没有级别。,31,7.3 中断向量表,问题:CPU如何找到中断服务程序的地址?,在正常运行的程序中不可能出现中服地址,不可能有CALL 中断服务程序 指令,因为中断是随机的。,CPU响应中断后,只知道有中断源请求中断服务,但并不知道具体是哪一个中断源在申请中断。因此,CPU要设法寻找中断源。 中断识别的目的是要形成该中断源的中断服务程序的入口地
15、址,以便CPU将此地址放入CS:IP寄存器,从而实现程序的转移。,32,8086系统一共有256个中断源,将这些中断源都编上号,依次是00HFFH号,这个号就称为中断类型号。如溢出中断为4号中断等。,每个中断类型号都对应着相应的中断服务程序,这些中断服务程序可以存放在存储器的任何位置。但一旦程序运行,这些中服的入口地址在存储器中都是已知、固定的,每个中服程序的入口地址称为一个中断向量。 将这些中断类型号对应的中服入口地址集中起来列成一个表,放到存储器的固定区域内,这个按顺序存放中服入口地址的表就称为中断向量表。,33,向量地址1,向量地址2,向量地址3,服务程序入口1,服务程序入口2,服务程序
16、入口3,通过向量地址寻找入口地址,34,中断向量表存放在存储器的底部,每个中服地址(中断向量)占用4个单元(CS:IP),8086一共有256个中断源,因此中断向量表占用4256=1024个存储单元,地址为:00000H003FFH。,00000H,003FFH,00004H,00008H,0号中断中服地址:MMNNH:XXYYH,1号中断中服地址:AABBH:CCDDH,在中断系统中,有相当一部分中断源没有定义,即中断向量空着,等待分配。,35,8086系统对256种中断类型号已进行了地址分配,其中类型号04为专用中断,对应的中断服务程序的入口地址已由系统定义,用户不能更改,类型05H3FH
17、为系统使用的中断10H1FH为BIOS专用中断向量号,20H3FH为DOS专用向量号,其中的21H为DOS功能调用。用户可以使用40H以后的系统未保留的中断向量号,36,00000H,003FFH,00004H,00008H,如何根据中断类型号获取中服入口地址?,CPU将中断类型号乘4,即获得存放该中服地址的中断向量表的首地址,从该地址处开始的4个单元存放的即是所需要的中服地址。4n+34n+2:4n+14n,例:中断类型号70H,存放中服地址的存储空间为:,70H401,11 00,00 00B=1C0H,1C3H1C2H-CS 1C1H1C0H-IP,执行中服务 程序,37,练习:设中断向
18、量表0005CH0005FH单元的内容依次为90H, 78H, 40H, 23H, 则对应的中断类型号及中断服务子程序的入口地址CS:IP分别为 _ _,17H, 2340:7890H,中断类型号为40H的中断服务程序入口地址存放在中断向量表中的起始地址是 。,00100H,如果CPU计算出来的中断向量表的地址为0001:0018H ,则中断控制器8259A发出的中断类型码(十六进制)是_。,0AH,38,中断服务程序的装载,即如何把中断服务程序的入口地址放入中断向量表中(在主程序中放) 有3种方法:,直接写入法 直接将中断类型号4,找到具体的内存单元后将中服程序的段地址和偏移地址依次写入。,
19、MOV AX, 0 MOV ES, AX MOV DI,n*4 MOV DX, OFFSET INTV MOV ES:DI, DX INC DI INC DI,MOV DX, SEG INTV MOV ES:DI,DX,; ES为0,; 取中服的偏移地址,;将偏移地址放入中断向量表,; 取中服的段地址,39,系统功能调用法 使用25H号功能调用可以完成上述操作,中断类型号:AL 中服程序入口段地址: DS 中服程序入口偏移地址: DX,PUSH DS MOV DX,SEG INTV MOV DS,DX MOV DX,OFFSETINTV MOV AL,72H (n) MOV AH,25H IN
20、T 21H POP DS,入口参数:,;中服段地址,;中服偏移地址,;中断类型号,;系统功能调用号,40,35H号功能调用正好与此相反,用于读取中断向量表中的中服程序的入口地址。(将系统暂时不用的中断号借给用户,即将中断向量表中的中服程序的地址改变,用户使用完该中断号后再将中断向量表复原)。,入口参数:中断类型号:AL 出口参数(读取的中服地址): 中服程序入口段地址:ES 中服程序入口偏移地址:BX,MOV AL,0CH MOV AH,35H INT 21H MOV INTCS, ES MOV INTIP, BX,;读取中断类型号为0CH的中服地址,;将读出的原中服段地址放入变量INTCS中
21、,;将读出的原中服偏移地址放入变量INTIP中,41,用串指令装入,例:中断类型号为n,中断服务程序名为 INSER,将中断向量装入到中断向量表中。 XOR AX, AX MOV ES, AX MOV DI, n*4 ;DI中为n号中断对应的中断向量表的偏移地址 MOV AX, OFFSET INSER CLD STOSW ;装入中断服务程序偏移地址 MOV AX, SEG INSER STOSW; 装入中断服务程序偏移地址,42,7.4 8086/8088CPU 中断服务子程序,三种中断方式(软件、NMI、INTR),CPU的响应过程各不相同。,软件中断由程序设定,它不受IF标志的影响,中断
22、类型号由INT n中的n决定。CPU在执行软件中断时,没有中断响应周期。CPU根据指令中的类型号n就能转入相应的处理程序入口。所以用INT n指令可以模拟任何中断源,用来调用256个入口的任何一个中断处理程序。由于它把中断的随机事件变成了执行INT n 指令的必然事件,可使中断处理程序和一般子程序一样容易调试。,1.中断响应过程,43,对NMI请求,不必判断IF标志,也不用外设接口给出中断向量号,CPU响应时不发中断响应周期(不回应),自动生成其类型号2,然后转入相对应的处理程序入口。,对INTR请求,CPU响应时要比上述两种情况复杂一些。CPU响应中断后,对外设接口发出两个中断响应周期INT
23、A(8288发的)。每个中断响应周期依然为4个时钟周期,INTA在T2,T3状态有效。,44,中断响应周期时序图,1) 在第一个响应周期内,CPU输出总线锁定信号LOCK,防止其他处理器或DMA控制器占用总线。与此同时,外设收到此信号,知道CPU已响应中断,开始准备送中断类型码; 2) 在第二个响应周期时,总线锁定信号LOCK解除,ALE无效,允许数据线工作。此时,外设(中断控制器)将已准备好的中断类型码送上数据总线供CPU读取。CPU接收此中断号,由此查找中断向量表找到对应中服程序的入口地址。,45,无论哪一种中断,CPU在响应中断时,最重要的是要得到中断类型号,之后,应完成如下操作:,中断
24、类型号暂存,把标志寄存器FR的内容压入堆栈 将TF值保存到TEMP,然后使IF=0,TF=0,即屏蔽INTR中断和单步中断。 保存断点,即将断点处的CS和IP内容压入堆栈。 中断类型号4,得到相应中断类型号在中断向量表的位置,从这个位置处取出4个字节,4n+34n+2-CS, 4n+14n-IP, 转入中断处理程序。,46,实现断点返回。当中断处理结束后,应执行IRET指令,该指令将从堆栈中弹出三个字,即FR的内容和断点地址,在中断服务程序中要用到的寄存器,用户在使用之前应予以保护,在中断返回IRET前应予以恢复,使CPU的现场与中断前完全一样 。,47,2. 中断服务程序结构, 程序开始必须
25、保护中断时的现场,中断服务程序用到的寄存器可以用PUSH指令将它们压入堆栈保护。 若允许中断嵌套,则用STI指令来设置开中断,使IF=1 编制中断处理程序 用CLI指令关中断,使IF=0,禁止返回前其他中断请求进入。 给中断控制器送中断结束命令EOI,使当前正在处理的在服务标志清零,以解除对同级或低级中断请求的屏蔽。 恢复现场,用一系列POP指令将保护的寄存器恢复。 用IRET指令返回主程序,CPU会自动恢复断点地址和FR内容。,48,只有可屏蔽中断INTR是由外设提供中断号,在第2个中断响应周期外设将中断号送入数据总线,中断号,查找中断向量表,取出中服地址,转入中服程序,X 4,CS:IP,
26、中断号n 00HFFH,49,7.5 中断控制器 8259A,1. 8259A的内部结构及引脚,8259A是一个可编程的中断控制器,可实现中断优先权管理、中断屏蔽、中断嵌套、向量自动提供、级连等功能。单片8259A可管理8级中断,通过级连可实现64级主从中断系统。8259A的引脚与内部结构如图。,50,8259对外有28条引脚。与其他I/O接口芯片一样,引脚信号除了数据、地址、片选、读写等信号外,还有一些特有的信号:,IR0IR7:8个异步中断请求输入信号。分别接来自不同外设的中断源,高电平或上升沿表示有请求。,INT:中断请求信号(输出),向CPU发中断请求,,:中断响应输入信号,接收CPU
27、响应中断后的应答信号。,51,CAS2CAS0:主从级连双向信号.当系统的中断请求多于8个时,可用两个或更多的8259A级连,其中一个是主控制器,其余是从控制器.从片的INT输出接到主片的一个IR输入。,在中断响应期间,若主8259A判 定所响应的是由某一从片发出的请求,则它在级连线上发出该从片的识别号,并由各从片接收.从片将自己的识别号与该级连线上的号相比较.若一致的话,它应在第二个INTA响应周期,把自己片内中断源的类型号通过D7D0送给CPU,以便把控制引导到所对应的中断服务程序入口.,52,CAS2CAS0:主从级连双向信号。当系统的中断请求多于8个时,可用两个或更多的8259A级连,
28、其中一个是主控制器,其余是从控制器。从片的INT输出接到主片的一个IR输入。,53,主从或缓冲方式,双向信号。当其为输入时,由它决定该片为主片(SP=1)或从片(SP=0)。当其为输出时,8259A处于“缓冲方式”,该信号用来控制双向总线驱动器的启动(EN)端。这种方式常用于多片级连的大系统中。,A0:地址选择信号,用来对内部寄存器进行选择,通常接总线的A0。即8259A的内部寄存器占外设的两个地址,称为奇地址和偶地址。,54,缓冲方式,55,8259内部结构,56,中断请求寄存器(IRR):Interrupt Request Register 一片8259A有8条外界中断请求线IR0IR7,
29、每一条请求线有一个相应的触发器来保存请求信号,从而形成了中断请求寄存器。外设产生中断请求方式有两种:一种是边沿触发,上升沿触发;另一种电平触发,输入信号保持高电平触发。用户可根据需要通过编程来实现。,57,优先权电路:对保存在IRR中的各个中断请求,经过判断确定最高的优先权,并在中断响应周期把它选通至在服务寄存器(ISR)。,在服务寄存器(ISR):IN-Service Register 储存当前正在服务的中断源的标志。ISR的置位是在中断响应的第一个INTA有效时完成的。,58,中断屏蔽寄存器(IMR): Interrupt Mask Register ,由用户编程进行设置,可以对IRR中的
30、相应的中断源进行屏蔽,对于较高优先权的屏蔽不影响较低优先权的输入。,控制逻辑电路: 对片子内部的工作进行控制,使它按编程的规定工作。,数据总线缓冲器:与CPU的数据总线连接,传输命令等。,59,2. 8259A的工作方式,1) 中断触发方式,边沿触发方式:以上升沿向8259A请求中断,上升沿后可一直维持高电平,不会再次产生中断; 电平触发方式:以高电平申请中断,但在响应中断后应及时清除高电平,以免引起第二次中断; 中断查询方式:外设以上升沿或高电平通过8259A向CPU申请中断,但8259A却不使用INT信号向CPU申请中断,只是等待CPU用软件查询8259的状态以确定中断源,并用程序转入相应
31、的处理程序。,60,2) 连接系统总线的方式,在多片级连的大系统中,要求数据总线有总线缓冲器。8259A与这种带总线缓冲器的系统总线连接的方式称缓冲方式。此时SP/EN用于输出,启动缓冲器工作,不能用作表示主从关系。故需要在初始化设置中设置专用位来表示级联系统中的主从关系。 若在小系统中,8259A的D7 D0可以直接与数据总线连接,不需要总线缓冲器,这种方式称为非缓冲方式,此时,SP/EN用作输入,用于表示级联系统中的主从关系,即该引脚接高电平表示该芯片为主片,接低电平表示该芯片为从片。,61,3) 屏蔽中断源的方式,通常屏蔽方式:利用操作命令OCW1,使屏蔽寄存器IMR中的某一位或某几位置
32、1来屏蔽相应输入端的中断请求,若要开放某个中断源,则在相应位置0; 特殊屏蔽方式:在某些场合,在执行某一个中断服务程序时,要求允许另一个优先级比它低的中断请求被响应。这时可采用特殊的屏蔽方式。即在优先级高的中服中,用OCW1将IMR中本中断的对应位置1,将本级中断屏蔽,同时将ISR(在服务寄存器)中该中断的对应位清零,对外界来说,就好像CPU此时没有处理该中断,这样,即使是最低级的中断请求,也会被CPU响应。特殊屏蔽方式一般是在高优先级中服中使用。,62,4) 优先级排队方式,全嵌套方式(正常) 中断优先级按IR0IR7顺序排列,并且只允许中断级别高的中断源中断级别低的中服程序,而不能相反。这
33、是8259A的常用方式,若在对8259A初始化后,没有设置其它优先级方式,自动按此方式工作。,特殊全嵌套方式(级联) 中断优先级按IR0IR7顺序排列,当执行某一级中服时,可响应同级中断源提出的中断请求, 从而实现中断请求的特殊嵌套。,63, 从片IR5连接的外设通过主片IR3管脚申请中断,CPU进入从片IR5的中服;, 在CPU进入执行从片IR5的中服期间,从片IR2连接的外设又有中断申请;, 对从片而言,IR2的优先级大于IR5,应该打断IR5的中服,但对主片而言,它们同是一个优先级IR3,所以如果工作在正常全嵌套方式下,CPU不能执行从片IR2的中服。, 所以,在级联情况,应使主片工作在
34、特殊的全嵌套方式下。,64,优先级自动轮换方式,优先级的顺序不是固定不变的,一个设备受到中断服务后,其优先级自动降为最低。初始优先级的顺序为IR0IR7。该方式用在系统中多个中断源优先权相同的场合。,优先级指定轮换方式,与优先级自动轮换方式一致,但初始的最高优先级是指定的,然后再按顺序自动轮换。,65,优先级自动循环方式,66,5) 结束中断的处理方式,自动中断结束方式,在中服程序的最后,中断返回之前,不需要用软件发送清除ISR对应位的命令,机器在中服运行之前(第二个INTA)自动清除该中服程序所对应的ISR位。只要使ICW4的D1=1,即处于此方式。这种方式仅用在多个中断不会嵌套的单片系统中
35、。,当8259A的某个中断源顺利申请CPU中断时,在ISR中这个中断源的对应位置位,结束中断的处理方式就是对ISR中的该位进行处理。,67,非自动中断结束方式, 正常EOI命令 该EOI命令使ISR中为1的当前优先级最高的那一位复位。在中服程序中,是一个通用的EOI命令(常用)。 指定的EOI命令 在特殊的全嵌套方式下,只根据ISR的对应位是无法确定哪一级中断是最后响应和处理的,所以在程序中要发一指定的EOI命令,向8259A指出要清除的ISR中的具体位。这是在8259A的命令字中实现的,一般用于复杂的多片级联系统中。,68,中断结束方式,普通中断结束方式 (正常EOI命令) 特殊中断结束方式
36、 (指定EOI命令),两大类,自动结束,非自动结束,69,3. 中断响应过程,1) 系统中只有一片8259A, 当有一条或若干条中断请求线(IR0IR7)变高时,则使中断请求寄存器IRR的相应位置位;, 若中断请求线中至少有一条的中断申请是允许的(IMR中的相应位为0),即未被屏蔽的,则8259A由INT引脚向CPU送出中断请求信号;, 若CPU处于开中断状态(IF=1),则在当前指令执行完后,发出INTA中断响应信号;,70, 在第二个INTA期间,8259A发出中断类型号。如果是自动结束中断方式,INTA脉冲后沿复位ISR的相应位.在其他方式中,ISR相应位要由中断服务程序结束时发出的EO
37、I命令来复位。,第一个INTA脉冲,第二个INTA脉冲, 8259A接收到第一个INTA信号,把允许中断的最高优先级请求置位ISR,并清除IRR中的相应位;,71,若从片A的IR4通过主片申请中断,CPU响应后,在第一个INTA周期,主片将这个设备的ID(连接主片的管脚号010) 发送到级连线CAS0CAS2,各个从片收到这个级连号与本片寄存器存储的ID相比较,在第二个INTA期间,被选中的从片就将自己的中断类型号送上数据总线。,2) 系统中有多片8259A,72,当系统的从片数目小于8时,一定不要把从片的INT接到主片的IR0上。这是因为主片的非级连的IR有请求时,主片在级连线上的驱动信号为
38、000,就好像是让IR0上的从8259A响应一样,若这时真有一个从8259A接到主IR0输入,它响应中断而发出的向量号将与主片发出的向量号在总线上产生冲突而产生错误。所以,主片的IR0输入只有当其IR1IR7全接上从片时才最后用来接从片。,73,4. 8259A的编程,1) 初始化编程,若CPU用一条输出指令向8259A的偶地址(A0=0)写一个字节的命令字,这个命令字的D4位为1,这个命令字就被8259A解释成为初始化命令字ICW1,ICW1启动了8259A片内的初始化程序,8259A自动发生下列事件。,边沿敏感电路复位,这意味着在初始化以后,中断请求输入线必须由低变高才产生中断; 中断屏蔽
39、寄存器清零; IR7输入被赋为优先权7(最低优先权)。,由CPU向8259A送24个字节的初始化命令字ICW(Initialization Command Word)。如何知道CPU在向8259A初始化?,74,对初始化编程说明如下: 设置初始化命令字ICW1ICW4的口地址规定如下:ICW1必须写入偶地址口,ICW2ICW4必须写入奇地址口。,ICW1ICW4的写入次序固定不变,不可颠倒。 对每片PIC均需写入ICW1和ICW2,是否写入ICW3和ICW4均由ICW1的相应位决定。只有在级连的方式下,主、从片才须写入ICW3;仅当8086/8088系统或须设置特殊全嵌套方式、缓冲方式、自动中
40、断结束方式时,才写入ICW4。 在级连方式下,主、从片的ICW3的各位含义不同。,75,ICW1:芯片控制初始化命令字(写入偶地址 A0=0),若8259地址20H,21H,采用电平触发,单片使用,需要ICW4,编程如下:,0,0,0,1,1,0,1,1,1BH,MOV AL, 1BH OUT 20H, AL,;写入偶地址,76,ICW2:中断类型码初始化命令字 (写入奇地址),规定本片8259A所带的外设IR0IR7的中断类型号,在中断响应时将外设对应的该类型号送上数据总线。,编程时规定D7D3,即高5位,低3位由IR0IR7的管脚序号自动形成。,在PC机中,硬盘中断类型号是0DH,它连接在
41、8259A的IR5上,则向8259A写的ICW2是什么?,0,0,0,0,1,0,0,0,08H,0000 1101,MOV AL, 08H OUT 21H, AL,;写入奇地址,77,例:PC/XT机中ICW2的D7D3是00001,则接在IR0IR7上的设备的中断类型号依次08H,09H,.,0FH。,78,79,当ICW1的D1位为0时,主从片均需要写入ICW3,ICW3:主/从片初始化命令 (级连时用,单片不用,写入奇地址),IRn = 1 表示主片的IRn接从片 IRn = 0 表示主片的IRn未接从片,如IR7与IR4上接有从8259A,则主片中ICW3应写为:1001 0000B
42、,即 90H,80,两个从片分别接在主片的IR2和IR6管脚上,则主片的ICW3为:,0,1,0,0,0,1,0,0,44H,MOV AL, 44H OUT 21H, AL,;写入奇地址,81,从片ICW3的格式为:,ID2ID0表明该从片的输出INT接在主片的哪个输入管脚上。 如该片接在主片的IR4上,则从片的ICW3应写为:0000 0100B,即04H,000 IR0 001 IR1,.,从片连主片IRn 的序号,111 IR7,82,从片A的INT接在主片的IR2上,从片B的INT接在主片的IR6上,则其ICW3的编程为:,;从片A MOV AL, 02H OUT 0A1H, AL,;
43、从片B MOV AL, 06H OUT 21H, AL,83,ICW4:方式控制初始化命令 (写入奇地址),ICW4: D4,特殊、完全嵌套方式的设置,84,全嵌套方式(正常) 中断优先级按IR0IR7顺序排列,并且只允许中断级别高的中断源中断级别低的中服程序,而不能相反。这是8259A的常用方式,若在对8259A初始化后,没有设置其它优先级方式,自动按此方式工作。,特殊全嵌套方式(级联) 中断优先级按IR0IR7顺序排列,当执行某一级中服时,可响应同级中断源提出的中断请求,从而实现中断请求的特殊嵌套。,85, 从片IR5连接的外设通过主片IR3管脚申请中断,CPU进入从片IR5的中服;, 在
44、CPU进入执行从片IR5的中服期间,从片IR2连接的外设又有中断申请;, 对从片而言,IR2的优先级大于IR5,应该打断IR5的中服,但对主片而言,它们同是一个优先级IR3,所以如果工作在正常全嵌套方式下,CPU不能执行从片IR2的中服。, 所以,在级联情况,应使主片工作在特殊的全嵌套方式下。,86,使用特殊的全嵌套方式时,值得注意的是,在从片的服务程序完毕后,发送EOI命令给主片之前,要检查从片的其他中断是否还要求服务,这可以通过读它的ISR来确定。 若ISR内容为全零,说明从片中已经没有其他中断要求服务,此时就可将EOI命令送给主片;若ISR不全为零,说明还有从片中断要求服务,此时不能发送
45、EOI命令,否则就会清除主片的ISR位,而使从片中的其他中断得不到服务。,87,ICW4 :D3D2 缓冲方式的设置,D3=1,系统工作在缓冲方式。,所谓缓冲方式就是指8259A和系统数据总线之间有缓冲器,因此要设置缓冲器的控制信号,以便数据线上有信号出现的时候,可以打开缓冲器,传输信号。,在这种方式下,引脚 就认为是 方式,输出缓冲器的控制信号,而此时,如果是多片级连,还要区分主片和从片,所以就用D2位来区分主片和从片,若D2=1,该片8259A为主片,若D2=0,该片为从片。,88,缓冲方式级连,引脚为输出,输出缓冲器开启信号,缓冲器将系统总线信号与局部数据总线隔离。,这时,用ICW4的D
46、2位来区分主片和从片。主片初始化时D2位写1,从片初始化时D2位写0。,89,非缓冲方式下的级连,引脚为输入,用不同的输入区分主片和从片,主片该引脚接高电平,从片该引脚接低电平,此时,ICW4的D2位无用。,90,ICW4 :D1 中断结束方式的设置,ICW4中D1位为1,为自动结束中断方式,即在中服程序的最后,中断返回之前,不需要用软件发送清除ISR对应位的命令,机器在中服运行之前(第二个INTA)自动清除该中服程序所对应的ISR位。这种方式用在中断不会嵌套的系统中。 ICW4中D1位为0,为非自动结束中断方式,需要用软件在中服程序结束前发送清ISR对应位的命令,具体是正常清ISR中最高置1
47、位还是清ISR中的指定位由具体的命令字来决定,在初始化中该位置0只是说明必须要用软件清在服务寄存器ISR。,91,ICW4 :D0,该位置1表示该片8259A用于16位以上的微机,置0表示用于8位微机,用于8086时置1。,92,例:PC机中CPU为8086,8259A与系统总线之间采用缓冲方式,非自动结束方式,1片8259A,正常全嵌套。,0,0,0,0,1,1,0,1,0DH,MOV AL, 0DH OUT 21H, AL,;写入奇地址,93,例:PT86单板机中,CPU为8086,采用非自动结束中断方式,使用两片8259A,非缓冲方式,为使从片也能提出中断请求,主片采用特殊全嵌套方式。主
48、片地址:0FFDEH。,0,0,0,1,0,0,0,1,11H,MOV DX, 0FFDFH MOV AL, 11H OUT DX, AL,94,PC/AT机中有两片8259A,主片地址20H,21H,从片地址A0H,A1H,主片中断类型号08H0FH,从片70H77H,边沿触发,正常全嵌套,非自动EOI。,MOV AL, 11H OUT 20H, AL MOV AL, 08H OUT 21H, AL MOV AL, 04H OUT 21H, AL MOV AL, 01H OUT 21H, AL,MOV AL, 11H OUT 0A0H, AL MOV AL, 70H OUT 0A1H, AL
49、 MOV AL, 02H OUT 0A1H, AL MOV AL, 01H OUT 0A1H, AL,PC/AT机8259A连接图,95,2) 工作方式编程,共有3个工作命令字(操作命令字)OCW(Operation Command Word),均为CPU向8259A发布的命令,3个命令字无顺序,可独立、反复使用。,OCW1:中断屏蔽命令字(写入奇地址),设置中断屏蔽寄存器IMR的内容,为1禁止产生中断输出,为0允许中断。,96,例:若使中断源IR3开放,其余被屏蔽,则OCW1为:,1111 0111 F7H,MOV AL, 0F7H OUT 21H, AL,;写入奇地址,IMR寄存器中的内容
50、还可以被CPU读出,直接读奇地址。,IN AL, 21H,97,例:BIOS中有一段检查中断屏蔽寄存器的程序:,MOV AL, 00H OUT 21H, AL IN AL, 21H OR AL, AL JNZ D6 MOV AL, 0FFH OUT 21H, AL IN AL, 21H ADD AL, 1 JNZ D6 ,;置IMR为全0,;读IMR中的内容,读奇地址,;检查IMR中是否为全0,;不为全0,转错误处理程序D6,;置IMR为全1,;读IMR中的内容,读奇地址,;检查IMR中是否为全1,;不为全1,转错误处理程序D6,98,OCW2:控制中断结束和优先权循环的操作命令字 (写入偶地
51、址),D4 D3为00,用以与初始化ICW1相区别,ICW1中D4为1。,D7R: 用来控制8259A中断优先级是否为轮换优先级的方式,置1为轮换优先级, 置0为固定优先级。,D5EOI: 用来指示该命令字是否为发送中断结束命令。置1为发送非自动结束中断结束命令,置0为该命令与中断结束命令无关,是设置优先级的命令。,99,OCW2一共有两种命令,设置中断轮换优先级或发送中断结束命令,这两种命令又都有一般和特殊两种形式。,设置优先级自动轮换方式:优先级最高为IR0,依次轮换 设置优先级指定轮换方式:指定一个最高优先级,依次轮换 发送正常的非自动结束中断方式; 发送指定的非自动结束中断方式;,10
52、0, 优先级自动轮换方式,优先级的顺序不是固定不变的,一个设备受到中断服务后,其优先级自动降为最低。初始优先级的顺序为IR0IR7。该方式用在系统中多个中断源优先权相同的场合。, 优先级指定轮换方式,与优先级自动轮换方式一致,但初始的最高优先级是指定的,然后再按顺序自动轮换。,101,非自动中断结束方式, 正常EOI命令 该EOI命令使ISR中为1的当前优先级最高的那一位复位。在中服程序中,是一个通用的命令EOI命令(常用)。 指定的EOI命令 在特殊的全嵌套方式下,只根据ISR的对应位是无法确定哪一级中断是最后响应和处理的,所以在程序中要发一指定的EOI命令,向8259A指出要清除的ISR中
53、的具体位。这是在8259A的命令字中实现的,一般用于复杂的多片级联系统中。,102,OCW2一共有两种命令,设置中断轮换优先级或发送中断结束命令,这两种命令又都有一般和特殊两种形式。,在一般情况下,优先级或ISR位是默认的,此时D6位SL置0,D2D0位没有意义,置0; 在特殊情况下,要指定优先级的位或指定清除的ISR中的指定位,所以此时SL为1,说明D2D0位就表示指定的特殊位。,103,正常的EOI命令,复位最高ISR位。,指定的EOI命令,复位指定的ISR位。000111,设置优先级自动循环方式,结束优先级自动循环方式,按L2L0确定一个最低的优先级。000111,EOI命令,使当前中服
54、的ISR位清除,并使当前系统的最低优先级为L2L1L0。,104,例:在IBM PC中,OCW2主要用来结束中断。 ISR中保存着当前正在服务的中断级的置位,如果该位不复位为0,则后续的同级和较低优先级的中断申请将不会被响应。在PC机中,ICW4设置的中断结束方式是正常结束EOI(不是自动结束EOI),它表示必须在中服程序结束之前,由OCW2命令字来清除ISR中最高优先权的位。 在OCW2中,一般EOI的代码是,0,0,1,0,0,0,0,0,20H,MOV AL, 20H OUT 20H, AL,MOV AL, 20H OUT 0A0H, AL,;主片偶地址,;从片偶地址,105,若对IR3
55、中断源采用指定中断结束方式,则需在中断服务程序中,中断返回指令IRET前,写如下程序段:,0,1,1,0,0,0,1,1,63H,MOV AL, 63H OUT 20H, AL,106,OCW3:主要控制8259A的中断屏蔽、查询和读寄存器ISR, IRR等的状态。 (写入偶地址),与ICW1,OCW2的区别是D4, D3为0,1,D2P:置1,8259工作在查询方式; 置0,非查询命令 。,当使8259A设置在查询方式时,将接口的中断控制方式改变为查询控制方式,即使CPU的IF清零,禁止CPU中断,改为CPU查询8259A,看看是否有中断源(外设)申请服务。,107,在设置查询方式后,马上读
56、偶地址,读出的字节含 义如下 :,若此时在程序中判断D7为1,则表示有外设要求服务,其连接在8259A上的管脚编码是D2, D1, D0。,一旦CPU发出查询命令,8259A就将下一个CPU发送给它的CS为低且A0为低(偶地址)及RD脉冲(读偶地址)作为中断响应,如果有中断请求,就将ISR中的相应位置位,并将“查询结果”送上数据总线。,如IR5申请中断,则查询结果是 1000 0101 85H,108,D1, D0 读状态操作,读奇地址,读出的内容为IMR,IRR与ISR也可以被CPU查询。,D1RR: 允许或禁止读寄存器 置1,允许读寄存器; 置0,不允许读寄存器 。,D0RIS: 当D1为1时,该位有意义。 置1,读ISR寄存器(读偶地址); 置0,读IRR寄存器(读偶地址);,偶地址,偶地
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 建立健全原材料采购制度
- 上海建设管理职业技术学院《会计学原理》2025-2026学年期末试卷
- 沈阳药科大学《材料成形工艺基础》2025-2026学年期末试卷
- 上海视觉艺术学院《播音主持创作基础》2025-2026学年期末试卷
- 上海科学技术职业学院《特殊教育概论》2025-2026学年期末试卷
- 上海城建职业学院《环境保护法》2025-2026学年期末试卷
- 上海出版印刷高等专科学校《服装材料学》2025-2026学年期末试卷
- 山西中医药大学《铁运输道收入管理》2025-2026学年期末试卷
- 沈阳建筑大学《C语言》2025-2026学年期末试卷
- 苏州大学《旅游政策法律法规》2025-2026学年期末试卷
- 2026年基于责任区的幼儿园联片教研活动设计方案
- 2026新疆喀什正信建设工程检测有限公司招聘12人考试参考试题及答案解析
- 国家事业单位招聘2023中国地质调查局昆明自然资源综合调查中心第二批招聘拟聘用人员云笔试历年参考题库典型考点附带答案详解
- 2026年宁夏工业职业学院单招职业技能考试题库含答案详解(完整版)
- 代理记账内部交接制度
- 会计内部监督制度
- 乐清农商银行招聘考试真题
- 2026年当辅警笔试题库及一套完整答案
- 三年级两位数乘加乘减计算练习题(每日一练共35份)
- 北京市东城区2025-2026学年高二上学期期末考试化学试卷(含答案)
- 09鉴赏诗歌语言之炼字炼句
评论
0/150
提交评论