第7章中断系统及8237ADMA控制器_第1页
第7章中断系统及8237ADMA控制器_第2页
第7章中断系统及8237ADMA控制器_第3页
第7章中断系统及8237ADMA控制器_第4页
第7章中断系统及8237ADMA控制器_第5页
已阅读5页,还剩45页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、第第7 7章章 中断系统及中断系统及8237ADMA8237ADMA控制器控制器教学内容教学内容 7.1 中断系统 7.1.1 中断的概念及其作用 7.1.2 中断处理系统 7.2 8086CPU的中断系统 7.2.1 8086CPU的中断源 7.2.2 8086CPU的中断响应过程 7.2.3 中断向量表 7.2.4 中断程序设计 7.3 中断控制器Intel8259A教学目标教学目标 掌握8086中断系统结构,特点及使用。重点内容重点内容 1 中断的概念及其作用。 2 中断处理(中断源识别、优先级判断、嵌套管理、处理过程)。 3 8086CPU中断系统。难点内容难点内容 8086CPU中断

2、系统。学时数学时数 4学时7.1 7.1 中断系统中断系统7.1.1 7.1.1 中断的概念及其作用中断的概念及其作用 1、中断的概念 中断计算机在执行正常程序的过程中出现内部或外部某些事件的请求时,CPU暂时停止当前程序的正常执行,转去执行请求事件的处理操作,CPU在事件处理结束后再回到被暂时中断了的程序继续往下执行。 2、中断系统的作用 (1)并行处理 (2)实时处理 (3)故障处理7.1.2 7.1.2 中断处理系统中断处理系统 一个完整的中断处理系统必须实现以下功能: 中断源识别、中断优先级判断、中断嵌套管理以及CPU的中断响应、中断服务和中断返回。 1、中断源识别 中断源引起程序中断

3、的事件。 在具有多个中断源的系统中,CPU需要识别哪一个中断源有中断请求。常用的中断技术有单线中断、多线中断和向量中断三种。 单线中断通过查询中断源提供中断地址信息。 多线中断每个中断源有一根输入线,由于CPU引脚线有限而只能管理少量的中断源。 向量中断由每个中断源经接口电路向CPU提供中断源的设备标志,CPU将程序转向相应中断设备的中断处理。向量中断技术如图7-2所示,当CPU响应中断后,由中断源提供中断地址信息,引导程序进入中断服务程序的入口。 2、中断优先级判断 中断优先级判断的具体方法可分为:软件查询、硬件排队和专用中断控制器。 (1)软件查询方式 在CPU响应中断后,通过用户编程采用

4、程序查询的方法确定中断源的优先级。查询的顺序决定了各中断源的优先级。 软件查询方法的优点是接口电路简单,且优先权次序可以按查询的先后顺序而改变。缺点是中断源较多时,由查询转到相应中断服务程序的时间较长,因而,此方法一般用于中断源较少、实时性要求不高的场合。 (2)硬件排队方式 图7-5是一个用硬件编码器和比较器构成的优先权排除电路。 其中共有8个中断源,任一个中断源有中断请求时,通过“或”门可以产生一个中断请求信号。 如果当前不在中断处理中,则“与”门2打开,中断请求“与”门2进入CPU。 如果当前正在某一中断处理中(即已响应了一个中断请求),但此中断源的优先级低于正在请求中断的中断源,则“与

5、”门1打开,中断请求“与”门1进入CPU;若正在处理中的中断源的优先级高于正在请求中断的中断源,则这个请求中断的中断源被阻隔,暂时无法进入CPU,将等待正在处理的中断结束后才能进入CPU。 (3)专用中断控制器 3、中断嵌套管理 中断嵌套CPU响应了一个中断请求,正在中断处理中,又有一个中断源发出中断请求。 若发出中断请求的中断源的优先权级别更高,中断系统使CPU暂停当前的中断服务,转而响应和处理中断优先级更高的中断请求,处理结束后,再返回原优先级较低的中断服务。 若发出中断请求的中断源的优先权级别低于当前正在处理的中断源,CPU不予响应,等待当前中断处理结束后,再予以响应。 4、中断处理过程

6、 一般包括中断请求、中断优先级判断、中断响应、中断服务和中断返回5个基本阶段。7.2 8086CPU7.2 8086CPU中断系统中断系统7.2.1 8086CPU7.2.1 8086CPU的中断源的中断源 8086CPU的中断系统可处理256个中断,可分为两大类:外部中断和内部中断。 1、中断源的类型 (1)外部中断(硬件中断) 分为非屏蔽中断和可屏蔽中断两种。 1)非屏蔽中断 通过NMI引脚进入CPU。只要NMI引脚有中断请求,CPU就必须响应,常用作处理重大故障和紧急情况。 2)可屏蔽中断 通过引脚INTR进入CPU。CPU对此中断请求是否响应由标志位IF决定,当IF=1时才能响应。 (

7、2)内部中断(软件中断) 1)单步中断中断类型号是1。当标志位TF=1时,CPU每执行一条指令就产生一个单步中断。 2)除法出错中断中断类型号是0。当除数为0或商超出了限定范围时产生此中断。 3)断点中断中断类型号是3。用于在程序调试时设置断点。 4)溢出中断中断类型号是4。指令为INTO,如果该指令的上一条指令使标志位OF=1,则在执行指令INTO时产生溢出中断。 5)指令中断中断类型号是n。指令格式为INT n。指令中断和INT、INTO一样,都能引起CPU的中断响应,但INT、INTO为单字节指令,且中断类型号是固定的,而INT n是双字节指令,类型号n是指令给出的。 内部中断的特点:

8、内部中断的类型号都是固定的,或是在中断指令中给定的。 不需要进入INTA总线周期获取类型号; 不受中断允许标志位IF的影响; 用一条指令或由某个标志位启动进入中断处理程序,这样 的中断没有随机性。 2、中断源的优先级7.2.2 8086CPU7.2.2 8086CPU的中断响应过程的中断响应过程 7.2.2 8086CPU7.2.2 8086CPU的中断响应过程的中断响应过程 1、内部中断和非屏蔽中断的响应及处理过程 1) 中断请求与检测。 2) 确定中断向量地址。将中断类型号乘以4获得中断向量地址。 3)保护各标志位状态和屏蔽INTR中断和单步中断。将标志寄存器入栈,并清除IF、TF标志。

9、4)保存断点。将断点地址(即IP和CS)入栈。 5)执行中断服务程序。从中断向量表中取出中断服务程序的入口地址送到IP和CS,在中断服务程序中要保护现场。 6)中断返回。执行IRET指令,从堆栈中取回断点地址送IP和CS。 2、可屏蔽中断 1) 中断请求与检测。CPU每执行一条指令后都会检测INTR上有无中断请求。 2) 判断是否响应。如果IF=1,则在执行完当前指令后响应中断请求。 3)确定中断向量地址。执行连续两个中断响应总线周期,第一个周期通知中断源中断请求已被响应,第二个周期中断源将中断类型号送上数据总线的低8位,CPU在T4的前沿从数据总线上获得中断类型号。然后将中断类型号乘以4得到

10、中断向量地址。 以下4)、 5)、 6)与内部与非屏蔽中断相同。 4)保存断点。将断点地址(即IP和CS )入栈。 5)执行中断服务程序。从中断向量表中取出中断服务程序的入口地址送到IP和CS,在中断服务程序中要保护现场。 6)中断返回。执行IRET指令,从堆栈中取回断点地址送IP和CS。7.2.3 7.2.3 中断向量表中断向量表 中断向量是中断服务程序入口地址。 中断向量表是中断服务程序入口地址表。 中断向量地址是中断向量在中断向量表中的位置。 中断向量地址与中断类型号之间的关系可表示为:中断向量地址中断类型号*4 。 8086中断系统最多可有256个中断源,每个中断有一个中断类型号(02

11、55),每个类型号对应一个中断向量,每个中断向量4个字节,前两个字节是偏移量IP,后两个字节是段基址CS,256个中断向量占用最低1KB内存,即03FFH。中断向量表如图7-10所示。 8086的前5个中断向量是专用的,接下来的27个中断向量由操作系统使用,剩下的中断向量可以由用户使用。 例7-1某中断源的类型号为34,且已知部分中断向量表如图7-11所示,试求中断服务程序入口的物理地址。 解:34*4=136 即中断向量地址为: 88H 查中断向量表得中断向量为: A123H:B678H 中断服务程序入口的物理地址为: AC8A8H 7.2.4 7.2.4 中断程序设计中断程序设计 中断程序

12、设计分为主程序设计和中断服务子程序设计两部分:主程序用来完成相关的初始化工作,为实现中断做好准备;中断服务子程序用来完成相关的中断处理工作。 1、主程序设计 初始化工作分三部分: CPU本身工作的初始化 中断控制器8259A的初始化 通用接口的初始化 2、中断服务子程序设计 中断服务子程序含有以下七个部分: (1)保护中断时的现场。 (2)若允许中断嵌套,则设置开中断。 (3)执行中断处理程序。 (4)设置关中断, (5)给中断命令寄存器送中断结束命令EOI。 (6)恢复中断时的现场。 (7)用中断返回指令IRET返回主程序。 7.3 7.3 中断控制器中断控制器Intel8259AIntel

13、8259A 8259的功能: 1)具有864级的中断优先权管理功能(多于8级时,必须通过级连扩展实现)。 2)每一级都可以通过编程实现中断屏蔽或开放。 3)在中断响应周期,8259A可以自动提供相应的中断类型号。 4)可以通过编程来选择8259A的各种工作方式及任意设定中断类型号。7.3.1 8259A7.3.1 8259A的引脚信号及结构的引脚信号及结构 1.8259A的外部引脚信号及结构 引脚信号如图712b,引脚信号的作用见表72。 2. 8259A的内部结构 (1)数据总线缓冲器 用于与CPU进行数据交换。 (2)读/写控制逻辑 用于实现读/写操作。 (3)级联缓冲/比较器 用于控制多

14、片8259A的级联,使得中断级可以最多扩展至64级。扩展时用一片主片,多片从片。 (4)中断请求寄存器IRR 具有锁存功能的8位寄存器,用于寄存所有外部中断请求。当8个中断请求IR0IR7中任何一个的输入上升为高电平时,IRR中相应的位置1,该位在中断响应过程中被清除。 (5)中断服务寄存器ISR 8位寄存器,用于存放正在被服务的中断级。在中断响应的第一个INTA周期将ISR相应位置1,同时对应的IRR位复位。ISR的复位由8259A中断结束方式决定。若是自动结束方式,则由CPU在第二个INTA周期后沿将其复位;若是非自动结束方式,则由CPU发送的中断结命令将其复位。允许多重中断时,ISR多位

15、同时被置成1。 (6)中断屏蔽寄存器IMR 8位寄存器,用于寄存要屏蔽的中断级。该寄存器的每一位对应一个中断级,1表示屏蔽该级中断请求,0表示开放该级中断请求。寄存器内容可以通过软件以屏蔽命令设置。各屏蔽位相互独立(屏蔽高优先级的中断不会影响低优先级的中断)。 (7)优先权比较器PR 用于存放IRR中各请求信号的优先级,并排队判优,若中断允许嵌套时,所选最高优先级还要和ISR中内容比较,以实现高优先级的嵌套中断。 (8)中断控制逻辑 控制逻辑是8259A的内部控制器。根据中断请求寄存器IRR的置位情况和中断屏蔽寄存器IMR设置的情况,通过优先级判别器PR判定优先级,向8259A内部及其他部件发

16、出控制信号,并向CPU发出中断请求信号INT,接收CPU的中断响应信号 ,使中断服务寄存器ISR相应位置1,并使中断请求寄存器IRR相应位清0。 当CPU第二个 信号到来,控制8259A送出中断类型号,使CPU转入中断服务子程序。如果方式控制字ICW4的中断自动结束位为1,则在第二个 脉冲结束时,将8259A中断服务寄存器ISR的相应位清0。INTAINTAINTA7.3.2 8259A的工作方式 8259A共有6种工作方式。 1.中断请求方式 (1)边沿触发器方式 中断请求输入端(IR0IR7)的上升沿实现中断请求。 (2)电平触发方式 中断请求输入端(IR0IR7)的高电平实现中断请求。要

17、求高电平保持到中断请求被响应,且在中断返回前撤除,否则将引起又一次中断。 (3)中断查询方式 8259A不向CPU发INT信号,由CPU不断查询8259A,当发现有中断请求时,就转入相应的中断服务程序。查询时,系统先关中断,然后将查询方式命令字OCW3送到8259A,再对8259A执行一条输入指令,8259A便将一个如下格式的查询字送上数据总线。 D7 D6 D5 D4 D3 D2 D1 D0 I W2 W1 W0 I=1表示有设备请求中断服务。W2W1W0组成的代码表示当前中断请求的最高优先级。 2.中断源屏蔽方式 (1)普通屏蔽方式 在中断屏蔽寄存器IMR中写入中断屏蔽字。1使对应中断输入

18、被屏蔽,0则对应中断输入被允许。 (2)特殊屏蔽方式 用于屏蔽当前已响应的中断,并将ISR中的对应位清0,以开放其他优先权较低的中断输入。在进入中断后在中断屏蔽寄存器IMR中将已响应的中断输入对应位置1,使当前已响应的中断被屏蔽,其他优先权较低的中断输入被开放。注意应先设置特殊屏蔽方式,然后建立屏蔽信息。在中断服务程序结束时应退出特殊屏蔽方式。 3.中断嵌套方式 (1)全嵌套方式 初始化后的默认工作方式。 IR0的优先级最高,IR0IR7优先级依次降低。只有高优先级的中断请求可以中断低优先级的中断请求。一个中断请求被响应后,它自身(即同级)的再次请求也不能被响应。 (2)特殊全嵌套方式 与全嵌

19、套方式基本一样,不同之处仅为一个中断请求被响应后,它自身(即同级)的再次请求还能被响应。这是为了在级联的情况下,从片中优先级更高的中断请求能够被响应。 4.优先级循环方式 (1)优先级自动循环方式 在这种方式下,初始时IR0的优先级最高,IR0IR7优先级依次降低。当某个中断请求被响应且中断服务结束后,它的优先级便降为最低,紧随其后的那个优先级自动上升为最高优先级。 例如当前IR3优先级最高,IR2优先级最低,当IR4、IR6同时有请求时,响应IR4,在IR4被服务后,IR4的优先级降为最低,而IR5升为最高,其余的依次为IR6、IR7、IR0、IR1、IR2、IR3。 (2)优先级特殊循环方

20、式 在设置了优先级特殊循环方式后,由编程来决定初始最高优先级,即通过指定最低优先级来决定最高优先级,例如指定IR4为最低优先级,则IR5就是最高优先级。其余同优先级自动循环方式。 5.中断结束方式 所谓中断结束处理,就是对中断服务寄存器ISR中对应位的清0处理,如果ISR中的对应位不清0,中断优先权的判别就会不正常,因为ISR中的1表示该中断请求正在服务中。 (1)中断自动结束方式 当CPU进入中断响应周期,并在发出第二个INTA脉冲后自动将ISR中对应的位次清0,实现中断结束的自动处理。由于在一个中断请求正在响应中,ISR中的对应位已清0,因此仅适用于只有一片8259A且不会有中断嵌套情况发

21、生的场合。 (2)中断非自动结束方式 1)普通EOI结束方式。用于全嵌套工作方式下,在这种情况下,中断服务寄存器可以确定哪一个中断是最后响应和处理的。CPU向8259A传送EOI结束命令字,就会自动将ISR寄存器中级别最高的置1位清0。注意EOI结束命令字应放在返回指令IRET前且紧靠着,否则会出错。 2)特殊EOI结束方式。用于非全嵌套工作方式,在这种情况下,中断服务寄存器无法确定哪一个中断是最后响应和处理的。特殊EOI结束命令字中要将当前准备清除的中断传给8259A,8259A将ISR中指定位清0。 级联方式下须使用非自动结束方式,在中断结束时,要对主片和从片分别发中断结束命令。 6.读8

22、259A状态方式 通过读命令取出8259A中IRR、ISR和IMR等寄存器中状态。7.3.3 8259A的编程 8259A的编程分为初始化编程和工作方式编程。初始化编程写初始化命令字ICW1ICW4到8259A中,须在正常操作前完成。工作方式编程写操作命令字OCW1OCW3到8259A中,可在工作开始前写入,也可以在工作期间写入。 1.初始化命令字及其编程 初始化命令字共有4个:ICW1ICW4。必须严格按图713所示的输入流程进行。 (1)芯片控制初始化命令字ICW1 三个作用: 1)设定中断请求信号触发形式,高电平触发或上升沿触发。 2)设定8259A工作方式,单片或级联。 3)清除中断屏

23、蔽寄存器IMR,设置优先权排队,使IR0优先权最高,IR1次之,依此类推,IR7最低。 ICW1命令字格式如图714所示。 ICW1命令字输入条件:写入命令字的端口地址A0=0,命令字的特征位D4=1。 IC4:由D0定义,指出初始化过程是否要写入ICW4(若不写入则ICW4所有位均为0,在80X86系统中必须使用ICW4)。 LTIM:由D3定义,指出8个中断信号作用的有效触发方式。D3=0,为上升沿触发; D3=1,为高电平触发。 SNGL:由D1定义,指出单片或多片级联方式,D1=1指出系统使用的8259A初始化编程的一部分。 其中,D2和D5D8只在8080/8085微机系统中有用,在

24、80X86系统中不起作用。 (2)中断类型初始化命令字ICW2 用来设定8259A中断类型号基值,即IR0对应的中断类型号。命令字格式如图715所示。 ICW2命令字输入条件:紧接着ICW1写入,且写入地址A0=1。 ICW2中的低3位D2D0是由系统自动填入中断请求输入端IR0IR7的编码。 ICW2中的高5位D7D3是由用户编程写入T7T3若ICW2写入40H时,则IR0IR7对应的中断类型号分别为40H、 41H、 42H、 43H、 44H、 45H、 46H、 47H。 (3)主/从片初始化命令字ICW3 ICW3的作用是定义系统中主片、从片的级联,对主8259A和从8259A进行初

25、始化。 ICW3命令字输入条件:仅当多片8259A级联时,且写入命令字的端口地址位A0=1,主、从片都须写入ICW3。 主片ICW3的D7D0表示IR7IR0输入上有无从片,1表示有。 从片ICW3的ID2ID0为对应于主片IR7IR0级联的从片的编码。 (4)方式控制初始化命令字ICW4 用于定义CPU模式、设定嵌套方式、设定结束操作方式,其命令字格式如图717所示。 ICW4命令字输入条件:仅当ICW1中D0(IC4)为1时才需要写入ICW4,且写入命令字的端口地址A0=1。 设置CPU类型:由D0定义,当8259A连接到80X86时D0必须为1。 设置中断结束方式:由D1定义,当D1=1

26、时,表示该中断自动结束(AEOI),即当该中断请求获得响应后, 不必在中断处理程序中使用中断结束(EOI)命令,而自动使中断服务寄存器(ISR)复位;当D1=0时,必须由中断服务程序送出EOI命令使ISR复位。 设置缓冲器:由D3、D2定义,D3=0时表示非缓冲方式,说明本片8259A和系统数据总线之间没有缓冲器;当D3D2=10时,本片为缓冲方式且是从片;当D3D2=11时,本片为缓冲方式且是主片。使用缓冲方式时 为输出,用来驱动缓冲器; 使用非缓冲方式时 为输入,用来设置该片8259A为主片(1)/从片(0)。EN/SPEN/SP 2.操作命令字及其编程 8259A共有OCW1OCW3三个

27、操作命令字,设置时对端口地址有严格规定:设置OCW1必须采用奇地址端口(A0=1),设置OCW2和OCW3必须采用偶地址端口(A0=0)。其中OCW2和OCW3是通过命令字本身的D4D3位来区分:D4D3=00时表示OCW2,D4D3=01时表示OCW3。 设置嵌套方式:由D4定义,当D4(SFNM)置1时,表示8259A处于多片中断控制系统中,其优先级顺序采用特殊全嵌套方式;当D4(SFNM)置0时,则表示其优先级采用全嵌套方式。 D7D5未用,一般取值为0。 (1)屏蔽操作命令字OCW1 OCW1命令字格式如图718所示。此命令字写入中断屏蔽寄存器IMR,写入时端口地址A0=1。 D7D0

28、分别对应输入IR7IR0,0为允许,1为禁止。 OCW1命令字也可以从端口地址A0=1读入。 (2)中断方式命令字OCW2 OCW2命令字格式如图719所示。该命令字用于设置优先级是否循环、循环的方式及中断结束的方式。 设置OCW2的条件:命令字中标志位D3D4=00,写入的端口地址A0=0。 循环方式设置:由D7定义,该位若为1,表示采用优先级循环方式;若为0,则为非循环方式。 中断结束命令设置:由D5定义,该位若为1则表明OCW2操作命令的任务之一是用作结束中断命令,若为0则不作为结束中断命令。 末三位有效性设置:由D6定义,该位若为1,末三位L2L0有效,若为0,则L2L0无效。当用OCW2发出特殊的中断结束命令时,具体要清除ISR中的哪一位可以由L2L0指出。另外,当用OCW2发出特殊的优先级循环方式命令字时,循环开始时究竟哪个中断的优先级最低也是由L2L0来指出。 (3)状态操作命令字OCW3 用于设置查询方式、设置或撤销特殊屏蔽方式、以及用来读8259A中中断请求寄存器IRR、中断服务寄存器ISR的当前状态。命令字格式如图720所示。 设置OCW3的条件:命令字中标志位D4D3=01,写入的端口地址A0=0。 设置查询方式:由D2定义,该位若为1,表明8259A采用中断查询方式,可以使CPU用程序随时查询中断源(读出最高优先级的中断请求

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论