还剩10页未读,继续阅读
本资源只提供10页预览,全部文档请下载后查看!喜欢就下载吧,查找使用更方便
文本内容:
第七章中断控制接口
一、概述
1.中断技术的作用
(1)何谓中断计算机在执行程序的过程中,当出现异常情况或特殊请求时,计算机停止正在执行的程序,转向对这些异常情况或特殊请求的处理,处理结束后再返回到被停止程序的间断处,继续执行程序的这个过程,就称为中断实现中断所需要的软硬件技术,统称为中断技术
(2)硬中断与软中断由外设硬件产生,称为外中断,也称硬中断;由程序预先安排的中断指令产生的中断,称为内部中断,也称软中断
(3)中断过程包括中断请求、中断响应及判优、中断服务和中断返回4个阶段
(4)中断技术的作用1)实现同步操作使CPU和外设同步工作;使多个外设同步工作2)实现实时处理控制系统可以在需要的任何时间发出中断请求,要求CPU处理控制现场的各个参数、信息;CPU可以立即响应(若中断是允许的),加以处理3)故障处理一些故障,如电源掉电、存储器出错、被0除等,计算机可以利用中断系统进行自行处理,而不必停机或报告工作人员
2.中断源在具有中断控制功能的接口电路中必须包含中断请求触发器,它用于保存外设的中断请求信号,直到CPU响应这个中断请求后才清除当外设有中断请求后,用程序方式有选择地封锁部分中断,而允许其余部分中断仍得到响应,称为中断屏蔽通常在接口电路中增设一个中断屏蔽触发器,用程序方法将该触发器置“1”,将相应设备的中断请求信号封锁,若将其置“0”才允许该设备的中断请求得到响应发出中断请求的外部设备或引起中断的内部原因称为中断源通常中断源有以下几种
(1)数据输入/输出设备如键盘、打印机等
(2)实时时钟
(3)故障报警或程序出借例如,电源掉电、存储器出错、运算溢出、被0除等情况时申请中断,请求CPU紧急处理
(4)数据通道如磁盘、磁带等
(5)为程序调试而设置的中断源
六、8088的中断方式8088系统中每个中断都有一个中断类型码256个,以供CPU进行识别,
1.外部中断硬件中断两条中断请求信号线INTR和NMI,可供硬件设备向CPU发出中断请求信号1可屏蔽中断INTRIF=0,CPU将不响应该中断请求而处理下一条指令IF=1,表示允许中断,CPU在完成当前正在执行的指令后,识别该中断请求,并进行中断处理2非屏蔽中断NMI,中断的类型号为2不受IF的控制,用来通知CPU发生了故障事件,如电源掉电、存储器读写出错误以及总线奇偶位出错等NMI的优先级比INTR高CPU响应NMI时,不必由中断源提供中断类型码
2.内部中断软件中断包括溢出中断、除法出错中断、单步中断、INT指令中断以及断点中断这些中断也不受IF位的控制1除法出错中断在执行除法指令DIV或IDIV时,若发现除数为0或商超过目标寄存器所能表达的范围,则CPU立即产生一个类型为0的内部中断22INT指令中断INT N指令所引起的中断,其中断类型由指令中的N指定3溢出中断如果上一条指令使溢出标志0F置1,则中断指令INTO引起一个类型号为4的中断4断点中断断点中断即单字节INT3指令中断,中断类型码为33号中断是专供断点用的,断点一般可以处于程序任何位置,在断点处停止程序执行过程,以便执行某种类型的特殊处理5单步中断标志TF置1时,8088处于单步工作方式在单步工作时,每执行完一条指令,CPU就自动产生一个类型为1的中断
3.中断的优先级见图7-
524.中断向量与中断向量表8088的中断向量表结构(见第二章图2-5).中断向量表是存放中断服务程序入口地址(即“中断向量”)的表格;内存地址范围00000H-003FFII;每4个字节存放一个中断向量,前两个字节存放入口地址的段内偏移地址,后两个字节存放入口地址的段地址;中断向量地址(指针,)=N*4;
5.8088的中断响应和处理1)获取中断向量类型码
(1)对于可屏蔽中断CPU在当前指令执行完后采样INTR信号,如果IF=1且INTR=1,则CPU执行两个总线周期的中断响应周期,而且都发出有效的中断响应信号在第一个中断响应周期内INTA信号通知8259A中断控制器,中断请求已被接受;在第二个总线周期内INTA信号有效时,8259A必须把请求服务的那个外设的中断类型码送到数据总线上,CPU在T,状态的前沿采样数据总线,获取中断类型码
(2)对于非屏蔽中断CPU采样到NMI线上有中断请求,不受IF的限制,NMI响应也不需要执行中断响应周期,直接在内部形成中断类型2
(3)对于软件中断,中断类型码也是在CPU内部自动形成的,它们是除法出错中断类型码为0;单步中断中断类型码为1;断点中断中断类型码为3;溢出中断中断类型码为4;INTN指令中断类型码为指令中给定的N2)8088在取得中断类型码后的处理过程顺序
(1)将中断类型码乘4作为中断向量地址(指针);
(2)标志寄存器的内容进栈;
(3)复制单步标志的状态,然后清除IF和TF,屏蔽新的INTR中断和单步中断;
(4)保存主程序的断点,即CS和IP进栈;
(5)从中断向量表中取出中断服务子程序的入口地址,分别送IP和CS;
(6)按新的地址执行中断服务子程序在中断服务子程序中,要保护CPU内部寄存器的内容(保护现场)和开中断(若允许中断嵌套)在中断服务子程序执行完后,要恢复现场,然后执行IRET,恢复断点和标志寄存器的内容,返回主程序继续执行具体可参照图7-52所示
七、中断技术举例首先必须进行初始化初始化编程应按初始化流程进行,放在主程序的开头部分;对于16位或准16位微机必须有ICWi、ICW2和ICW;4ICM取决于系统中是否有多片级联若是多片级连则要否则不要ICW3例
7.9某微机系统的8259A与CPU及总线控制器的硬件连接图见图7-53由图可见,由于8259A为单片应用,所以CAS
2、CAS1和CAS引脚不用,SP/EN引脚接+5V现要求利用8259A管理8级硬件中断,中断请求信号采用边沿触发,采用一般全嵌套方式,中断优先级为IRo最高,IR7最低,中断类型码为08H OFH,非自动中断结束方式,端口地址〜为20H,21Ho根据上述硬件连接图和要求,8259A的初始化程序段可编制如下MOV AL,1311;ICW边沿触发,单片,要ICWH4OUT20H,ALMOV AL,08H;ICW,中断类型码为08H2OUT21H,ALMOV AL,0111;ICW,8086/8088系统,非自动结束方式4OUT21H,AL补充例L.只允许键盘中断应该对IMR写入中断屏蔽字OCWi,为1111H01B即FDH,奇地址21H A=l0oMOV AL,FDIIOUT21H,AL补充例2新增设键盘中断IN AL,21HAND AL,FDHOUT21H,AL补充例3清除当前的中断请求,置正常的优先级方式应该写入操作命令字令字为00100000B,即20H,偶地址20H Ao=OMOV AL,2011OUT20H,AL补充例4原为正常的优先级顺序IR0IR7R=0,SL=O,现要求的顺序为IR,IR,,〜〜IR~IR3O O应该写入操作命令字令字为11100011B,即0E3H,偶地址20H Ao=oMOV AL,0E3HOUT20H,AL程序调试时,在程序中设置断点或单步执行程序在一些计算机中,这些功能就要由中断来实现
(6)软件中断由软件中断指令产生的软中断,这是在程序中预先安排好的
3.中断系统的功能
(1)能实现中断及返回利用堆栈进行断点地址的保护与恢复,以实现中断及返回
(2)能实现优先权排队如有多个中断源,必须要设计者事先根据每个中断源的重要程度,给每个中断源确定一个中断级别,即优先权当多个中断源同时发出中断请求时,CPU能找到优先权级别最高的中断源,响应它的中断请求;在优先权级别高的中断源的中断请求处理结束后,再响应级别较低的中断源的中断请求
(3)高级中断能中断低级的中断处理过程
二、中断响应的条件对可屏蔽中断(从INTR引脚接收的请求信号),必须在以下四个条件同时被满足时才能响应
1.无总线请求系统中若有其他总线主控设备,例如协处理器或DMA控制器,它们必须没有发出总线请求信号
2.无非屏蔽中断请求
3.CPU允许中断即CPU内部的中断允许寄存器置1,对于8088CPU,IF=lo
4.CPU执行完当前指令对非屏蔽中断(即从NMI引脚来的请求信号),要无总线请求且CPU执行完当前指令后才予以响应
三、中断响应的操作CPU在响应中断后,将完成以下的工作L关中断对于8088CPU,将IF清
02.保护断点程序断点地址入栈,状态标志入栈对于8088CPU,即CS、IP以及标志寄存器的内容入栈
3.转入中断服务子程序进行中断处理1)送入口地址中断服务子程序的偏移地址送IP,段地址送CS2)中断处理执行中断服务子程序进行中断处理保护现场必须首先把在中断子程序中用到的寄存器内容压入堆栈予以保护;恢复现场中断子程序结束前,将堆栈中的内容退栈至原来的寄存器;开中断与关中断若在中断服务子程序中开中断,允许级别高的中断能得到响应,则在恢复现场前应关中断关中断的目的是让后面恢复现场的工作顺利进行,而不被其他的中断请求所中断
4.中断返回中断服务子程序的最后一条指令是中断返回指令(IRET)IRET指令使CPU自动从堆栈中弹出标志寄存器的内容和断点地址送给标志寄存器、CS、IP,返回被中断的程序继续执行
四、中断优先权问题1)如多个I/O接口同时发出中断请求,CPU首先响应哪个中断请求?2)当CPU正在执行中断服务子程序时,这时又有新的中断请求到来,CPU也要能确定是否进行响应?解决问题的方法1)优先级在设计中断系统时,为每个中断源按处理的轻重缓急指定一个优先级2)中断嵌套对CPU正在处理中断时又有新的中断请求发生的情况,一般要能响应更高优先权的中断请求,而屏蔽掉同级或低级的中断请求,即中断嵌套CPU判别优先权的方法有软件查询、编码比较电路、链式排队电路,以及专用硬件处理器四种方法
1.用软件查询确定中断优先权的方法方法是CPU响应中断后用软件查询方法确定具有最高优先权的中断源,并为之进行中断服务2)查询程序如下MOV DX,Port;Port为端口地址;读入中断请求寄存器的内容IN AL,DXSHR AL,1;若0#有请求,则转0#中断服务程序JC SERVEROSHR AL,1;若1#有请求,则转1#中断服务程序JC SERVERISHRAL,1;若2#有请求,则转2#中断服务程序JC SERVER2SHRAL,1;若3#有请求,则转3#中断服务程序1)软件查询方法也需要一定的硬件配合(见图7-36)
2.中断优先权排队电路
(1)中断优先权编码电路(见图7-37)组成:编码器、比较器及优先权寄存器作用:实现优先权排队和中断嵌套工作原理:1)设有8个中断源,当任何一个有中断请求时,通过“或”门可产生一个中断请求信号,但它能否送至CPU进行中断请求,还要受比较器的限制2)对多个中断请求输入线同时输入,编码器只输出优先权最高的编码A2A1A3)比较器对编码A2AA与正在进行中断处理的外设的优先权编码B2B1B的大小进行比较:AWB,则“AB”端输出低电平,封锁与门1,禁止向CPU发出新的中断请求;AB时,比较器输出为高电平,允许向CPU发出新的中断请求4)若CPU正在运行主程序或者希望CPU在进行某一级中断处理时不屏蔽低级的中断请求,则可置优先权失效信号为高电平,此时如有任一中断请求到来,都能通过与门B向CPU发出中断请求信号5)当外设的个数W8时,它们通过中断向量产生电路产生中断向量(类型码)送到CPU,中断向量(类型码)中的三位由比较器的编码A2AA提供,因此不同的编码,即可转入不同的入口地址
(2)链式中断优先权排队电路又称为雏菊花环(Daisy Chain)式优先权排队电路组成:中断向量形成部件和雏菊花环式优先权排队电路优先权排队电路识别具有最高优先权的中断源,而中断向量形成部件则给出该中断源的中断向量向量中断方式:是为每一个中断源设置一个中断向量(类型码),CPU可以根据中断向量(类型码)确定相应的中断服务程序入口地址,进而转入中断服务程序工作原理:1)中断向量形成部件(见图7-38)当CPU响应某个I/O设备的中断请求时(INTA=O),INTRi-INTR(链式优先权排队电路n的输出)某一位有输入,中断向量形成部件则给出该中断源的中断向量,并送至数据总线,CPU从数据总线获得中断向量类型码,并计算得到中断服务子程序的入口地址,然后转向中断服务子程序,为中断源服务2)链式优先权排队电路(见图7-39)排队:排在环最前面的中断源优先权最高,排在环最后面的中断源程序级别最低当多个外设有中断请求时,则中断请求信号INTR信号送至CPUo CPU在当前指令执行完后响应中断(高电平有效)问题:CPU应该响应哪个中断请求呢?若F/F1有中断请求,……,响应第一级请求,屏蔽第二级及以下的请求;若第一级没有中断请求,即F/F尸0,……,响应第二级请求,屏蔽第三级及以下的请求;但是,此时如有第一级(高级)的中断请求发生,则可以被响应并中止正在处理的中断程序,转入高级的中断请求处理余类推
五、可编程中断控制器8259A(PIC)
5.可编程中断控制器8259A的功能(I)能接收外部中断源向CPU发出中断请求信号,并能在中断响应周期中为CPU提供中断向量(中断类型码)
(2)能实现对多个中断源的中断优先级排队
(3)高级中断源可以中断低级中断源的服务,即能够实现中断嵌套
6.可编程中断控制器8259A的特点8259A允许用户通过软件编程设定工作方式,适应性强,使用方便灵活其主要特点如下:
(1)每一个8259A可管理8级优先权中断源,通过8259A的级联,最多可管理64级优先权的中断源
(2)对任何一级中断源都可单独进行屏蔽,使该级的中断请求暂时被屏蔽,直到取消屏蔽为止
(3)能向CPU提供可编程的标识码,对于8088CPU来说就是中断类型码
(4)具有多种工作方式和中断优先权管理方式,能适应各种系统要求
7.可编程中断控制器8259A内部的结构及功能8259A内部结构(见图7-40),8259A由8个基本部分组成
(1)数据总线缓冲器8259A与系统数据总线的接口(8位、双向、三态)通过它,CPU可写入控制字,可读出状态信息,在中断响应周期,能送出中断类型码至DBo
(2)读/写控制逻辑根据CPU送来的读/写信号和地址信息产生相应的内部操作还包含有4个初始化命令寄存器(存放ICWi IC%)和3个操作命令寄存器(存放0CW10CW)〜〜3o
(3)中断请求寄存器(IRR)由8位触发器组成,用来保存8个外部中断源送来的中断请求信号(IR-IR),哪一根IRO T线上有请求,哪一位触发器就置lo
(4)优先权判别器(PR)仲裁部件(8位),用来管理和识别各个中断源的优先权级别优先权判别:如果当前CPU没有执行中断服务,该优先权判别器将对保存在IRR中的各个有效中断请求进行优先权判别,选择其中优先权最高的给予处理,并在中断响应周期将ISR的对应位置lo比较:如果当前CPU正在执行某一中断服务,同时又有新的中断请求,优先权判别器将把新中断请求的优先权与ISR的对应位进行比较,若优先级别高于正在被服务的中断源则给予处理,以实现中断嵌套,若优先级别低于正在服务的中断源,则不予响应
(5)中断服务寄存器(ISR)8位,该寄存器用来存放当前正在被服务的中断源信息当CPU正为某个中断源服务时,8259A则使ISR中的相应位置1
(6)中断屏蔽寄存器(IMR)8位,用来存放CPU通过系统数据总线送来的屏蔽信号,其内容可由用户编程设定,当它某一位或某几位为1时,则对应的中断请求就被屏蔽
(7)级连缓冲器/比较器在级联方式的主从结构中,用来存入和比较系统中各从8259A的标志使8259A可以适用于中断源超过8个的场合
(8)控制电路该电路负责向CPU发出中断请求,并接收CPU的中断响应信号,同时对片内进行控制,如生成中断类型码,清除中断请求寄存器中的相应位等
8.可编程中断控制器8259A的引脚功能8259A的引脚图(见如图7-41弓D-D8259A的数据线,具有双向三态功能,可直接或经总线驱动器与系统数据总线相O7连,完成CPU与8259A之间的数据传送WR写控制信号,输入,低电平有效用来控制对8259A的写操作RD读控制信号,输入,低电平有效用来控制对8259A的读操作CS片选信号,输入,低电平有效该信号常由系统地址总线经译码后产生Ao端口选择信号,输入用于选择8259A内部各寄存器,常与系统地址总线的低位相连在8088系统中,该信号直接与系统地址总线的Ao相连CAS-CAS级联信号线,双向用来构成主从式中断系统主片时,输出线;从片时,输O2入线只使用一片8259A时,不使用这些引脚SP/EN主从控制/缓冲器允许,双向当8259A工作在非缓冲方式下(即8259A的数据线直接与系统数据线相连),该信号是输入信号,实现主片/从片控制,若8259A为主片时,该信号接高电平;若8259A为从片时,该信号接地当8259A工作在缓冲方式下(即8259A通过外部数据总线缓冲器与系统数据线相连),该信号是输出信号,用来控制数据总线缓冲器的发送和接收INT中断请求信号,输出,高电平有效可与8086/8088的INTR引脚相连IR-IR外部中断请求,输入用来接收外部的8级中断请求信号当8259A工作在边沿O7触发方式时,要求IR(i=07)输入应有由低到高的上升沿,此后保持为高,直到被响应〜在电平触发方式时,IR输入应保持高电平直到被响应为止INTA——中断响应信号,输入用于接收CPU发出的中断响应信号在8088系统中,该信号是两个连续的负脉冲,在第二个负脉冲结束时,CPU将读取8259A送往数据总线的中断类型码
9.可编程中断控制器8259A的端口区分CPU对8259A中各寄存器的寻址方式(见表7-4)o多个端口共用一个端口地址,端口区分四种的方法读写信号区分、数据信号区分、读写顺序区分和命令字中的标识位区分在8259A芯片中这几种方法均采用了8259A的读写操作IRR、ISR或中断查询字送数据总线IMR送数据总线数据总线-0C%数据总线一OCX数据总线一ICWi数据总线一OCWi、IC%、ICWICW高阻3410可编程中断控制器8259A的中断响应过程在8088系统中8259A中断响应过程如下(结合图7-40)
(1)当有一条或若干条中断请求线(IR-IR)变高时,使中断请求寄存器IRR的相应位O7置lo
(2)8259A接受这些请求,分析它们的优先级,在中断未屏蔽时向CPU发出中断请求信号INTo
(3)若CPU处于开中断状态(IF=1),则在当前指令执行完后,并且无总线请求,发出INTA中断响应信号
(4)8259A接收到第一个INTA信号,把ISR相应位置1,并清除IRR中的相应位
(5)8259A接收到第二个INAT信号后,发出中断类型码如果是自动结束中断AE0I方式,8259A在INTA脉冲后沿复位ISR的相应位,在其他方式中,ISR相应位要由中断服务程序结束时发出的E0I命令(中断结束命令)复位
(6)CPU接收到中断类型码,将它们乘4,就可从中断向量表中取出中断服务子程序的入口地址(前两个字节内容装入IP,后两个字节内容装入CS),转至中断服务程序
7.8259A的命令字与编程8259A的命令字分为两类初始化命令字(ICW,初始化编程);操作命令字(0C肌工作方式编程)
(1)初始化命令字有4个(IC%ICW)其中I%和ICW2是必须写入的,IC1%和ICW”可视工作方式选择使〜用8259A在级联时(即SNGL=0)需分别对主片和从片进行初始化1)ICW1芯片控制初始化命令字写入时要求8259A的A=0;写入ICWi后,8259A内部进行初始化各位含义(见图7-42)oD~D仅对8080/8085系统有意义,对于8088系统该内容为任意值75DiICWi的特征位,即ICWi命令字的标志,该位必须为1D触发方式控制30IR引脚为边沿(上升沿)触发方式;1IR引脚为电平(高)触发方式CPU响应中断后,应该撤消这个高电平D仅对8080/8085系统有意义,对于8086/8088系统该内容为任意值2D.级联标志位0多片级联方式;1单片工作方式不需写入IC%Do用来确定是否设置ICWi0不需要设置KX;1需要设置ICWi在8088系统中由于ICM必须要设置,所以该位必须为12)ICW中断类型码初始化命令字2用于设定中断类型码,要求A°=L各位含义(见图7-43)D~D是中断类型码的高五位T7T3,可由用户设定〜73D2-D不需用户设定,在中断响应时由8259A自动生成,D Do的8种组合形成8个连〜O续的中断类型码3)ICW主/从片级连方式命令字3写入时要求A=lo8259A单片工作时该命令字不需写入0余略4)ICW.4方式控制初始化命令是否需要写入由ICW]中的(Do)位决定,写入时要求Ao=l各位含义(见图7-46)~无意义D D75Di设定中断嵌套方式1设定为特殊全嵌套方式,只适用于多片级联;(略)0设定为一般全嵌套方式;中断优先级的顺序为IR IR,(单片,8259A默认)0〜3缓冲方式选择1缓冲方式,8259A通过总线驱动器与系统的数据总线连接;0非缓冲方式,8259A的数据线直接与系统的数据总线连接D在缓冲方式下用来区分主片和从片,在非缓冲方式下,此位无意义21表示该片为主片;0表不该片为从片设定中断结束方式1中断自动结束方式(AEOI);0E0I命令结束方式AEOI方式,在CPU响应中断后,8259A自动将中断服务寄存器ISR中的相应位清除E0I命令方式是指在中断服务结束时必须执行E0I指令,以此清除ISR中的相应位Do指定系统的类型18086/8088系统;08080/8085系统
(2)操作命令字操作命令字有三个,即0CW
1、
00、OCW o35)OCWl中断屏蔽操作命令字实际写入IMR,写入时要求A(1F各位意义(见图7-47)当Mi=l,IR将被屏蔽;当MkO,IRi将被允许中断6)0CW用于控制优先权循环方式和中断结束方式2写入时要求Ao=0各位含义(见图7-48):0设置中断优先权的处理方式70优先权固定方式,优先权从高到低的顺序为IRo IR7;〜1优先权循环方式,IR IR’首尾相接组成一个环,其优先权顺序在此环内循环不〜固定D设置是否特殊循环(此时,D7应为1)60自动循环方式,D2D的值用户不必设置,当某一中断源的中断请求被响应后,其〜优先权将被降为最低1特殊循环方式,D2D的值指出了优先级最低的中断请求输入;〜D设置中断结束方式5AE0I方式;E0I命令方式,又可分为一般E0I特殊EOIo在D7=l,D6=l时D=b为特殊E0I方式,此时将清除ISR中由D2Do的编码所指定的位〜5D=0,为一般E0I方式,D2~D的值仅指出了优先级最低的中断请求输入5匕、DOCW2的特征位,必须为DD=003D~D三位二进制编码,决定8个中断源哪一个优先权最低或被特殊E0I复位O27)0CW用于设置特殊屏蔽方式、设置中断查询方式以及设置对8259A内部寄存器的读3出命令,写入时要求8259A的Ao引脚为0各位含义(见图7-49)D此位无意义,可为任意值7口
6、口5设置特殊屏蔽模式11允许特殊屏蔽模式(允许低级中断源中断高级中断源的服务);10撤消特殊屏蔽模式(恢复原优先级方式)D DOCW3特征位,必须为H3设置中断查询方式D21:为查询方式;0为非查询方式查询方式8259A的INT引脚不连接到CPU的INTR引脚,或者CPU正处于关中断状态
(1)写入0团其中D2=l;通知8259A,下面CPU要读取最高优先权中断源的编码
(2)读入查询字节(偶地址Ao=0)0查询字节的格式(见图7-50)1=1有中断请求,此时W2W是最高优先权中断源的编码,可供CPU用软件查询〜方法转到相应的中断服务子程序;1=0无中断请求D.设置读操作1为读操作命令Do指定读操作寄存器0指定中断请求寄存器IRR;1指定中断服务寄存器ISR注意IMR寄存器的读出,不需要事先发指定命令,可用奇地址直接读出编程注意初始化命令字(ICW)通常是在系统启动时由初始化程序一次性写入;操作命令字(OCW)可以由程序在任何时候多次写入。
个人认证
优秀文档
获得点赞 0