微型计算机接口第5章中断技术.ppt

上传人:max****ui 文档编号:3266999 上传时间:2019-12-10 格式:PPT 页数:79 大小:1.90MB
返回 下载 相关 举报
微型计算机接口第5章中断技术.ppt_第1页
第1页 / 共79页
微型计算机接口第5章中断技术.ppt_第2页
第2页 / 共79页
微型计算机接口第5章中断技术.ppt_第3页
第3页 / 共79页
点击查看更多>>
资源描述
第5章中断技术,本章内容中断技术的基本概念中断技术的工作原理系统配置的中断资源的应用中断向量修改及中断服务程序的编写,1,5.1中断基本概念中断是指CPU在正常运行程序时,由于外部/内部事件,或由程序引起CPU中断正在运行的程序,而转到为中断事件服务的程序中去,服务完毕,再返回执行原程序,这一过程称为中断。外部中断的特征:具有随机性。,2,5.2中断的类型5.2.1外部中断1.可屏蔽中断INTR这是由外部设备通过中断控制器用中断请求线INTR向微处理器申请而产生的中断,但微处理器可以用CLI指令来屏蔽(禁止),即不响应它的中断请求,因此把这种中断称为可屏蔽中断。2.不可屏蔽中断NMI由系统硬件引发的中断,如协处理器出错、通道等。它的优先级高于外部硬件中断,且不受中断允许标志位(IF)的影响,所以是不可屏蔽中断。,3,5.2.2内部中断内部中断是由用户在程序中发出中断指令INTnH产生的,指令中的操作数n称为软中断号。内部中断包括DOS中断功能和BIOS中断功能两部分,可供用户在编写应用程序是调用。1.DOS功能调用DOS是存放在磁盘上的操作系统软件,其中内部中断INT21H是DOS的内核。它是一个很重要、功能庞大的中断服务程序,包含06CH个子功能,包括对设备、文件、目录及内存的管理功能,涉及各个方面,可供系统软件和应用程序调用,同时,由于它处在ROM-BIOS层的上一个层次,与系统硬件层有ROM-BIOS在逻辑上的隔离,所以,它对系统硬件的依赖性大大减少,兼容性好。2.BIOS功能调用BIOS是一组存放在ROM中、独立于DOS的I/O中断服务程序。它在系统硬件的上一层,直接对系统中的I/O设备进行设备级控制,可供上层软件和应用程序调用。,4,除了上述外部中断和内部中断两类中断之外,微机的中断系统还包括一些特殊中断,这些中断既不是由外部设备提出申请而产生的,也不是由用户在程序中发中断指令INTnH而发生的,而是由内部的突发事件所引起的中断,即在执行指令的过程中,CPU发现某种突发事件时就启动内部逻辑转去执行预先规定的中断号所对应的中断服务程序。这类中断也是不可屏蔽中断,其中断处理过程具有与内部中断相同的特点,因此,有的书上把它们归结为内部中断这一类。这类中断有如下几种。(1)0号中断除数为零中断;(2)1号中断单步中断;(3)3号中断断点中断;(4)4号中断溢出中断。3.内部中断的应用DOS调用和BIOS调用是用户使用系统资源的重要方法和基本途径,也是用户编写MS-DOS应用程序使用很频繁的方法,应学会使用。,5,4、中断过程分为四个阶段中断请求中断响应中断服务中断返回1.中断请求外设先发送“中断请求”信号给CPU。CPU检查“中断请求”输入线。CPU有权决定是否响应中断:a.若允许申请,用ST1指令打开中断触发器IF;b.若不允许申请,用CLI指令关闭中断触发器IF。没有获得允许中断请求称为中断被屏蔽。,不允许中断请求的情况:如:在实时控制时,需采集一段连续数据为防上数据丢失,不允许其他中断请求;又:执行管理程序中某些重要程序,CLI指令进行屏蔽。2.中断响应CPU在当前指令执行结束时,响应中断,进入中断的响应周期;发出二个中断回答信号INTA完成一个中断响应周期;进行断点及标志保存如:段地址(CS),偏移地址(IP)标志FR以及压入堆栈。读取中断类型号,找到中断源;装入中断服务程序的入口地址(CS,IP),中断响应中断响应是当中央处理机发现已有中断请求时,中止现行程序执行,并自动引出中断处理程序的过程。中断响应过程:保留程序断点及处理机有关信息自动转入相应的中断处理程序执行中断响应的实质交换指令地址及处理机的状态信息3.中断服务转入中断服务程序后,其服务程序的内容有:a.与CPU交换数据,进行I/O操作;b.外部期望CPU给以控制,进行参数修改。在程序开头,将可能使用的寄存器内容进栈,即保护现场。在服务程序的未尾,将入栈的寄存器内容弹出,即恢复现场。,4.中断返回中断服务程序结束,执行中断返回。自动交保存在堆栈中的标志FR,断点(IP,CS)依次弹出并装入。回到中断前的地址开始继续执行。三、中断源、中断识别、优先级1、中断源:发出中断请求的外设或引起中断的内部原因称为中断源。,指令中断:INT10H、INT21H等,外设中断:键盘、打印机、显示器等,硬件故障中断:奇偶错、电源故障等,程序性中断:除法溢出、非法操作码等,2、中断识别:CPU响应中断后,只知道有中断请求但不知道是哪一个中断源,寻找中断源的操作过程称为中断识别。CPU识别中断的方法:(确定中断源,实现程序的转移)中断识别的目的:形成该中断服务程序的入口地址。,向量中断:中断向量、中断号在CPU响应中断后,由中断控制器将服务程序入口地址送到CPU的过程。,查询中断:软、硬件查询确定中断源采用软件查询技术来确定发出中断请求。,5.3中断号5.3.1中断号与中断号的获取1.什么是中断号中断号是系统分配给每个中断源的代号,以便识别和处理。中断号在中断处理过程中起到很重要的作用,在采用向量中断方式的中断系统中,CPU必须通过中断号才可以找到中断服务程序的入口地址,实现程序的转移。2.中断号的获取CPU对系统中不同类型的中断源,获取它们的中断号的方法是不同的。可屏蔽中断的中断号是在中断响应周期从中断控制器获取的。内部中断INTnH的中断号(nH)是由中断指令直接给出的。不可屏蔽中断NMI以及CPU内部一些特殊中断的中断号是由系统预先设置好的,如NMI的中断号为02H,非法除数的中断号为0H等。,11,5.3.2中断响应周期当CPU收到外部设备通过中断控制器提出的中断请求INT后,如果当前一条指令已执行完,且中断标志位IF=1时(即允许中断),又没有DMA请求,那么,CPU进入中断响应周期,发出两个连续中断应答信号完成一个中断响应周期。图5.1表示是中断响应周期时序。从图5.1可知,一个中断响应周期完成的操作有:,12,1.置位中断服务寄存器ISR当CPU发出第一个脉冲时,CPU输出有效的总线锁定信号,使总线在此期间处于封锁状态,防止其他处理器或DMA控制器占用总线。与此同时,中断控制器将判优后允许的中断级在ISR中的相应位置1,以登记正在服务的中断级别,在中断服务程序执行完毕之后,该寄存器自身不能清零,需要向中断控制器发中断结束命令EOI才能清零。2.读取中断号当总线控制器发出第二个2脉冲时,总线锁定信号撤除,总线被解封,地址允许信号ALE也变为低电平(无效),即允许数据线工作。正好此时中断控制器将当前中断服务程序的中断号送到数据线上,由CPU读入。5.3.3中断号的分配系统对外部中断和内部中断一律统一编号,共有256个号,微机系统的中断号分配如表5.1所示。表中两块灰色区域的中断号分别是系统分配给PC微机系统中的中断控制器主片与从片的中断号,用户可以采用修改其中断向量的方法进行应用。,13,表5.1,14,15,5.4中断触发方式与中断排队方式5.4.1中断触发方式中断触发方式是指外部设备以什么逻辑信号去向中断控制器申请中断,中断控制器允许用边沿或电平信号申请中断,即边沿触发和电平触发两种方式。触发方式在中断控制器初始化时设定。5.4.2中断排队方式外部中断、内部中断是按优先级提供服务的。中断优先级从高到低的顺序是:内部中断不可屏蔽中断可屏蔽中断。当系统有多个中断源时,就可能出现同时有几个中断源都申请中断,而微处理器在一个时刻只能响应并处理一个中断请求。为此,要进行中断排队,微处理器一般是按“优先级高的先服务”的原则提供服务。但也有其他一些中断排队的方式。,16,1.按优先级排队根据任务的轻重缓急,给每个中断源指定CPU响应的优先级,任务紧急的先响应,可以暂缓的后响应。2.循环轮流排队不分级别高低,CPU轮流响应各个中断源的中断请求,并为其服务。3.中断嵌套在实际应用中,当CPU正在处理某个中断源,即正在执行中断服务程序时,会出现优先级更高的中断源申请中断。为了使更紧急的、级别更高的中断源及时得到服务,需要暂时打断(挂起)当前正在执行的级别较低的中断服务程序,去处理级别更高的中断源,待处理完以后,再返回到被打断了的中断服务程序继续执行。但级别相同或级别低的中断源不能打断级别高的中断服务,这就是所谓的中断嵌套。INTR可以进行中断嵌套。NMI不可以进行中断嵌套。,17,5.5中断向量与中断向量表当发生中断,就意味着要发生程序的转移,即由主程序转移到服务程序去。那么,如何才能进入中断服务程序,即如何找到中断服务程序的入口地址是解决问题的关键。为此,采用向量中断方式(不是查询中断方式),设置中断向量及中断向量表,通过中断向量表中的中断向量查找中断服务程序的入口地址。5.5.1中断向量与中断向量表1.什么是中断向量CPU响应中断后,中断源提供中断号,再由中断号生成地址信息,由此地址信息对程序的执行进行导向,引导到中断服务程序中去,故把这个地址信息称为中断向量(存储单元)。中断向量包括中断服务程序的段基址CS(高位字),偏移地址IP(低位字)共4个字节。,18,2.中断向量指针与中断类型号什么叫“中断向量指针”?指出中断向量存放在中断向量表的位置(或地址)。中断类型号X4=中断向量最低字节的指针,中断号4=偏移地址IP;中断号4+2=段基址CS。例如,8号中断中断源的中断向量:IP8=84=20H21H;CS8=84+2=22H23H.,在PC系列中由中断类型号提供的,即向量地址=0000:类型号4如:硬盘“1NT13H”它的向量地址=0000:13H4=0000:004CH004CH开始连续4个单元中用来存放“INT13H”的中断向量:,中断向量0070(CS):0fc9h(IP),2.什么是中断向量表所有的中断向量集中存放到存储器的某一区域,这一区域称之为中断向量表。微机系统规定把存储器的0000H03FFH共1024个地址单元作为中断向量存储区,这表明中断向量表的起始地址是固定的,并且从存储器的物理地址0开始。中断向量表如图5.2所示。每个中断向量包含4个字节,这4个字节在中断向量表中的存放规律是向量的偏移量(IP)存放在两个低字节单元中,向量的基址(CS)存放在两个高字节单元中。,21,例:PC机,000003FF共1024(1K),图5.2中断向量表,22,5.5.2中断向量表的填写中断向量表的填写分系统填写和用户填写两种情况。系统设置的中断服务程序,其中断向量由系统负责填写。用户开发的中断系统,在编写中断服务程序时,其中断向量由用户负责填写,可采用MOV指令直接向中断向量表中填写中断向量。不过,一般用户都是通过修改中断向量的方法使用系统的中断资源,而很少由用户自己直接填写中断向量。,23,5.6中断处理过程5.6.1可屏蔽中断的处理过程1.中断申请与响应握手当外部设备要求CPU服务时,需向CPU发出中断请求信号,申请中断。CPU若发现有外部中断请求,并且处在开中断条件(IF=1),又没有DMA申请,则CPU在当前指令执行结束时,进入中断响应总线周期,响应中断请求,并且通过中断回答信号,从中断控制器读取中断源的中断号,完成中断申请与中断响应的握手过程。这一阶段的主要目标是获取外部中断源的中断号。2.标志位的处理与断点保存微处理器获得外部中断源的中断号后,CPU把标志寄存器FLAGS压入堆栈,并置IF=0,关闭中断;置TF=0,防止单步执行。然后将当前程序的代码段寄存器CS和指令指针IP压入堆栈,这样就把断点(返回地址)保存到了堆栈的栈顶。这一阶段的主要目标是完成由主程向服务程序转移前的准备工作。,24,3.向中断服务程序转移并执行中断服务程序将已获得的中断号乘以4得到地址指针,在中断向量表中,读取中断服务程序的入口地址CSIP,再把它写入代码段和指令指示器,实现程序控制的转移。这一阶段的主要目标是完成主程序向中断服务程序的转移,或称为中断服务程序的加载。4.返回断点中断服务程序执行完毕后,要返回主程序,因此,一定要恢复断点和标志寄存器的内容,否则,主程序无法继续执行。为此,在中断服务程序的末尾,执行中断返回指令IRET,将栈顶的内容依次弹出到IP、CS和FLAGS,就恢复了主程序的执行。这一阶段的主要目标是完成中断服务程序向主程序的转移。,25,5.6.2不可屏蔽中断和软中断的处理过程由于它们的不可屏蔽性,并且其中断号的获取方法与可屏蔽中断不一样,所以其中断处理过程也有所差别。其主要差别是:不需通过中断响应周期获取中断号,是由系统分配的;中断服务程序结束,不需发中断结束命令EOI,是自动结束方式。其他处理过程与可屏蔽中断的一样。,26,5.7中断外部中断的解决方案5.7.1中断控制器82C59A的外部特性,82C59A的外部引脚如图5.3所示,3组信号线如下:(1)面向CPU的信号线。包括用于CPU发命令及读取中断号的8根数据线D0D7,一对中断请求线INT和中断回答线,以及、控制线与地址线、A0。(2)面向I/O设备的信号线。8根中断申请线IR0IR7,其作用有二:一是接收外设的中断申请,可接收8个外部中断源的中断申请;二是作外部中断优先级排队用,可进行8级中断排队,采用完全中断嵌套排队方式时,连接IR0的设备优先级最高,连接IR7的设备优先级最低。(3)面向同类芯片的中断级联信号线。中断级联信号线用于扩展中断源,包括主/从芯片的设定线/EN,3根用以传送从片识别码的级联线CAS0CAS2。,图5.382C59A引脚图,27,5.7.2中断控制器82C59A的工作方式1中断触发方式(1)边沿触发方式IR0IR7输入线上出现由低电平到高电平的跳变,表示有中断请求。(2)电平触发方式IR1IR7输入线出现高电平时,表示有中断请求。2中断级联方式82C59A可以单片使用,也可以多片使用,两片以上使用时才有级联问题。级联问题分两个方面:从主片看,它的哪一根或哪几根中断申请输入线IR上有从片连接;从从片看,它的中断申请输出线INT与主片的哪一根中断申请输入线IR相连。,28,3.中断屏蔽方式82C59A的中断屏蔽是指对外设中断申请的屏蔽,即允许还是不允许外设申请中断,而不是对已经提出的中断申请响不响应的问题。82C59A有常规屏蔽方式和特殊屏蔽方式两种,常规屏蔽方式使用较多。(1)常规屏蔽方式这是通过82C59A屏蔽寄存器写入8位屏蔽码来屏蔽或开放8个中断申请线(IR0IR7)上的中断申请,要屏蔽哪个中断申请,就将屏蔽码的相应位置1;不屏蔽的,即开放中断的,则相应位置0。例如,屏蔽码11111011B,表示仅开放IR2,其他均屏蔽。(2)特殊屏蔽方式用于开放低级别的中断申请。允许比正在服务的中断级别低的中断申请中断,而屏蔽同级的中断再次申请中断。4.中断优先级排队方式82C59A提供了3种中断优先级排队方式:完全嵌套方式、特殊嵌套方式和优先级循环方式。,29,5.中断结束方式(1)自动结束方式这是中断响应之后,在中断响应周期,就自动清零该中断源在ISR寄存器中被置1的位。在中断服务程序中不需发出中断结束命令EOI。(2)非自动结束方式这是ISR中被置1的位,在服务完毕后,不能自动清零,而必须在中断服务程序中发出中断结束命令EOI,才能清零,故称为非自动结束。非自动结束方式是常用的方式,其中又有两种命令格式。常规结束命令:该命令使ISR寄存器中优先级最高的置1位清零(复位)。指定结束命令:该命令明确指定ISR寄存器中哪一个置1的位清零,即服务完毕,具体指定哪一级中断结束。指定结束方式应用较多。,30,31,5.7.3中断控制器82C59A的编程模型,82C59A编程模型包括内部可访问的寄存器及相应的7个命令字。内部寄存器如图5.5所示。,(1)命令寄存器8位,隐含在“控制逻辑”模块内部,接收并处理7个命令字,用户可以访问。(2)中断请求寄存器(IRR)8位,以逻辑1记录已经提出中断请求的中断级,等待CPU响应。当提出中断请求的外设产生中断时,由82C59A置位,直到中断被响应才自动清零。IRR的内容可以由CPU通过OCW3命令读出。(3)中断服务寄存器(ISR)在中断响应之后,第一个获准中断请求的中断级在相应的ISR中置位。如IR3获准,ISR中的IS3置位,表明IR3正处于服务。,182C59A内部寄存器,32,(4)中断屏蔽寄存器(IMR)是对中断请求IR起屏蔽作用,即对中断请求IR允许还是不允许,寄存器8位对应8级中断屏蔽。哪一级中断被屏蔽,哪位就写“1”,即禁止IR提出中断请求。哪一级中断被允许,哪位就写“0”,即开放IR提出中断请求。(5)中断申请优先级分析器(PR)这是一个中断请求的判优电路。它把新来的中断请求优先级与ISR寄存器中记录在案的中断优先级进行比较,看谁的优先级最高,就让谁申请中断。其操作过程全部由硬件完成,故该寄存器对用户是不可访问的,它不属于82C59A的编程模型之内。,33,282C59A的端口地址,中断控制器82C59A是系统资源,其端口地址由系统分配,见第3章表3.1。主片的两个端口地址为020H和03FH;从片的两个端口地址为0A0H和0BFH。7个命令具体使用哪个端口地址由命令的标志位A0指示。,34,382C59A的命令82C59A共有7个编程命令,分为初始化命令ICW1ICW4和操作命令OCW1OCW3两类。初始化命令ICW确定中断控制器的基本配置或工作方式,而操作命令OCW执行由ICW命令定义的基本操作。值得指出的是,初始化命令是在用户自行另外设计中断系统时才会用到。如果是利用系统已有的中断资来源开发中断应用,就不需要进行初始化,也就不会使用这些初始化命令。下面分别介绍各的作用及格式。(1)初始化命令(ICW1ICW4)4个初始化命令用来对82C59A的工作方式和中断号进行设置,包括中断触发方式、级联方式、排队方式及结束方式。,35,ICW1命令功能:设定中断请求的触发方式、是否多片使用、要不要写ICW4ICW1的格式如下:,例如,若采用边沿触发,单片使用,需要ICW4则ICW1命令字=00010011B=13H,其程序段为:MOVAL,00010011B;ICW1的内容OUT20H,AL;写入ICW1端口(A0=0),36,ICW2命令功能:设定中断号。对连接到主片和从片上的8级中断源的中断号,高5位分别为08H与70H(见表5.3和表5.4),而低3位由连接到主/从片申请线IRi的编码确定。因此,向ICW2写入中断号只写高5位,低3位写0,ICW2命令的格式如下。,例如,硬盘的中断号是0DH,ICW2=08H。MOVAL,08HOUT21H,AL;写入ICW2的端口(A0=1)由于硬盘中断请求连接IR5,故低3位=05H,由硬件写入。,37,ICW3命令功能:设置中断级联方式,主片和从片分开设置。ICW3命令的格式主片与从片不同,分别如下:a.主片的ICW3,b.从片的ICW3,38,ICW3命令只有系统存在2片以上82C59A时才启用,否则不用ICW3命令。分主片和从片,分开设置。主片IRi的哪一个输入引脚上有从片连接,该位写1;若无,写0。例如,若主片的IR4上有从片连接,则主片的ICW3=00010000B=10H。从片的中断请求线INT连到了主片哪一个IRi上,则写入该位的编号代码。例如,若从片A的INT连接到主片的IR4上,则从片的ICW3=00000100B=04H。初始化主片的ICW3程序段如下。MOVAL,10H;主ICW3的内容OUT21H,AL;写入主ICW3的端口(A0=1)初始化从片A的ICW3程序段如下。MOVAL,04H;从ICW3的内容OUT0A1H,AL;写入从ICW3的端口(A0=1),39,又如,假设主片的IR3和IR6两个输入端分别连接了从片A与B的INT,故主片的ICW3=01001000B=48H,从片A的ICW3=00000011B=03H从片B的ICW3=00000110B=06H,初始化主片的ICW3程序段如下。MOVAL,48H;ICW3(主)的内容OUT21H,AL;写入ICW3(主)的端口(A0=1)初始化从片A的ICW3程序段如下。MOVAL,03H;从片A的ICW3内容OUT0A1H,AL;写入从片A的CW3端口(A0=1)初始化从片B的ICW3程序段如下。MOVAL,06H;从片B的ICW3的内容OUT0A1H,AL;写入从片B的ICW3端口(A0=1),40,41,ICW4命令功能:设置优先级排队和中断结束方式ICW4的格式如下:,例如,若CPU为16位,82C59A与系统总线之间采用缓冲器连接,非自动结束方式,只用1片8259A,正常完全嵌套,其初始化命令字ICW4=00001101B=0DH初始化ICW4的程序段如下。MOVAL,0DH;ICW4的内容OUT21H,AL;写入ICW4的端口(A0=1)又如,若CPU为16位,采用非自动结束方式,使用两片82C59A,非缓冲方式,为使从片也能提出中断请求,主片采用特殊的完全嵌套方式,其初始化命令字ICW4=00010101B=15H初始化ICW4的程序段如下。MOVAL,15H;ICW4的内容OUT21H,AL;写入ICW4的端口(A0=1),42,(2)操作命令(OCW1OCW3)3个操作命令是对82C59A经初始化所设置的中断屏蔽、中断结束、中断排队方式进行实际操作。其中,OCW3很少使用。OCW1命令功能:执行常规的中断屏蔽/开放操作。OCW1命令的格式如下。,43,例如,若要使中断源IR3开放,其余被屏蔽,则OCW1=11110111B=F7H屏蔽程序段为:MOVAL,0F7H;OCW1内容OUT21H,AL;21H为OCW1的端口,44,OCW2命令功能:执行中断结束操作和优先级排队操作。OCW2的格式如下。,OCW2中R、SL、EOI的组合功能如表5.2所示.,45,46,表5.2OCW2中R、SL、EOI的组合功能,OCW2的具体操作:1)作中断结束控制:当在初始化命令ICW1选用非自动结束方式时,就利用OCW2来控制中断结束。即:OCW2格式中的EOI(D5)=1SL(D6)=0,不指定中断结束L2L0=000,OCW2=00100000BSL(D6)=1,指定中断结束L2L0编码是被指定的中断等级例如,指定IR5为中断结束,则OCW2=01100101B=65H。,47,2)作中断优先级排队控制,R(D7),1:需要轮换优先权,分二种若SL=,0:优先级固定方式,则为完全嵌套方式,1:优先权指定轮换,0:自动轮换,OCW3命令功能:进行特定的中断屏蔽/开放操作。OCW3在实际中很少使用,不做介绍,可参考文献21。,48,5.7.4中断控制器对CPU处理中断的支持作用1.接受外部设备的中断请求经过优先权判决找到哪一个中断源的中断请求级别最高,然后,再向CPU提出中断申请INT。2.优先级排队管理根据任务轻重缓急或设备的特殊要求,分配中断源的中断源等级。3.提供中断类型号为CPU实现程序的转移给出中断服务程序入口地址指针。4.实现中断请求的屏蔽和开放5.执行中断结束命令,49,5.8可屏蔽中断的体系结构及初始化5.8.1可屏蔽中断的体系结构可屏蔽中断体系由主/从两片82C59A中断控制器进行级联组成,可支持15级可屏蔽中断处理,如图5.8所示。,50,51,15级可屏蔽中断的中断号分配如表5.3和表5.4所示。,表5.4从片82C59A8级硬中断源的中断号,表5.3主片82C59A8级硬中断源的中断号,5.8.2可屏蔽中断的初始化设置1初始化设置的内容(1)中断触发方式采用边沿触发,上跳变有效。(2)中断屏蔽方式采用常规屏蔽方式,即使用OCW1向IMR写入屏蔽码。(3)中断优先级排队方式采用固定优先级的完全嵌套方式。(4)中断结束方式采用非自动结束方式中的不指定结束和指定结束两种命令格式,即在中断服务程序服务完毕中断返回之前,发结束命令代码20H或6XH均可(X为07)。(5)级联方式采用两片主/从连接方式,并且规定把从片的中断申请输出引脚INT连到主片的中断请求输入引脚IR2上。两片级联处理15级中断。(6)15级中断号的分配为:中断号08H0FH对应IRQ0IRQ7,中断号70H77H对应IRQ8IRQ15。(7)两片82C59A的端口地址分配为:主片82C59A的两个端口是20H和21H;从片82C59A的两个端口是0A0H和0A1H,52,2初始化设置的程序(1)初始化流程系统上电期间,分别对82C59A的主片和从片进行初始化。初始化流程如图5.9所示。,53,(2)系统对中断控制器初始化程序段82C59A主片汇编语言初始化程序段如下。,INTA00EQU020H;82C59A主片端口(A0=0)INTA01EQU021H;82C59A主片端口(A0=1)MOVAL,11H;ICW1:边沿触发,多片,要ICW4OUTINTA00,ALJMPSHORT$+2;I/O端口延时要求(下同)MOVAL,8H;ICW2:中断号的高5位OUTINTA01,ALJMPSHORT$+2MOVAL,04H;ICW3:主片的IR2上接从片,(A0=1)OUTINTA01,ALJMPSHORT$+2MOVAL,01H;ICW4:非缓冲,全嵌套,16位的CPU,非自动结束OUTINTA01,AL,54,82C59A从片汇编语言初始化程序段如下。INTB00EQU0A0H;82C59A从片端口(A0=0)INTB01EQU0A1H;82C59A从片端口(A0=1)MOVAL,11H;ICW1:边沿触发,多片,要ICW4OUTINTB00,ALJMPSHORT$+2MOVAL,70H;ICW2:中断号的高5位OUTINTB01,ALJMPSHORT$+2MOVAL,02H;ICW3:从片接主片的IR2(ID2ID1ID0=010)OUTINTB01,ALJMPSHORT$+2MOVAL,01H;ICW4:非缓冲,全嵌套,16位的CPU,非自动结束OUTINTB01,AL系统一旦完成了对82C59A的初始化,所有外部硬件中断源和服务程序(包括已开发和未开发的)都必须按初始化的规定去做,因此,为慎重起见,对系统的82C59A初始化编程不由用户去做,而是在微机启动后由处理器按初始化设置要求自动完成。,55,5.9系统中断资源的应用5.9.1修改中断向量修改中断向量是修改同一中断号下的中断服务程序入口地址。1中断向量修改的方法中断向量修改的方法是利用DOS功能调用INT21H的35H号功能和25H号功能。INT21H系统功能调用为用户程序修改中断向量提供了两个读/写中断向量的功能号,其入口/出口参数如下。(1)INT21H的35H号功能是从中断向量表中读取中断向量入口参数:无。AH=功能号35H,AL=中断号N。调用:即执行INT21H。出口参数:ESBX=读取的中断向量的段基址:偏移量。(2)INT21H的25H号功能是向中断向量表中写入中断向量入口参数:DSDX=要写入的中断向量的段基址:偏移量。AH=功能号25H,AL=中断号N。调用:即执行INT21H。出口参数:无。,56,2中断向量修改与恢复的步骤(1)调用35H号功能,从向量表中读取某一中断号的原中断向量,并保存在双字节变量中。(2)调用25H号功能,将新中断向量写入中断向量表中原中断向量的位置,取代原中断向量。(3)新中断服务程序完毕后,再用25H号功能将保存在双字节变量中的原中断向量写回去,恢复原中断向量。,57,5.9.2编写中断服务程序1中断服务程序的一般格式NEW_INTPROCFAR(寄存器进栈);现场保护(服务程序主体);服务程序MOVAL,20H;向从片82C59A发结束命令MOVDX,0A1HOUTDX,ALOUT20H,AL;向主片82C59A发结束命令(寄存器出栈);恢复现场IRET;中断返回NEW_INTENDP,58,59,2编写中断服务程序需要注意的几个问题(1)注意现场的保护在中断服务程序中要使用的某些寄存器,要进栈保存,以免破坏主程序所使用的这些寄存器内容。(2)注意堆栈操作的对称性在堆栈中存放的中断返回地址及现场信息,要特别注意进栈与出栈的对称性,即进栈与出栈的内容和顺序都要一一对应,不要出现进栈与出栈不一致,以免发生中断结束后不能正确返回断点,造成严重后果。(3)中断服务程序要尽可能短为避免对同级或低级的中断源造成阻塞和干扰,要求中断服务程序执行要快。因此,能在主程序中做的工作尽可能安排在主程序中进行,而不要放到中断服务程序中去。,60,5.10中断服务程序设计5.10.1主中断控制器的中断服务程序设计例5.1利用系统中断控制器主片82C59A的中断服务程序设计。1.要求中断申请电路如图5.10所示。微动开关SW的中断请求接到IRQ7。要求每按下1次开关SW就申请1次中断,按8次后显示“OK!”,程序结束。试编写中断服务程序。2.分析IRQ7是主片82C59A的IR7引脚上的中断请求输入线,中断号为0FH,系统分配给打印机中断,当打印机空闲不使用时,用户可以通过修改中断向量进行利用。,61,3程序设计具体程序,见教材P90-92,62,5.10.2从中断控制器的中断服务程序设计例5.2利用系统中断控制器从片82C59A的中断服务程序设计。1要求中断申请电路如图5.11所示。拨动开关SW的中断请求接到IRQ10。要求每按下1次开关SW就申请1次中断,显示“OK!”,然后返回,程序结束。,63,2分析IRQ10是从片82C59A的IR2引脚上的中断请求,中断号为72H,是系统保留的,用户可以使用。由于是从片82C59A,故在执行从片的屏蔽与开放和发中断结束命令时,都要考虑对主片进行相应的操作。3程序设计具体程序见教材P93-94,5.48259A在PC系统中的应用,8259A初始化编程举例:,ICW1=13H=00010011B边沿触发,单片要ICW4ICW2=08H=00001000B中断号的高5位,低3位由IR2动态产生ICW4=09H=00001001B全嵌套,8088非自动结束例2.采用2片8259,主/从结构,中断优先级顺序:IRQ0,IRQ1,IRQ8IRQ15,IRQ3IRQ7主片:ICW1=11H;边沿触发,多片,要ICW4ICW2=08H;中断号高5位ICW3=04H;主片的IR2接到从片上D2=1ICW4=01H;非缓冲,全嵌套,16位CPU从片ICW1=11H,ICW2=70H,ICW3=02H,ICW4=01H,,Eg:单片8259A的端口地址是80H和81H,采用边沿触发,普通嵌套方式,缓冲方式,非自动中断结束方式,需要ICW4,中断类型码是18H-1FH,请对8259A进行初始化。,MOVAL,13H;设置ICW1=00010011,即采用边沿触发,单片,需要ICW4OUT80H,AL;ICW1写入地址A0=0MOVAL,18H;ICW2=00011000,确定ICW2的高5位OUT81H,AL;ICW2写入地址A0=1MOVAL,0DH;ICW4=00001101,即普通嵌套方式,缓冲方式,非自动中断结束方式,用于8086/8088OUT81H,AL;ICW4写入地址A0=1,Eg:已知8259A的端口地址是20H,21H,读取其中断请求寄存器IRR和中断服务寄存器ISR的内容。MOVAL,0AH;OCW3=00001010,读IRR寄存器OUT20H,AL;OCW3输出到8259A的地地址NOP;空操作,等待3个时钟周期INAL,20H;从低地址读入IRR的内容,Eg:设目前系统的最高优先权为IR5,若执行OCW2命令,且命令中EOI=0,R=1,SL=1,L2L1L0=011。请指出OCW2命令执行后,8259A的优先权顺序。,从OCW2命令可知它是指定优先权特殊循环方式的最低级,有L2L1L0=011可知最低优先权的为IR3,所以执行完OCW2命令后,8259A的8个中断源的优先权从高至低依次为:IR4,IR5,IR6,IR7,IR0,IR1,IR2,IR3。,一个中断系统有一片主8259A和3片从8259A,从8259A分别接至主8259A的IR2、IR3、IR4上。若主8259A的IMR此时设置为01010000,各从8259A的IMR均设置为0,且连接IR3的从8259A此时最低优先权为IR5。请按优先权由高到低的顺序列出未被屏蔽的中断级。试编写主8259A和链接IR3的从8259A的初始化程序及写入有关的操作命令字(8259A端口地址和中断类型码可自己定义),系统中共有8259A4片,应用中断源输入为:3*8+5=29级,但主8259A的IMR此时设置为01010000,则连接主8259A上的IR4的从片被屏蔽,主8259A的IR6被屏蔽,此时未被屏蔽的中断源还有20个。所以未被屏蔽的各中断源按优先权由高到低的顺序是:主片:IR0、IR1、接IR2的从片:IR0-IR7接IR3的从片:IR6、IR7、IR0-IR5(连接IR3的从8259A此时最低优先权为IR5)主片IR5、IR7,设主8259A的端口地址为20H、21H,连接IR3的从片端口地址为24H、25H。主片的初始化:设定缓冲方式、级联、IR2、IR3和IR4连接从片,中断请求信号边沿触发,中断类型号为:40H-47H,特殊全嵌套方式,非自动EOI,屏蔽IR4、IR6主片初始化程序:,连接IR3的从片初始化:设定缓冲方式,级联,该从片接主片IR3上,中断请求信号边沿触发,中断类型号48H-4FH,优先权为特殊循环方式,IR5为最低,非自动EOI.则初始化程序:,79,本章小结中断技术的基本概念、工作原理中断处理过程中断控制器82C59A的外部特性、工作方式、编程模型,以及微机中断体系初始化重点是中断向量的修改和中断服务程序的编程方法,
展开阅读全文
相关资源
相关搜索

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


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

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


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