《中断控制接口》PPT课件

上传人:xue****ang 文档编号:244792403 上传时间:2024-10-06 格式:PPT 页数:123 大小:3.29MB
返回 下载 相关 举报
《中断控制接口》PPT课件_第1页
第1页 / 共123页
《中断控制接口》PPT课件_第2页
第2页 / 共123页
《中断控制接口》PPT课件_第3页
第3页 / 共123页
点击查看更多>>
资源描述
单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,第七章 中断控制接口,第一节,中断概述,一、概念,所谓中断,就是当CPU正常运行程序时,由于内部或外部的随机事件,引起CPU暂时中止正在运行的程序,转而去执行请求中断的外设(或内部事件)的中断服务程序,中断服务结束后再返回被中止的程序。这一过程称为中断。,二、中断的用处,主机可以与外设同步并行操作;,实时处理;,故障处理,中断概念,1中断源,能够引起程序中断的事件都称为中断源。,有些中断是已知的,例如指令中断源,这类中断源是以指令的形式给出的,例如INT 20H,这条指令如同其它的汇编指令一样,是,出现在程序中的,所以这个中断源什么时候发生是预先知道的;,有些中断源是随机的,也就是说,提出中断请求的时刻是未知的,例如硬件中断,中断源是通过中断控制接口电路输入至CPU的,,中断源具体的发生时刻与外部硬件电路有关。,2中断优先级,当系统中有多个中断源同时到来时,就需要将中断源排个队,优先级高的中断服务程序先执行,执行完优先级别高的中断服务程序,再执行优先级别低的中断服务程序。,完成中断优先级的排列可以是软件查询方式,也可以利用硬件电路实现。,软件查询方式的硬件电路简单,但是需要利用程序来控制优先级的执行顺序,对于简单的小型微机系统可以用此方法。,硬件电路实现优先级排列,不必利用程序控制。,3中断嵌套,所谓中断嵌套是指高优先级别的中断打断当前低优先级的中断服务程序的执行。,4中断类型号,中断类型号是指每个中断源的编号。,每个中断源都有唯一的编号,每一个编号都对应各自的中断服务子程序。当响应中断时,必须首先获得中断类型号,有了中断类型号,才能找到对应的中断服务子程序。,中断处理过程,1、 中断请求,外设需要CPU服务时,首先要发出中断请求。发出中断请求的外设就是中断源。,广义地说,能引起CPU程序产生中断的随机事件都称为中断源。不仅外部可以产生中断,CPU的内部也可以产生中断。这些中断源的共同特点是都需要CPU对其进行适当的处理 。而处理的步骤(程序)是预先已设定好的。,2、 中断判优,当系统具有若干个中断源时,若某一时刻有两个及以上的中断源同时发出中断请求,因为CPU往往只有一条中断请求线(INTR),而CPU任一时刻只能响应并处理一个中断,这就要求CPU判别优先级最高的中断源并响应之。,中断判优就是要解决请求中断的事件优先级的顺序问题,。,中断判优的方法有软件判优和硬件判优两种。软件判优电路简单,判优速度慢;硬件判优电路复杂,判优速度快。,用软件方法确定中断优先权,申请中断,CPU响应中断后,在中断服务程序中用软件判断中断源。,XOR AL, AL,MOV DX, 340H,IN AL, DX,RCR AL, 1,JC SERV0,RCR AL, 1,JC SERV1,;读中断寄存器状态,;判断是否为0#申请中断,;判断是否为1#申请中断,;清CF,用硬件方法确定中断优先权,雏菊花链式电路,中断优先级自上而下,上面端口的中断请求可以屏蔽下面的中断请求。硬件电路自然完成了中断判优。,3、中断响应,中断响应就是CPU中断现在正在进行的处理任务,转向中断请求相对应的中断处理程序的过程,。在中断响应过程中应解决以下四个问题:,保护断点,,,保护现场,(如标志寄存器或其他寄存器);,CPU关中断,,不允许此时被新的中断源所打断;,转入中断请求所对应的处理程序,。,最后一个问题是实现CPU控制权的转移,它是中断响应过程的关键。其实质是,如何由中断源得到相应服务程序的入口地址的问题,。现在常用的方法是采用中断向量,即由所响应的中断源在中断响应时间向CPU提供自己的中断向量号,CPU根据中断向量号就能够找到中断服务程序的入口地址,进而转入中断服务程序。,4、中断处理,中断处理就是执行中断服务程序,以完成中断源提出的处理要求,,中断服务处理程序是软件编程问题,与子程序的编写原则类似。在中断服务程序中,用STI指令开中断,以实现中断嵌套,并对服务程序中的所用的寄存器应预先保护(若中断响应中CPU不是自动保护的话),而在服务程序后面加入恢复现场的语句。,5、中断返回,中断返回就是控制权由中断服务程序转移到被中断的程序的过程。,执行中断返回指令与一般“返回主程序”指令类似。所不同的是,大多数中断返回指令还有其他的附加功能,例如部分或全部恢复CPU的现场(除程序计数器外,还有标志寄存器FR等),有些CPU的中断返回指令可自动恢复全部通用寄存器的内容。,第二节 8086的中断系统,一、中断源与中断识别,中断源:发出中断请求的外部设备或引起中断的内部原因,.,1) 外设中断,:系统外部设备要求与CPU交换信息而产生的中断;,2) 指令中断,:为了方便用户使用系统资源或调用软件而设置的中断指令,如调用I/O设备的BIOS及DOS系统功能的中断指令和设置断点中断等;INT 21H,3) 程序性中断,:程序员的疏忽和算法上的差错,使程序在运行过程中出现了多种错误而产生的中断。如溢出中断、地址越界中断等;,4) 硬件故障中断,:机器在运行过程中,硬件出现偶然性或固定性错误而引起的中断。如奇偶校验错、电源故障等。,中断识别:,CPU响应中断后,只知道有中断源请求中断服务,但并不知道具体是哪一个中断源在申请中断。因此,CPU要设法寻找中断源。,中断识别的目的是要形成该中断源的中断服务程序的入口地址,,以便CPU将此地址放入CS:IP寄存器,从而实现程序的转移。,微机中断源,硬件中断(外部中断),软件中断(内部中断),1. 硬件中断,硬件中断是由来自外部的事件产生的,即由外部设备提出中断申请而产生的。硬件中断的产生具有随机性,何时产生中断,CPU预先并不知道。,8086的硬件中断有两种:不可屏蔽中断NMI和可屏蔽中断INTR。,NMI:当NMI引脚有上升沿触发信号时,,产生中断类型号为2的NMI请求,,并由此转入相应的中服。,其中断不能屏蔽,优先级最高,,常用于紧急的故障处理,由系统使用。在8086中,NMI用于存储器奇偶校验错,I/O通道校验错和协处理器运算错,它们通过或门进入NMI线。,NMI(Non-Maskable Interrupt),17引脚,非屏蔽中断请求信号,,输入,。,上升沿触发(边沿触发),。,非屏蔽中断请求,不受中断标志IF的影响,,,不能用软件控制(屏蔽),每当该端输入一个,正沿触发信号,时,CPU就会在当前指令周期结束后,进入,中断类型号为2,的中断处理程序,在8086微机中,该中断用于,I/O与内存的奇偶校验,。,INTR:可屏蔽中断,电平触发,高电平有效,CPU响应INTR的条件:,1) IF为1,开中断;,2) 无非屏蔽中断及总线请求;,3) CPU执行完当前指令。,CPU在指令周期的最后一个T状态采样INTR线,若满足以上条件,CPU就响应中断请求,开始两个中断响应周期。与总线周期一样,每个中断响应周期是由4个T状态组成的。,CPU在执行每条指令的最后一个时钟周期会对INTR信号进行采样,若CPU的,IF为1,且,INTR信号为高电平,,CPU会在现行指令结束后响应中断请求,进入中断处理程序。,可屏蔽中断请求,18引脚,可屏蔽中断请求信号,,输入,。,高电平有效(电平触发),。,INTR (Interrupt Request),24引脚,中断响应信号,,输出,为连续两个总线周期的负脉冲,。,(Interrupt Acknowledge),当外设向CPU申请可屏蔽中断INTR,CPU如果允许中断,则连续发出两个负脉冲给外设。,第一个负脉冲通知外设已受理中断,;外设在第二个负脉冲时,向数据总线上发送中断类型码,。,中断响应信号,中断响应周期时序图,1) 在第一个响应周期内,CPU输出总线锁定信号LOCK,防止其他处理器或DMA控制器占用总线。与此同时,外设收到此信号,知道CPU已响应中断,开始准备送中断类型码;,2) 在第二个响应周期时,总线锁定信号LOCK解除,ALE无效,允许数据线工作。此时,外设(中断控制器)将已准备好的中断类型码送上,数据总线,供CPU读取。,2. 软件中断,软中断是由用户在程序中发出中断指令,INT nH,产生的,其中n称为软中断号。何时产生软中断是由程序安排的,是可以预知的。,软中断包括ROM-BIOS中断和DOS中断两部分。,ROM-BIOS中断,:占用中断号10H1FH, 05H,40H, 41H, 46H,其中包括对I/O设备的控制。,如:INT 16H 键盘I/O控制; INT 1AH 时钟控制,DOS 中断:,占用中断号20H3FH,提供了DOS的主要功能。如:INT 21H 系统功能调用。,a. 公开的DOS专用中断,INT 22H 程序结束 INT 23H Ctrl-C出口地址,INT 24H 严重错误出口地址,供内核代码专用,用户不能在应用程序中直接调用。,b. 未公开的DOS专用中断,c. DOS可调用中断(5个),INT 20H 程序终止退出处理程序,INT 25H 磁盘扇区读出程序,INT 26H 磁盘扇区写入程序,INT 27H 程序终止驻留处理程序,INT 2FH 多路复用中断处理程序,d. 系统功能调用中断,INT 21H (具有00H6CH个子功能) 供用户直接调用,e. DOS保留,30H3FH为DOS保留,新增 INT 33H 鼠标中断,.,未定义自由中断,(40HFFH),基本系统未对它们指定用途,可由系统扩展或根据应用需要作出新的定义。,(1),系统保留区,(40H5FH),(2),用户保留区,(60H6FH),(3),扩充外部硬中断区,(70H77H):8259,从片用,(4),未使用区,(78H7FH),(5) BASIC,使用区,( 80HEFH) (6),内部使用区,(F0HFFH),系统层次结构,减少了硬件的依赖性,3. 特殊中断,由内部的突发事件所引起的中断,CPU指定中断,。,在指令的执行过程中,,CPU发现某种突发事件时就启动内部逻辑转去执行预先规定的中断号对应的中断服务程序,。这类中断也是不可屏蔽的中断,其处理过程类似于软中断,有时也归为软中断。,(1) 0号中断:除数为0的中断,当微处理器执行DIV(无符号数除法)或IDIV(有符号数除法)指令时,若,出现商超出机器所能表示的最大范围,,就如同被0除了一样,这时引起0号中断。,(2) 1号中断:单步中断,微处理器执行一条指令前,如果,检测到单步标志位TF为1,,则在,该条指令执行后立即停止,引起1号中断,,支持程序的单步跟踪功能。,如DEBUG.EXE调试程序中的跟踪命令T,就是将TF置为1。,(3) 3号中断:断点中断,当微处理器,执行当前指令码为CCH(INT 3H)时,立即引起3号中断,。,系统并未提供断点中断的中服程序,,通常由实用软件自己设计。如DEBUG的G命令允许设置多达10个程序断点,并对断点处的指令执行结果进行显示,供用户检查。,(4) 4号中断:溢出中断,当,微处理器执行CEH(INTO)指令,时,当,检测到溢出标志OF为1时,,立即引起溢出中断。,在运算过程中出现溢出标志OF为1后,CPU并非自动转入溢出处理程序。OF=1只是溢出中断的一个必要条件。用户在编程时,,若要对某些运算操作进行溢出监控,就应在这些操作指令后面加上INTO指令,并设计相应的溢出中断服务程序,。当OF=0时,INTO不会产生任何操作。,8086中断源(共有256个 00HFFH),中断优先级: 软中断、NMI、INTR、单步中断。,软中断内没有级别。,第三节 中断向量表,中断向量表与中断服务类型号(中断向量),中断(软中断除外)是随机发生的事件,CPU在每个指令周期都要巡视中断源,也就是说,在程序的执行过程中,随时有可能中止当前程序,转移到正在申请的中断源对应的中断服务程序中去。,问题:CPU如何找到中断服务程序的地址?,在正常运行的程序中不可能出现中服地址,不可能有,CALL 中断服务程序,指令,因为中断是随机的。,8086系统一共有256个中断源,将这些中断源都编上号,依次是,00HFFH,号,这个号就称为,中断类型号,。如溢出中断为4号中断等。,每个中断类型号都对应着相应的中断服务程序,这些中断服务程序可以存放在存储器的任何位置。,但一旦程序运行,这些中服的入口地址在存储器中都是已知、固定的,,每个中服程序的入口地址称为一个中断向量,。,将这些中断类型号对应的中服入口地址集中起来列成一个表,放到存储器的固定区域内,这个,按顺序存放中服入口地址的表就称为中断向量表,。,中断向量表存放在存储器的底部,,每个中服地址(中断向量)占用4个单元,(CS:IP),8086一共有256个中断源,因此中断向量表占用4256=1024个存储单元,地址为:,00000H003FFH,。,AA,BB,CC,DD,MM,NN,XX,YY,00000H,003FFH,00004H,00008H,0号中断中服地址:,MMNNH:XXYYH,1号中断中服地址:,AABBH:CCDDH,在中断系统中,有相当一部分中断源没有定义,即中断向量空着,等待分配。,8086系统对256种中断类型号已进行了地址分配,,其中类型号04为专用中断,,对应的中断服务程序的入口地址已由系统定义,用户不能更改。类型04分别用于除法出错、单步中断、NMI中断、断点中断和溢出中断。,类型05H3FH为系统使用的中断,,(CPU公司和操作系统的公司)已开发使用了其中的大部分。例如类型08H0FH为8259A中断向量号,10H1FH为BIOS专用中断向量号,20H3FH为DOS专用向量号,其中的21H为DOS功能调用。,用户可以使用40H以后的系统未保留的中断向量号,AA,BB,CC,DD,MM,NN,XX,YY,00000H,003FFH,00004H,00008H,如何根据中断类型号获取中服入口地址?,CPU将中断类型号乘4,,即获得存放该中服地址的中断向量表的首地址,,从该地址处开始的4个单元存放的即是所需要的中服地址,。,4n+34n+2:4n+14n,例如:中断类型号70H,存放中服地址的存储空间为:,70H401,11 00,00,00,B=1C0H,1C3H1C2H-CS,1C1H1C0H-IP,执行中服,设中断向量表0005CH0005FH单元的内容依次为90H, 78H, 40H, 23H, 则对应的中断类型号及中断服务子程序的入口地址CS:IP分别为_。,17H, 2340:7890H,中断类型号为40H的中断服务程序入口地址存放在中断向量表中的起始地址是_。,0000:0100H,如果CPU计算出来的中断向量表的地址为0001:0018H ,则中断控制器8259A发出的中断类型码(十六进制)是_。,0AH,中断服务程序的装载,即,如何把中断服务程序的入口地址放入中断向量表中,(在主程序中放),有两种方法:,1. 直接写入法,直接将中断类型号4,,找到具体的内存单元后将中服程序的段地址和偏移地址依次写入,。,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,; 取中服的偏移地址,;将偏移地址放入中断向量表,; 取中服的段地址,2. 系统功能调用法,使用25H号功能调用可以完成上述操作,中断类型号:AL,中服程序入口段地址: DS,中服程序入口偏移地址: DX,PUSH DS,MOV DX,SEG INTV,MOV DS,DX,MOV DX,OFFSETINTV,MOV AL,72H (n),MOV AH,25H,INT 21H,POP DS,入口参数:,;中服段地址,;中服偏移地址,;中断类型号,;系统功能调用号,35H号功能调用正好与此相反,,用于读取中断向量表中的中服程序的入口地址,。(将系统暂时不用的中断号借给用户,即将中断向量表中的中服程序的地址改变,用户使用完该中断号后再将中断向量表复原)。,入口参数,:中断类型号:AL,出口参数,(读取的中服地址):,中服程序入口段地址:ES,中服程序入口偏移地址:BX,MOV AL,0CH,MOV AH,35H,INT 21H,MOV INTCS, ES,MOV INTIP, BX,;读取中断类型号为0CH的中服地址,;将读出的原中服,段地址,放入变量INTCS中,;将读出的原中服,偏移地址,放入变量INTIP中,3用串指令装入,【例7.3】中断类型号为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; 装入中断服务程序偏移地址,第四节 8086CPU中断服务子程序,中断响应过程,三种中断方式(软件、NMI、INTR),CPU的响应过程各不相同。,软件中断由程序设定,它不受IF标志的影响,中断类型号由INT n中的n决定。,CPU在执行软件中断时,没有中断响应周期,。,CPU根据指令中的类型号n就能转入相应的处理程序入口,。所以,用INT n指令可以模拟任何中断源,,用来调用256个入口的任何一个中断处理程序。由于它把中断的随机事件变成了执行INT n 指令的必然事件,可使中断处理程序和一般子程序一样容易调试。,对NMI请求,不必判断IF标志,也不用外设接口给出中断向量号,,CPU响应时不发中断响应周期(不回应),自动生成其类型号2,然后转入相对应的处理程序入口,。,对INTR请求,CPU响应时要比上述两种情况复杂一些。,CPU响应中断后,对外设接口发出两个中断响应周期,INTA,(8288发的),。每个中断响应周期依然为4个时钟周期,,INTA在T2,T3状态有效。,中断响应周期时序图,1) 在第一个响应周期内,CPU输出总线锁定信号LOCK,防止其他处理器或DMA控制器占用总线。与此同时,外设收到此信号,知道CPU已响应中断,开始准备送中断类型码;,2) 在第二个响应周期时,总线锁定信号LOCK解除,ALE无效,允许数据线工作。此时,外设(中断控制器)将已准备好的中断类型码送上数据总线供CPU读取。,CPU,接收此中断号,由此查找中断向量表找到对应中服程序的入口地址,。,无论哪一种中断,CPU在响应中断时,,最重要的是要得到中断类型号,;之后,应完成如下操作:,1)把标志寄存器FR的内容压入堆栈,2)将TF值保存到TEMP,然后使IF=0,TF=0,即屏蔽INTR中断和单步中断。,3)保存断点,即将断点处的CS和IP内容压入堆栈。,4) 中断类型号4,得到相应中断类型号在中断向量表的位置,从这个位置处取出4个字节,,4n+34n+2-CS, 4n+14n-IP,转入中断处理程序。,当中断处理结束后,应执行,IRET,指令,该指令将从堆栈中弹出三个字,即FR的内容和断点地址,,在中断服务程序中要用到的寄存器,用户在使用之前应予以保护,在中断返回IRET前应予以恢复,,使CPU的现场与中断前完全一样 。,中断服务程序结构,1)程序开始必须保护中断时的现场,中断服务程序用到的寄存器可以用PUSH指令将它们压入堆栈保护。,2) 若允许中断嵌套,则用STI指令来设置开中断,使IF=1,3) 编制中断处理程序,4) 用CLI指令关中断,使IF=0,禁止返回前其他中断请求进入。,5) 给中断控制器送中断结束命令EOI,使当前正在处理的在服务标志清零,以解除对同级或低级中断请求的屏蔽6) 恢复现场,用一系列POP指令将保护的寄存器恢复,7) 用IRET指令返回主程序,CPU会自动恢复断点地址和FR内容。,中断类型码,中断向量,中断向量表,中断号n 00HFFH,对应中断号的中服地址,中服地址排列在内存的低端形成的表,只有可屏蔽中断INTR是由外设提供中断号,在第2个中断响应周期外设将中断号送入数据总线。,中断号,查找中断向量表,取出中服地址,转入中服程序,IBM PC/AT的硬件中断(主片),中断类型码,中断源,中断向量地址,中断类型码,中断源,中断向量地址,08H,计时器,20H23H,0CH,串口1,30H33H,09H,键盘,24H27H,0DH,并口2,34H37H,IR2,接从片,0EH,软盘,38H3BH,0BH,串口2,2CH2FH,0FH,打印机,3CH3FH,IBM PC/AT的硬件中断(从片),70H,实时时钟,1C01C3,74H,用户,1D01D3,71H,用户,1C41C7,75H,协处理器,1D41D7,72H,用户,1C81CB,76H,硬盘,1D81DB,73H,用户,1CC1CF,77H,用户,1DC1DF,PC/AT机8259A连接图,键盘中断:,按下中断一次,松开中断一次。,第五节 中断控制器8259A,一、8259A的结构和逻辑功能,8259A是一个,可编程的中断控制器,,可实现中断优先权管理、中断屏蔽、中断嵌套、,中断类型码,自动提供、级连等功能。单片8259A可管理8级中断,通过级连可实现64级主从中断系统。8259A的引脚与内部结构如图。,8259对外有28条引脚。与其他I/O接口芯片一样,引脚信号除了数据、地址、片选、读写等信号外,还有一些特有的信号:,IR0IR7,:8个异步中断请求输入信号。分别接来自不同外设的中断源,高电平或上升沿表示有请求。,INT:,中断请求信号,(输出),,向CPU发中断请求。,:中断响应输入信号,接收CPU响应中断后的应答信号。,CAS2CAS0:,主从级连双向信号,。当系统的中断请求多于8个时,可用两个或更多的8259A级连,其中一个是主控制器,其余是从控制器。,从片的INT输出接到主片的一个IR输入,。,在中断响应期间,若主8259A判定,所响应的是由某一从片发出的请求,则它在级连线上发出该从片的识别号,并由各从片接收。从片将自己的识别号与该级连线上的号相比较。若一致的话,,它应在第二个INTA响应周期,把自己片内中断源的类型号通过D7D0送给CPU,以便把控制引导到所对应的中断服务程序入,口.,主从或缓冲方式,双向信号。,当其为输入时,,由它决定该片为主片(,SP,=1)或从片(,SP,=0)。,当其为输出时,,8259A处于“缓冲方式”,该信号用来控制双向总线驱动器的启动(,EN,)端。这种方式常用于多片级连的大系统中。,A0:,地址选择信号,,用来对内部寄存器进行选择,通常接总线的A0。,即8259A的内部寄存器占外设的两个地址,称为奇地址和偶地址。,8259内部结构,中断请求寄存器(IRR),:Interrupt Request Register 一片8259A有8条外界中断请求线IR0IR7,每一条请求线有一个相应的触发器来保存请求信号,从而形成了中断请求寄存器。外设产生中断请求方式有两种:一种是边沿触发,上升沿触发;另一种电平触发,输入信号保持高电平触发。,用户可根据需要通过编程来实现,。,外设中断申请,优先权电路:,对保存在IRR中的各个中断请求,经过判断确定最高的优先权,并在中断响应周期把它选通至在服务寄存器(ISR)。,在服务寄存器(ISR),:IN-Service Register 储存当前,正在服务的中断源的标志,。ISR的,置位,是在中断响应的,第一个INTA,有效时完成的。,中断屏蔽寄存器(IMR):,Interrupt Mask Register ,由用户编程进行设置,可以对IRR中的相应的中断源进行屏蔽,对于较高优先权的屏蔽不影响较低优先权的输入。,控制逻辑电路:,对片子内部的工作进行控制,使它按编程的规定工作。,数据总线缓冲器:,与CPU的数据总线连接,传输命令等。,二、8259A的工作方式,1. 中断触发方式,1) 边沿触发方式:以上升沿向8259A请求中断,上升沿后可一直维持高电平,不会再次产生中断;,2) 电平触发方式:以高电平申请中断,但在响应中断后应及时清除高电平,以免引起第二次中断;,3) 中断查询方式:外设以上升沿或高电平通过8259A向CPU申请中断,但8259A却不使用INT信号向CPU申请中断,只是等待CPU用软件查询8259的状态以确定中断源,并用程序转入相应的处理程序。,2. 连接系统总线的方式,在多片级连的大系统中,要求数据总线有总线缓冲器。8259A与这种,带总线缓冲器的系统总线连接的方式称缓冲方式,。此时SP/EN用于输出,启动缓冲器工作,不能用作表示主从关系。,故需要在初始化设置中设置专用位来表示级联系统中的主从关系。,若在小系统中,8259A的D7D0可以直接与数据总线连接,不需要总线缓冲器,这种方式称为,非缓冲方式,,此时,SP/EN用作输入,用于表示级联系统中的主从关系,即该引脚接高电平表示该芯片为主片,接低电平表示该芯片为从片。,缓冲方式,非缓冲方式,3. 屏蔽中断源的方式,1) 通常屏蔽方式:利用操作命令OCW1,使屏蔽寄存器IMR中的某一位或某几位置1来屏蔽相应输入端的中断请求,若要开放某个中断源,则在相应位置0;,2) 特殊屏蔽方式:在某些场合,在执行某一个中断服务程序时,要求允许另一个优先级比它低的中断请求被响应。这时可采用特殊的屏蔽方式,即在优先级高的中服中,用OCW1将IMR中本中断的对应位置1,将本级中断屏蔽,同时将ISR(在服务寄存器)中该中断的对应位清零,对外界来说,就好像CPU此时没有处理该中断,这样,即使是最低级的中断请求,也会被CPU响应。,特殊屏蔽方式一般是在高优先级中服中使用。,4. 优先级排队方式,1) 全嵌套方式(正常),中断优先级按IR0IR7顺序排列,并且只允许中断级别高的中断源中断级别低的中服程序,而不能相反。这是8259A的常用方式,若在对8259A初始化后,没有设置其它优先级方式,自动按此方式工作。,2) 特殊全嵌套方式(级联),中断优先级按IR0IR7顺序排列,当执行某一级中服时,,可响应同级中断源提出的中断请求,,从而实现中断请求的特殊嵌套。,(1) 从片IR5连接的外设通过主片IR3管脚申请中断,CPU进入从片IR5的中服;,(2) 在CPU进入执行从片IR5的中服期间,从片IR2连接的外设又有中断申请;,(3) 对从片而言,IR2的优先级大于IR5,应该打断IR5的中服,但对主片而言,它们同是一个优先级IR3,所以如果工作在正常全嵌套方式下,CPU不能执行从片IR2的中服.,(4) 所以,在级联情况,应使主片工作在特殊的全嵌套方式下。,3) 优先级自动轮换方式,优先级的顺序不是固定不变的,一个设备受到中断服务后,其优先级自动降为最低。,初始优先级的顺序为IR0IR7,。该方式用在系统中多个中断源优先权相同的场合。,初始,IR,0,IR,1,IR,2,IR,3,IR,4,IR,5,IR,6,IR,7,IR,3,申请后,IR,4,IR,5,IR,6,IR,7,IR,0,IR,1,IR,2,IR,3,IR,6,申请后,IR,7,IR,0,IR,1,IR,2,IR,3,IR,4,IR,5,IR,6,优先级:高 低,4) 优先级,指定,轮换方式,与优先级自动轮换方式一致,但,初始的最低优先级是指定的,,然后再按顺序自动轮换。,初始指定,IR,1,IR,2,IR,3,IR,4,IR,5,IR,6,IR,7,IR,0,IR,1,5. 结束中断的处理方式,当8259A的某个中断源顺利申请CPU中断时,在ISR中这个中断源的对应位置位,结束中断的处理方式就是对ISR中的该位进行处理。,1) 自动中断结束方式,在中服程序的最后,中断返回之前,不需要用软件发送清除ISR对应位的命令,机器在中服运行之前(第二个INTA)自动清除该中服程序所对应的ISR位。这种方式用在中断不会嵌套的系统中。,2) 非自动中断结束方式,(1) 正常EOI命令,该EOI命令使ISR中为1的当前,优先级最高,的那一位复位。在中服程序中,是一个通用的命令EOI命令(常用)。,(2) 指定的EOI命令,在特殊的全嵌套方式下,只根据ISR的对应位是无法确定哪一级中断是最后响应和处理的,所以在程序中要发一指定的EOI命令,向8259A指出要清除的ISR中的具体位。这是在8259A的命令字中实现的,一般用于复杂的多片级联系统中。,三、中断响应过程,1) 系统中只有一片8259A,(1) 当有一条或若干条中断请求线(IR0IR7)变高时,则使中断请求寄存器IRR的相应位置位;,(2) 若中断请求线中至少有一条的中断申请是允许的,即未被屏蔽的,则8259A由INT引脚向CPU送出中断请求信号,(3) 若CPU处于开中断状态(IF=1),则在当前指令执行完后,发出INTA中断响应信号;,(4) 8259A接收到第一个INTA信号,把允许中断的最高优先级请求置位ISR,,并清除IRR中的相应位,;,(5) 在第二个INTA期间,8259A发出中断类型号。如果是自动结束中断方式,INTA脉冲后沿复位ISR的相应位。在其他方式中,ISR相应位要由中断服务程序结束时发出的EOI命令来复位。,第一个INTA脉冲,第二个INTA脉冲,若从片A的,IR4,通过主片申请中断,CPU响应后,在,第一个INTA,周期,主片将这个设备的ID(连接主片的管脚号,010,) 发送到级连线,CAS0CAS2,,各个从片收到这个级连号与本片寄存器存储的ID相比较,在第二个INTA期间,被选中的从片就将自己的中断类型号送上数据总线。,当系统的从片数目小于8时,一定不要把从片的INT接到主片的IR0上,。,这是因为主片的非级连的IR有请求时,主片在级连线上的驱动信号为000,,就好像是让IR0上的从8259A响应一样,若这时真有一个从8259A接到主IR0输入,它响应中断而发出的向量号将与主片发出的向量号在总线上产生冲突而产生错误。所以,,主片的IR0输入只有当其IR1IR7全接上从片时才最后用来接从片,。,四、8259A的编程,1. 初始化编程,由CPU向8259A送24个字节的初始化命令字ICW(Initialization Command Word)。如何知道CPU在向8259A初始化?,若CPU用一条输出指令向8259A的,偶地址(A,0,=0)写一个字节的命令字,,这个命令字的D,4,位为1,,这个命令字就被8259A解释成为初始化命令字ICW1,,ICW1启动了8259A片内的初始化程序,8259A自动发生下列事件。,1)边沿敏感电路复位,这意味着在初始化以后,,中断请求输入线必须由低变高才产生中断,;,2) 中断屏蔽寄存器清零;,3),IR7输入被赋为优先权7,(最低优先权)。,对初始化编程说明如下:,1) 设置初始化命令字ICW1ICW4的口地址规定如下:,ICW1必须写入偶地址口,ICW2ICW4必须写入奇地址口,2),ICW1ICW4的写入次序固定不变,不可颠倒,。,3) 对每片PIC均需写入ICW1和ICW2,是否写入ICW3和ICW4均由ICW1的相应位决定。只有在级连的方式下,主、从片才须写入ICW3;仅当8086/8088系统或须设置特殊全嵌套方式、缓冲方式、自动中断结束方式时,才写入ICW4。,在级连方式下,主、从片的ICW3的各位含义不同,。,ICW1:芯片控制初始化命令字 (,写入偶地址 A,0,=0,),D,7,D,6,D,5,D,4,D,3,D,2,D,1,D,0,1,LITM,SNGL,IC4,1,1 电平触发,0 边沿触发,1 单片,0 级连,1 需要ICW4,0 不需ICW4,若8259地址20H,21H,采用电平触发,单片使用,需要ICW4,编程如下:,D,7,D,6,D,5,D,4,D,3,D,2,D,1,D,0,0,0,0,1,1,0,1,1,1BH,MOV AL,1BH,OUT,20H, AL,;写入偶地址,ICW2:中断类型码初始化命令字 (写入奇地址),规定本片8259A所带的外设IR0IR7的中断类型号,在中断响应时将外设对应的该类型号送上数据总线。,编程时规定D7D3,即高5位,,低3位由IR0IR7的管脚序号自动形成。,D,7,D,6,D,5,D,4,D,3,D,2,D,1,D,0,T,7,T,6,T,5,T,4,T,3,0,0,0,在PC机中,硬盘中断类型号是0DH,它连接在8259A的IR5上,则向8259A写的ICW2是什么?,D,7,D,6,D,5,D,4,D,3,D,2,D,1,D,0,0,0,0,0,1,0,0,0,08H,0000 1,101,MOV AL,08H,OUT,21H, AL,;写入奇地址,例如:,PC/XT,机中ICW2的,D7,D3,是,00001,,则接在,IR0,IR7,上的设备的中断类型号依次,08H,,,09H,,,.,,,0FH,。,D,2,D,1,D,0,0,0,0,0,0,1,0,1,0,0,1,1,1,0,0,1,0,1,1,1,0,1,1,1,ICW3,:主,/,从片初始化命令,(写入奇地址),当,ICW1,的,D1,位为,0,时,主从片均需要写入,ICW3,,但主从片的,ICW3,的含义不同,所以设置的命令字也不同。,主片,ICW3,的格式为,:,D,7,D,6,D,5,D,4,D,3,D,2,D,1,D,0,IR,7,IR,6,IR,5,IR,4,IR,3,IR,2,IR,1,IR,0,D,7,与,D,0,对应于,IR,7,IR,0,连接从片的情况,当某一管脚连接从片,则该管脚对应的位置,1,。,如,IR,7,与,IR,4,上接有从,8259A,,则主片中,ICW3,应写为:,1,00,1,0000B,,即,90H,两个从片分别接在主片的IR2和IR6管脚上,则主片的ICW3为:,D,7,D,6,D,5,D,4,D,3,D,2,D,1,D,0,0,1,0,0,0,1,0,0,44H,MOV AL,44H,OUT,21H, AL,;写入奇地址,从片,ICW3,的格式为:,D,7,D,6,D,5,D,4,D,3,D,2,D,1,D,0,0,0,0,0,0,ID,2,ID,1,ID,0,ID,2,ID,0,表明该从片的输出,INT,接在主片的哪个输入管脚上,。,如该片接在主片的,IR,4,上,则从片的,ICW3,应写为:,0000 0,100,B,,即,04H,从片A的INT接在主片的IR2上,从片B的INT接在主片的IR6上,则其ICW3的编程为:,;从片A,MOV AL,02H,OUT,0A1H, AL,;从片B,MOV AL,06H,OUT,21H, AL,ICW4,:方式控制初始化命令,D,7,D,6,D,5,D,4,D,3,D,2,D,1,D,0,0,0,0,SFNM,BUF,M/S,AEOI,uPM,1,特殊全嵌套方式,1,缓冲方式,1主片,0从片,1,自动结束中断方式,1,8086CPU,0,一般全嵌套方式,0,非缓冲方式,0,非自动结束中断方式,ICW4: D4,特殊完全嵌套方式的设置,1) 全嵌套方式(正常),中断优先级按IR0IR7顺序排列,并且只允许中断级别高的中断源中断级别低的中服程序,而不能相反。这是8259A的常用方式,若在对8259A初始化后,没有设置其它优先级方式,自动按此方式工作。,2) 特殊全嵌套方式(级联),中断优先级按IR0IR7顺序排列,当执行某一级中服时,,可响应同级中断源提出的中断请求,,从而实现中断请求的特殊嵌套。,(1) 从片IR5连接的外设通过主片IR3管脚申请中断,CPU进入从片IR5的中服;,(2) 在CPU进入执行从片IR5的中服期间,从片IR2连接的外设又有中断申请;,(3) 对从片而言,IR2的优先级大于IR5,应该打断IR5的中服,但对主片而言, 它们同是一个优先级IR3, 所以如果工作在正常全嵌套方式下, CPU不能执行从片IR2的中服,(4) 所以,在级联情况,应使主片工作在特殊的全嵌套方式下。,使用特殊的全嵌套方式时,值得注意的是,在从片的服务程序完毕后,发送EOI命令给主片之前,要检查从片的其他中断是否还要求服务,这可以通过读它的ISR来确定。,若ISR内容为全零,说明从片中已经没有其他中断要求服务,此时就可将EOI命令送给主片;若ISR不全为零,说明还有从片中断要求服务,此时不能发送EOI命令,否则就会清除主片的ISR位,而使从片中的其他中断得不到服务。,ICW4 :D3D2 缓冲方式的设置,D3=1,系统工作在缓冲方式。,所谓缓冲方式就是指8259A和系统数据总线之间有缓冲器,,因此要设置缓冲器的,控制信号,,以便数据线上有信号出现的时候,可以打开缓冲器,传输信号。,在这种方式下,引脚 就认为是 方式,,输出缓冲器的控制信号,,而此时,如果是多片级连,还要区分主片和从片,所以就,用D2位来区分主片和从片,,若D2=1,该片8259A为主片,若D2=0,该片为从片。,缓冲方式级连,引脚为输出,输出缓冲器开启信号,缓冲器将系统总线信号与局部数据总线隔离。,这时,,用ICW4的D2位来区分主片和从片,。主片初始化时D2位写1,从片初始化时D2位写0。,非缓冲方式下的级连,引脚为输入,,用不同的输入区分主片和从片,,主片该引脚接高电平,从片该引脚接低电平,此时,ICW4的D2位无用。,ICW4 :D1 中断结束方式的设置,ICW4中D1位为1,为自动结束中断方式,即在中服程序的最后,中断返回之前,,不需要用软件发送清除ISR对应位的命令,,,机器在中服运行之前(第二个INTA)自动清除该中服程序所对应的ISR位,。这种方式用在中断不会嵌套的系统中。,ICW4中D1位为0,为非自动结束中断方式,,需要用软件在中服程序结束前发送清ISR对应位的命令,,,具体是正常清ISR中最高置1位还是清ISR中的指定位由具体的命令字来决定,,在初始化中该位置0只是说明必须要用软件清在服务寄存器ISR。,ICW4 :D0,该位置1表示该片8259A用于16位以上的微机,置0表示用于8位微机,用于8086时置1。,D,7,D,6,D,5,D,4,D,3,D,2,D,1,D,0,0,0,0,SFNM,BUF,M/S,AEOI,uPM,1,特殊全嵌套方式,1,缓冲方式,1主片,0从片,1,自动结束中断方式,1,8086CPU,0,一般全嵌套方式,0,非缓冲方式,0,非自动结束中断方式,例:PC机中CPU为80286,8259A与系统总线之间采用缓冲方式,非自动结束方式,1片8259A,正常全嵌套。,D,7,D,6,D,5,D,4,D,3,D,2,D,1,D,0,0,0,0,SFNM,BUF,M/S,AEOI,uPM,1,特殊全嵌套方式,1,缓冲方式,1主片,0从片,1,自动结束中断方式,1,8086CPU,0,一般全嵌套方式,0,非缓冲方式,0,非自动结束中断方式,D,7,D,6,D,5,D,4,D,3,D,2,D,1,D,0,0,0,0,0,1,1,0,1,0DH,MOV AL,0DH,OUT,21H, AL,;写入奇地址,例:PT86单板机中,CPU为8086,采用非自动结束中断方式,使用两片8259A,非缓冲方式,为使从片也能提出中断请求,主片采用特殊全嵌套方式。主片地址:0FFDEH。,D,7,D,6,D,5,D,4,D,3,D,2,D,1,D,0,0,0,0,1,0,0,0,1,D,7,D,6,D,5,D,4,D,3,D,2,D,1,D,0,0,0,0,SFNM,BUF,M/S,AEOI,uPM,11H,MOV DX,0FFDFH,MOV AL,11H,OUT DX, AL,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,MOV AL, 02H,OUT 0A1H, AL,MOV AL, 01H,OUT 0A1H, AL,PC/AT机8259A连接图,2.,工作方式编程,共有3个工作命令字OCW,(Operation Command Word),均为CPU向8259A发布的命令,3个命令字无顺序,可独立、反复使用。,OCW1:中断屏蔽命令字(,写入奇地址,),设置中断屏蔽寄存器IMR的内容,为1禁止产生中断输出,为0允许中断,。,IMR可以屏蔽一个或几个IR的中断请求,它加强了对中断的控制能力。屏蔽单个或部分IR,可以使得在主程序的不同部分使用不同的中断,而不必改变硬件结构,还可以在子程序中禁止比自己优先级高的某些中断,这实际上也就改变了中断的优先级。,例:若使中断源IR3开放,其余被屏蔽,则OCW1为:,设置中断屏蔽寄存器IMR的内容,为1禁止产生中断输出,为0允许中断,。,(写入奇地址),1111 0111,F7H,MOV AL,0F7H,OUT,21H, AL,;写入奇地址,IMR寄存器中的内容还可以被CPU读出,,直接读奇地址,。,IN AL, 21H,例: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,OCW2,:,控制中断结束,和,优先权循环,的操作命令字,(,写入偶地址,),D,7,D,6,D,5,D,4,D,3,D,2,D,1,D,0,R,SL,EOI,0,0,L2,L1,L0,D4 D3为00,用以与初始化ICW1相区别,,ICW1中D4为1,。,D,7,R,:,用来控制8259A中断优先级是否为轮换优先级的方式,,置1为轮换优先级, 置0为固定优先级。,D,5,EOI: 用来指示该命令字是否为发送中断结束命令,。置1为发送非自动结束中断结束命令,置0为该命令与中断结束命令无关,是设置优先级的命令。,D,7,D,6,D,5,D,4,D,3,D,2,D,1,D,0,R,SL,EOI,0,0,L2,L1,L0,OCW2一共有两种命令,设置中断轮换优先级或发送中断结束命令,这两种命令又都有一般和特殊两种形式。,设置优先级自动轮换方式:优先级最高为IR0,依次轮换,设置优先级指定轮换方式: 指定一个最,低,优先级,依次轮换,发送正常的非自动结束中断方式;,发送指定的非自动结束中断方式;,优先级自动轮换方式,优先级的顺序不是固定不变的,一个设备受到中断服务后,其优先级自动降为最低。,初始优先级的顺序为IR0IR7,。该方式用在系统中多个中断源优先权相同的场合。,初始,IR,0,IR,1,IR,2,IR,3,IR,4,IR,5,IR,6,IR,7,IR,3,申请后,IR,4,IR,5,IR,6,IR,7,IR,0,IR,1,IR,2,IR,3,IR,6,申请后,IR,7,IR,0,IR,1,IR,2,IR,3,IR,4,IR,5,IR,6,优先级:高 低,优先级,指定,轮换方式,与优先级自动轮换方式一致,但,初始的最低优先级是指定的,,然后再按顺序自动轮换。,初始指定,IR,1,IR,2,IR,3,IR,4,IR,5,IR,6,IR,7,IR,0,IR,1,非自动中断结束方式,(1) 正常EOI命令,该EOI命令使ISR中为1的当前优先级最高的那一位复位。在中服程序中,是一个通用的命令EOI命令(常用)。,(2) 指定的EOI命令,在特殊的全嵌套方式下,只根据ISR的对应位是无法确定哪一级中断是最后响应和处理的,所以在程序中要发一指定的EOI命令,,向8259A指出要清除的ISR中的具体位,。这是在8259A的命令字中实现的,一般用于复杂的多片级联系统中。,D,7,D,6,D,5,D,4,D,3,D,2,D,1,D,0,R,SL,EOI,0,0,L2,L1,L0,OCW2一共有两种命令,设置中断轮换优先级或发送中断结束命令,这两种命令又都有一般和特殊两种形式。,在一般情况下,优先级或ISR位是默认的,此时D6位SL置0,D2D0位没有意义,置0;,在特殊情况下,要指定优先级的位或指定清除的ISR中的指定位,所以此时,SL为1,说明,D2,D0位就表示指定的特殊位,。,D,7,D,6,D,5,D,4,D,3,D,2,D,1,D,0,R,SL,EOI,0,0,L2,L1,L0,0,0,1,0,0,0,0,0,正常的EOI命令,复位最高ISR位。,0,1,1,0,0,L2,L1,L0,指定的EOI命令,复位指定的ISR位。000111,1,0,0,0,0,0,0,0,设置优先级自动循环方式,0,0,0,0,0,0,0,0,结束优先级自动循环方式,1,1,0,0,0,L2,L1,L0,按L2L0确定一个,最低的优先级,。000111,1,1,1,0,0,L2,L1,L0,EOI命令,使当前中服的ISR位清除,,并使当前系统的最低优先级为L2L1L0,。,例:在IBM PC中,OCW2主要用来结束中
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 图纸专区 > 课件教案


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!