您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 管理学资料 > 微机原理及应用CH9 中断技术与中断控制器
微机原理及应用第9章中断技术与中断控制器§9.1中断技术概述§9.28086/8088中断系统§9.3可编程中断控制器82C59A§9.4高档微机中断系统微机原理及应用§9.1中断技术概述在程序运行中,系统出现了某种紧急事件(如:同步操作、实时处理、故障处理等),CPU必须中止现行程序,转去处理此紧急事件(执行中断服务程序),并在处理完毕后再返回被打断的程序的过程。§9.1.1什么是中断(概念)微机原理及应用一个完整的中断过程包括:“中断请求”:是指中断源(引起中断的事件或设备)向CPU发出的请求中断的要求;“中断判优”:当有多个中断源发出中断请求时,需要通过适当的办法(软件的;硬件的;软、硬件结合的)决定究竟先处理哪个中断请求;“中断响应”:是指CPU中止现行程序转至中断服务程序的过程;“中断处理”:是指CPU执行中断服务程序,完成中断请求所要求的操作;“中断返回”:执行完中断服务程序后,返回到原先被中断的程序。CPU响应中断的条件1.设置中断请求触发器每一个中断源,要能发出中断请求信号,并且这个信号能保持着,直至CPU响应这个中断后,才可清除中断请求。故要求每一个中断源有一个中断请求触发器A,如下图所示。2.设置中断屏蔽触发器因为在实际系统中,往往有多个中断源。为了增加控制的灵活性,在每一个外设的接口电路中,增加一个中断屏蔽触发器,只有当此触发器为“1”时,外设的中断请求才能被送出至CPU,如下图所示。可把8个外设的中断屏蔽触发器组成一个端口,用输出指令来控制它们的状态。3.中断是开放的在CPU内部有一个中断允许触发器。只有当其为“1”时(即中断开放时),CPU才能响应中断;若其为“0”(即中断是关闭的),即使INTR线上有中断请求,CPU也不响应。而这个触发器的状态可由STI和CLI指令来改变。当CPU复位时,中断允许触发器为“0”,即关中断,所以必须要用STI指令来开中断。当中断响应后,CPU就自动关中断,所以必须在中断服务程序中用STI指令来开中断。4.现行指令执行结束CPU在现行指令结束后响应中断,即运行到最后一个机器周期的最后一个T状态时,CPU才采样INTR线。若发现有中断请求,则把内部的中断锁存器置“1”,然后下一个机器周期(总线周期)不进入取指周期,而进入中断周期。其响应的流程如右图所示。关于中断分类的补充说明为了支持多任务和虚拟存储器等功能,80386及以上CPU把外部中断称为“中断”(interrupt),把内部中断称为“异常”(exception)。与8086一样,它也最多处理256种中断和异常。根据引起异常的程序是否可被恢复和恢复点的不同,又把异常分为三类:故障(fault)陷阱(trap)中止(abort)把对应的异常处理程序分别称为故障处理程序、陷阱处理程序和中止处理程序。故障是在引起异常的指令之前,把异常通知给系统的一种异常。故障的特点是可以排除的。例如,在执行一条指令时,如果发现它要访问的段不在内存中,那么停止该指令的执行,并产生一个段不存在异常,对应的故障处理程序可通过从外存加载该段到内存的方法来排除故障。之后,原引起异常的指令就可以继续执行,就不再产生异常。陷阱是在引起异常的指指令执行之后触发的一种异常。在转入异常处理程序时,引起陷阱的指令已完成。陷阱处理程序执行完,返回到引起陷阱令的下一条指令。软中断指令INTn是陷阱的例子。中止是在系统出现严重的不可恢复的事件时触发的一种异常。产生中止后,正执行的程序不能恢复执行,系统要重新启动才能恢复正常运行状态。微机原理及应用§9.1.2中断源及其优先级•中断源:发出中断请求的外部设备或内部原因。通常中断源有以下几种:(1)一般的输入输出设备。如键盘、行打印机等。(2)数据通道中断源。如磁盘、磁带等。(3)实时时钟。(4)故障源。微机原理及应用•中断优先级:按照任务的轻重缓急给中断源排队。排队方法有:•软件查询法(需要少量硬件)简单排队电路:如菊花链式(daisychain)优先级电路•硬件排队电路可编程中断控制器(如82C59A)微机原理及应用(1)软件查询法–把各个外设的中断请求信号“相或”,产生一个总的INTR信号。–当CPU响应中断后,进入中断处理程序,在中断处理程序的开始部分安排一段查询程序,对中断源逐个查询。–优点:①询问的次序即是优先权的次序。最先询问的,优先权的级别最高。②省硬件。不需要有判断与确定优先权的硬件排队电路。–缺点:中断响应慢,即由询问转至相应的服务程序入口的时间长,尤其是在中断源较多的情况下。用软件查询技术确定中断优先权的流程如下图所示。查询程序有两种方式:A.屏蔽法INAL,20H;输入中断请求触发器的状态TESTAL,80H;检查最高位(电源故障)是否有请求JNEPWF;有,则转至电源故障处理程序TESTAL,40H;否,检查磁盘是否有请求JNEDISS;有,转至磁盘服务程序TESTAL,20H;否,检查磁带是否有请求JNEMT;有,转至磁带服务程序┇B.移位法XORAL,ALINAL,20HRCLAL,1JCPWFRCLAL,1JCDISS┇(2)用硬件编码器和比较器的优先权排队电路若有8个中断源,当任一个有中断请求时,通过“或”门,即可有一个中断请求信号产生,但它能否送至CPU的中断请求线,还要受比较器的控制(若优先权失效信号为低电平,则与门2关闭)。8条中断输入线的任一条,经过编码器可以产生三位二进制优先权编码A2A1A0,优先权最高的线的编码为111,优先权最低的线的编码为000。而且若有多个输入线同时输入,则编码器只输出优先权最高的编码。正在进行中断处理的外设的优先权编码,通过CPU的数据总线,送至优先权寄存器,然后输出编码B2B1B0至比较器,以上过程是由软件实现的。比较器比较编码A2A1A0与B2B1B0的大小,若A≤B,则“A>B”端输出低电平,封锁与门1,就不向CPU发出新的中断申请(即当CPU正在处理中断时,当有同级或低级的中断源申请中断时,优先权排队线路就屏蔽它们的请求);只有当A>B时,比较器输出端才为高电平,打开与门1,将中断请求信号送至CPU的INTR输入端,CPU就中断正在进行的中断处理程序,转去响应更高级的中断。若CPU不在进行中断处理时(即在执行主程序),则优先权失效信号为高电平,当有任一中断源请求中断时,都能通过与门2,发出INTR信号。这样的优先权电路,如何能做到转入优先权最高的外设的服务程序的入口呢?当外设的个数≤8时,则它们公用一个产生中断矢量的电路,它有三位由比较器的编码A2A1A0供给,就能做到不同的编码转入不同的入口地址。微机原理及应用(3)菊花链优先级排队电路当多个输入有中断请求,则由中断输入信号的“或”电路产生INTR信号,送至CPU。当CPU在现行指令执行完后,响应中断,发出中断响应信号。但CPU转向哪一个中断服务程序的入口呢?这要由图所示的链式优先权排队电路确定。微机原理及应用§9.1.3中断请求与中断屏蔽1.中断请求中断源向CPU发出的请求中断的信号叫中断请求。CPU在执行完每条指令后,自动检测中断请求输入线,以确定是否有外部发来的中断请求信号。2.中断屏蔽内部屏蔽:CPU不响应中断(关中断)中断屏蔽:外部屏蔽:中断请求信号不能送到CPU可屏蔽中断:受IF控制(IF为“1”时中断允许,IF为“0”时中断屏蔽)非屏蔽中断:不受IF控制(无论IF为“1”或为“0”都允许中断,但可设计外部屏蔽电路进行屏蔽)指内部屏蔽微机原理及应用§9.1.4中断服务程序中断服务程序:为完成中断源所期望的功能而编写的程序。中断服务程序的主要内容:在中断服务程序中,主要是进行输入/输出操作或发出一系列控制信号,这些具体操作构成了中断服务程序的主体。另外还有一些附加操作,因此:中断服务程序的主要内容有:–保护现场–开中断–具体中断处理–关中断–恢复现场–开中断、中断返回微机原理及应用中断嵌套当CPU正在执行优先级较低的中断服务程序时,允许响应比它优先级高的中断请求,而将正在处理的中断暂时挂起,这就是中断嵌套。此时,CPU首先为级别高的中断服务,待优先级高的中断服务结束后,再返回到刚才被中断的较低的那一级,继续为它进行中断服务。中断嵌套示意图STIIRETSTIIRET............微机原理及应用§9.1.5中断隐操作和中断向量中断隐操作:CPU响应中断时,由内部硬件执行的一系列处理过程。隐操作把CPU引向中断服务程序中断类型、中断向量、中断向量表:中断类型:中断源的编号中断向量:中断服务程序的入口地址中断向量表:内存中存放中断向量的区域第1条可执行指令的第1个字节的地址微机原理及应用§9.1.6中断响应过程对于可屏蔽中断,当CPU检测到有中断请求时,如果满足响应条件就要予以响应。具体过程如下:–关中断、保护断点–保护现场–开中断–具体中断处理–关中断–恢复现场–开中断、中断返回属于隐操作属于中断服务程序可选择可选择主体微机原理及应用§9.28086/8088中断系统中断系统:实现中断的软件和硬件的总和。§9.2.1中断系统的基本功能–要求能判断中断源的优先级,并按优先权的高低决定中断响应的顺序。–要求中断系统能实现中断和返回。–要求中断系统能实现中断嵌套,即高优先级中断源的中断请求能中断低优先级中断源的中断服务。微机原理及应用非屏蔽中断(NMI)(2号)外部中断(硬件中断)可屏蔽中断(INTR)除法出错(0号)内部硬件中断单步跟踪(1号)断点中断(3号)内部中断溢出中断(4号)内部软件中断:INTn8086/8088的中断源分类:微机原理及应用1.8086/8088的中断系统结构8086/8088的中断系统结构如图所示。微机原理及应用2.中断类型码与中断向量表–中断类型码:8086/8088为每个中断源指定的一个编号。–中断向量:中断服务程序的入口地址。–中断向量表:把系统中所有的中断向量按中断类型码从小到大的顺序放到存储器的某一个区域所形成的一个表。–每个中断向量占用4个存储单元,8086/8088CPU的中断系统最多能处理256个中断源。8086/8088CPU以存储器的00000H—003FFH共1024个单元作为中断向量存储表。微机原理及应用中断向量在中断向量表的存放次序:是按中断类型号顺序存放,共占4个单元。每个中断向量存放的首地址=中断类型号×4。CPU响应中断时,需把中断类型号N乘以4,得到中断向量的对应地址4N(该中断向量所占4个字节单元的第一个字节单元的地址)。中断向量的装入:两个低字节单元的内容装入IP寄存器:IP=(4N,4N+1)两个高字节单元的内容装入CS寄存器:CS=(4N+2,4N+3)微机原理及应用外部(NMI、INTR):由接口提供中断类型号N的来源硬件中断:由内部硬件提供内部软件中断:由中断指令提供微机原理及应用例1:若中断类型号为3,则由中断类型号取得中断服务入口地址的过程如下图所示:00000H00001H0000CH(0000:000CH)1EA00H(1E00:0A00H)FFFFFH低地址内存高地址1E000H+0A00H1EA00H中断类型号3×4=000CH…….00(IPL)0A(IPH)00(CSL)1E(CSH)…....中断服务程序微机原理及应用例2.中断类型号为20H,中断服务程序的入口地址存放在0000:0080H开始的4个单元中。若:–(0080H)=10H–(0081H)=20H–(0082H)=30H–(0083H)=40H则:中断服务程序的入口地址为微机原理及应用地址类型码中断名称地址类型码中断名称0~30除法出错60~6318常驻BASIC入口4~71单步64~6719引导程序入口8~B2不可屏蔽68~6B1A时间调用C~F3断点6C~6F1B键盘CTR-BREAK控制10~134溢出70~731C定时器报时14~175打印屏蔽74~771D显示器参数表18~1B6保留78~7B1E软盘参数表1C~1F7保留7C~7F1F字符点阵结构参数20~238定时器80~83
本文标题:微机原理及应用CH9 中断技术与中断控制器
链接地址:https://www.777doc.com/doc-4012346 .html