9-中断控制器(1).ppt_第1页
9-中断控制器(1).ppt_第2页
9-中断控制器(1).ppt_第3页
9-中断控制器(1).ppt_第4页
9-中断控制器(1).ppt_第5页
已阅读5页,还剩84页未读 继续免费阅读

下载本文档

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

文档简介

1、1,第九章 中断控制器,2,中断的基本概念,一、什么是中断: 指CPU在正常运行程序时,由于内部或外部事件引起CPU暂时中止执行现行程序,转去执行请求CPU为其服务的那个外设或事件的服务程序,待该服务程序执行完后又返回到被中止的程序这样一个过程。,中断服务程序:处理中断事件的程序段。 中断断点:被中断中止的原程序的下一条指令的地址。,3,例:设某中断源的类型码为4AH,试画出求中断服务处理程序的示意图。 解: 中断向量表指针为4*n=4*4AH=128H, 即:0000:0128H。 通过中断向量表,中断服务程序的入口地址为0F000H:1806H。如图:,4,8086系统的中断类型和中断向量

2、表,5,当有多个中断源同时请求时,CPU就要识别出是哪些中断源有中断请求,辨别和比较它们的优先权,先响应优先权级别最高的中断申请。 这种把多个中断源按轻重缓急的优先处理权按由高到低的顺序排列,称之为中断优先权排队。,中断优先权排队 :,6,若CPU正在处理某一中断过程时,出现了级别更高的中断请求,CPU应能停止执行级别低的中断服务程序而去处理级别更高的中断,等高级别中断处理完,再处理未处理完的低级中断,它处理完,再回到主程序。这种方式称为多重中断或中断嵌套。下图为一个三级中断处理过程。图中,外设C的优先级最高,外设B次之,外设A最低。,中断嵌套,7,9.1 可编程中断控制器8259A,一、82

3、59协助CPU处理中断事务所做的工作,中断源的优先级排队管理 接受、扩充外设的中断请求 向CPU提供中断类型号 实施中断请求的禁止和允许,8,1、8259A的引脚:,二、 8259A的引脚功能及内部结构,9,8259A的内部结构框图,二、 8259A的引脚功能及内部结构,10,二、 8259A的引脚功能及内部结构,8259A引脚功能 8259A是28个引脚封装的双列直插封芯片,芯片引脚功能定义如下: D7D0:双向、三态数据线,可与系统的数据总线直接相连。 WR:写控制信号,输入,低电平有效。与控制总线上的信号相连。 RD:读控制信号,输入,低电平有效。与控制总线上的信号相连。 CS:片选信号

4、,输入,低电平有效。CPU的高位地址经地址译码电路选中它。 INT:中断请求信号,输出,高电平有效。是8259A向CPU输出的中断请求。,11,二、 8259A的引脚功能及内部结构,A0:地址选择信号,输入,用来选择内部端口。8259A只有两个端口地址,常把A0=0所对应的端口称为“偶端口”,把A0=1所对应的端口称为“奇端口”。 当8259A与8位CPU8088相连时,其A0其可直接与8088的A0线相连; 当8259A与16位CPU8086相连时,由于其D7D0接8086的低8位,因此,8086的A1接到该引脚,此时8259A的端口均为偶地址。,12,二、 8259A的引脚功能及内部结构,

5、INTA:中断响应信号,输入,低电平有效。接收来自CPU的中断响应信号INTA。 IR7IR0:外设向8259A发出的中断请求信号,输入,高电平有效。接收来自外设接口发出的中断请求。 CAS2CAS0:级连信号线,双向。当8259A作为主片时,为输出线;当8259A作为从片时,为输入线。,13,SP/EN:主从片设定/允许缓冲信号,双向双功能,低电平有效。 8259数据线与系统数据总线间连接方式采用非缓冲方式(即直接相连,无数据总线驱动器)时,作为输入。主8259接高电平,从8259接低电平。 8259数据线与系统数据总线间连接方式采用缓冲方式(即有数据总线驱动器)时,作为输出,用于启动数据总

6、线驱动器。 如果工作在缓冲方式并且有级连应用时,作为输出,用于启动数据总线驱动器。主从片的设置用软件解决。,二、 8259A的引脚功能及内部结构,14,输入: 作为主片时接+5V 作为从片时接地,8259工作于非缓冲方式,15,8259工作于缓冲方式,数据缓冲器,输出: 作为数据缓冲器 的选通信号,16,(1)中断请求寄存器IRR IRR是8位寄存器,用来接收来自外设中断源的中断请求。 它通过IR7IR0与8个中断源相连。若IRi=1时,IRR的相应第i位置1。若最多有8个中断请求信号同时进入IR7IR0端,IRR全被置1。 一旦IRi=1中断请求被响应,则IRi=0(复位),2、8259A内

7、部结构,例:如果当前IRR=35H ,问有哪几个中断请求尚未被响应?,IR7 IR6 IR5 IR4 IR3 IR2 IR1 IR0,IRR,17,2、8259A内部结构,(2)中断服务状态寄存器ISR ISR是8位寄存器,用来记录CPU当前正在为哪个或哪几个中断源服务。 当CPU响应IRi请求时,ISR中相应位置1。当ISR中的有多个“1”时,表明CPU正在为较低中断服务时,又有较高的中断请求,CPU又转去处理较高的中断,形成中断服务嵌套。 当某个中断处理完毕,ISR的相应位复位(或用指令或自动)。,例:如果当前ISR=45H ,问有哪几个中断请求已经被响应?如果按照IR0的中断优先级最高,

8、IR7的中断优先级最低排序,当前正在相应的是哪一级中断?,ISR,IR7 IR6 IR5 IR4 IR3 IR2 IR1 IR0,18,ISR,当IR6有中断请求时,没有更高级的请求,给与响应 。,如果按照IR0的中断优先级最高,IR7的中断优先级最低排序,,1,当IR2有中断请求时,优先级高于IR6,中断IR6,给与响应 。,1,IR7 IR6 IR5 IR4 IR3 IR2 IR1 IR0,当IR0有中断请求时,优先级高于IR2,中断IR2,给与响应 。,1,有三个中断请求已经被响应(IR6,IR2,IR0),当前正在执行的是IR0的中断服务。,如果此时IR3有中断请求,是否能够给与响应?

9、,19,(3)中断屏蔽寄存器IMR IMR是8位寄存器,用来屏蔽已被锁存在IRR中的中断请求信号。 当IMR的第i位被置1时,相应的IRi被屏蔽,不能进入系统的下一级优先权处理器去判优,不能向CPU发出中断请求。 IMR的值可通过软件设置或改变。,2、8259A内部结构,例:如果当前IMR=48H ,问有哪几个中断请求被屏蔽?,IR7 IR6 IR5 IR4 IR3 IR2 IR1 IR0,IMR,20,(4)优先权判别电路PR PR用于判别已进入IRR中且未被IMR屏蔽的各中断请求的优先级别。当多个中断请求同时产生时,优先权处理器PR根据IMR的内容和用户设定的优先级规则,判断这些请求信号的

10、最高级,向CPU输出中断请求信号INT。 若CPU响应中断,则将它送入中断服务寄存器ISR。 若8259A正为某一中断服务,而又出现新的中断请求,则PR判断新的中断请求级别是否更高。若是,则进入中断嵌套。,2、8259A内部结构,21,(5)读/写控制逻辑 该电路的功能是接收来自CPU的读/写命令,完成对8259A内部端口的读写操作。具体的操作内容由CS、A0、WR、RD四个信号共同决定。,2、8259A内部结构,22,2、8259A内部结构,(6)级联缓冲/比较器 当多片8259A采用主从结构级联时,该部件用来存放和比较系统中各8259A的从片选择代码。 (7)数据总线缓冲器: 数据总线缓冲

11、器是一个8位的双向三态缓冲器,用来连接8259A和系统数据总线。 8259A通过它与CPU进行命令、状态、数据信息的传送。,23,(8)控制逻辑 控制逻辑电路中有七个寄存器,其中ICW1ICW4用来存放初始化程序设定的工作方式字、管理8259A的工作;OCW1OCW3用来存放操作命令字,对中断处理过程进行动态控制。 控制逻辑电路有两个控制作用: 一是根据IRR,IMR,PR的状态,通过INT向CPU请求中断, 二是接收来自CPU的INTA信号,使ISR相应位置1,且使IRR 相应位置0,避免该中断源一次申请产生两次或两次以上中断。,2、8259A内部结构,24,三、8259的工作方式,1、中断

12、触发方式 电平触发方式 在该方式下, 8259A把IRi端出现的高电平作为中断请求信号。使用时须注意的是,当出现一个中断请求信号并得到响应(ISR的相应位置位)后,必须及时撤除高电平,否则会产生不必要的第二次中断请求。 边沿触发方式 在该方式下, 8259A把IRi端出现的上升沿作为中断请求信号。边沿触发的优点是申请中断的IRi端可以一直保持高电平,不会被误判为又一次中断请求。 中断查询方式 外设通过8259申请中断时,8259不使用硬件信号INT向CPU发中断请求,而是CPU用软件来查询8259当前受到的中断请求,并响应该请求。,25,2、连接系统总线的方式 缓冲方式 在多片8259A级联的

13、大系统中,8259A通过总线驱动器和数据总线相连。此时,8259A的SP/EN端输出一个低电平(EN=0)作为总线驱动器的启动信号,即与总线驱动器的允许端相连。 非缓冲方式 当系统中只有单片或片数不多的8259A时,一般将8259A直接与数据总线相连。此时,8259A的SP/EN端作为输入信号。单片8259A时,SP=1。若多片互连时,主片的SP=1,从片的SP=0。,三、8259的工作方式,26,缓冲方式,数据缓冲器,输出: 作为数据缓冲器的选通信号,27,非缓冲方式,输入: 主片接+5V,输入: 从片接地,28,3、中断屏蔽方式 普通屏蔽方式 当CPU执行主程序时不希望某几个中断源申请中断

14、,或在执行某一中断服务程序时不希望比该中断源级别更高的中断源申请中断,可采用此法。 方法是:将中断屏蔽字写入IMR,若某位写入“1”,则禁止相应的IR申请中断,若写入“0”,则开放相应的中断源。,三、8259的工作方式,29,特殊屏蔽方式 在执行某一中断服务程序时,仅对本级中断进行屏蔽,允许接受级别较低的中断请求。 设置特殊屏蔽方式后,对正在响应的某级中断,编程使IMR对应位置1,就会同时使ISR的对应位复位。这样,不只屏蔽了当前正在处理的本级中断,而且开放了较低级的中断请求。,三、8259的工作方式,由上面的叙述可以看出,普通屏蔽方式的命令字可在主程序或中断服务程序中写入,而特殊屏蔽方式的命

15、令字应当在中断服务程序中写入。,IR7 IR6 IR5 IR4 IR3 IR2 IR1 IR0,IMR,ISR,例如正在执行IR3的中断服务:,0,30,5、优先级排队的方式 固定优先级: 指各中断源的优先级由IRi引脚编号确定,优先级是固定的。 有普通全嵌套方式和特殊全嵌套方式两种 (1)普通全嵌套方式 在该方式下,IR7IR0的优先级顺序是IR0最高,IR7最低。且一个中断被响应,只有比它更高优先级的中断请求才会被响应。,三、8259的工作方式,31,(2)特殊全嵌套方式 与全嵌套方式基本相同,不同之处在于该方式不但响应比本级高的中断申请,而且响应同级的中断申请。 该方式一般用于8259A

16、的级连方式。在级连方式中,往往有一个主片,其他为从片。从片的INT端接到主片的IRi端。因而当前正在执行的某一中断服务程序是由某一从片IRi端。这时该从片上比IRi级别高的中断提出请求,从片予以响应,向主片发INT信号,但主片分不出来,只将它们视为同一级别。若普通全嵌套方式,则主片不响应,只有特殊全嵌套方式,主片才响应。,三、8259的工作方式,系统中若只有单片8259A时,通常采用普通全嵌套方式。系统中有多片8259A级联时,主片必须采用特殊全嵌套方式,从片可采用全嵌套方式。,32,普通全嵌套方式:同一级的中断请求不能中断同级中断。并且IR7IR0的优先级顺序是IR0最高,IR7最低。,如果

17、级联工作,主片为特殊全嵌套方式: IR4先后收到两个中断请求,同一级的中断请求能够中断同级中断。,从片为普通全嵌套方式,33,循环优先级 : 指当某个中断源受到中断服务后,它的优先权就自动降为最低,而优先级较其低一级的升为最高。 例如,IR4被服务后,相应的IR5的优先级升为最高,依次为IR6,IR7,IR0,IR1,IR2,IR3,IR4。,三、8259的工作方式,34,三、8259的工作方式,(1)优先权普通循环方式 该方式下,8259A总是自动规定:初始时,IR0有最高优先权,IR7最低。 当某个中断源受到中断服务后,它的优先权就自动降为最低,而优先级较其低一级的升为最高。 (2)优先权

18、特殊循环方式 该方式下,由用户编程决定初始时的最低优先级。如规定IR5最低,则相应的最高优先权为IR6,依次为IR7,IR0,IR1,IR2,IR3,IR4,IR5。,35,优先权普通循环方式举例:,思考:8259工作于优先权普通循环方式,当IR3的中断服务结束时,IR6处于优先级的哪一级?,36,优先权特殊循环方式举例:,置位优先权命令:将IR4置为优先权最低,思考:如果欲将IR2的优先级设为最高级,应如何实现?,答:使用置位优先权命令:将IR1置为优先权最低.,37,5、结束中断的处理方式 中断结束方式指使ISR相应位复0的方式。 当一个中断请求得到响应时, 8259A会把ISR中的相应位

19、置1。 而当一个中断服务程序结束时,必须将ISR中的相应位清“0”,否则中断控制功能将会不正常。,三、8259的工作方式,38,(1)自动结束方式(AEOI) 该方式下,ISR中相应位复0是由硬件自动完成。当CPU响应某级中断后,发出的第二个INTA信号结束时自动将ISR的相应位复0。注意:此时,中断服务程序并未结束。 该方式只适用于1片8259A,且不会发生中断嵌套的场合。 当CPU响应后自动清除ISR中的相应位,但此时中断服务程序并未结束,8259中没有留下任何痕迹。若此时有了新的中断请求,8259都将准予响应。 可能会响应级别较低的中断请求,则高级的中断请求反而有可能得不到及时地处理。,

20、39,(2)普通中断结束方式 在该方式下,需要通过CPU发指令来使ISR相应位复0。 通过软件方法向8259A发一个命令字,使当前ISR中级别最高的复位0。 该方式只适用于全嵌套方式下(优先级固定),不能用于循环优先级方式。因为全嵌套方式下,最高ISR位对应于最后一次被响应和处理的中断,即当前正在处理的中断。,三、8259的工作方式,(3)特殊中断结束方式 该方式也是通过软件(指令)向8259发一个命令字,但命令字中须指出要结束哪一级中断源,从而使ISR相应位置0。,40,四、8259A工作过程,单片8259A工作时,每次处理中断包括下述过程: 当一条或几条中断请求线(IR7IR0)变为高电平

21、,则使IRR相应位置1。 IMR对IRR进行屏蔽,并通过PR判断出当前未屏蔽的最高优先级中断请求。若CPU正在处理某一中断,PR判断新的请求是否比原中断级别高。 控制逻辑接收中断请求,向CPU发INT信号。 若CPU开中断,则在执行完当前指令后,发INTR信号,进入两个中断响应周期。 8259A收到第一个INTA负脉冲后,将最高优先级的中断的ISR相应位置1,使IRR的相应位置0。,41,8259A工作过程,8259A收到第二个INTA负脉冲后,将相应的中断类型号送上数据总线。CPU读取后,进入中断服务程序。 中断响应结束后,在自动结束中断方式(AEOI)下,8259A会在第二个脉冲结束时,自

22、行将ISR的相应位复位;若是非自动结束中断(EOI)方式,则ISR中相应位的“1”一直保持,直到中断服务程序向8259A发EOI(中断结束)命令时,才复位。,42,8259A的级联方式,一块8259A最多可管理8级中断,在多于8级中断的系统中,必须将多片8259A级联使用。 从片的IR7IR0直接与中断源相连,其INT与主片的IR7IR0的某一端口相连,根据需要可以选择从片的片数,最多为8片,因而此级联中断系统最多可带64个中断源。 引脚SP/EN可区分8259A是主片还是从片。主片SP/EN接高电平,从片SP/EN接低电平。所有的CAS2CAS0互连。主片的CAS2CAS0为输出信号,从片的

23、为输入信号。 当CPU发出第一个INTA时,主片的动作是使ISR相应位置1,IRR相应位清0,并通过CAS7CAS0发出一个编码ID2ID0。当从片接到这个编码与本身控制逻辑中的ICW3的D2D0位比较,如果相等,在CPU的第二个INTA到来时,将本身的中断类型号送上数据总线。,43,主片,从片,从片,从片,44,8259A级联结构图,45,四、 8259A的命令字,CPU发给8259A的命令分两种:初始化命令字ICW和操作命令字OCW。 初始化命令字ICW1ICW4往往是在系统启动时,由初始化程序设置。初始化命令字一旦设定,一般在系统工作过程中就不再改变。 而操作命令字OCW1OCW3是由应

24、用程序来设定。用来对中断处理过程进行动态控制,如中断屏蔽、中断结束、优先权循环和中断状态的读/写查询。因此,操作命令字可以作多次设置。,46,ICW1的命令字格式,ICW1 8259A最初写入的必是ICW1,由引脚A0和D4位确定,其格式如图所示。,初始化命令字ICW,47,A0=0,D4=1是ICW1的标志,表示当前操作是ICW1。 D7D5:只用于8080/8085系统中,而在8086/8088系统中不用,可为任意值。 D3(LTIM):IRi的触发方式选择。为1,电平触发;为0,边沿触发。 D2(ADI):这一位在8086/8088系统中不起作用。而在8080/8085系统中,该位决定中

25、断源中每两个相邻的中断向量地址的间隔值。 D1(SNGL):单片/级联方式指示。为1,单片使用:为0,则级联方式。 D0(IC4):指示是否使用ICW4。在8086/8088系统中,必须设定IC4,D0=1。而D0=0表示ICW4的全部功能置0。,ICW1,48,ICW2,A0=1:表明ICW2要写入奇地址端口。 T7T3:用在8086/8088系统中,由用户编程设定,是中断类型码的高5位。 D2D0:指明中断源所接的IR7IR0引脚。在8086/8088系统下,用户编程时可使D2D0为任意值。当8259A向CPU发送中断类型码时,IRi对应的D2D0位自动生成,其对应关系如下表5所示。,IC

26、W2是紧跟在ICW1后写入初始化程序中的。CPU响应中断,发出第二个INTA后,8259A将ICW2寄存器中内容(中断类型码)送上数据总线。,用于设置中断类型码,其格式如图所示。,49,8086/8088系统中的中断类型号的生成,由此可见,一片8259连接的8个中断请求信号的中断类型号的高5位是相同的,其低三位依中断请求接入的引脚IRi的序号而定。例如当D7D3=10101 时,其IR0 IR7的中断类型号就分别为10101000 10101111(A8H AFH),50,例2,在PC微机中断系统中,硬盘中断类型号的高5位是08H,他的中断请求线连接到8259的IR5上,在初始化8259写入I

27、CW2时只写其高5位,而低3位取零。,ICW2=0000 1000=08H,MOV AL, 08H OUT 21H,AL,当CPU 响应硬盘中断时,8259把IR5的编码“101”填写到ICW2的低3位上,组成硬盘的中断类型号: 0000 1101=ODH,51,1、外部中断的中断号由两部分组成: ICW2的高5位 + IRi的编码(低3位),2、每片8259所管理的8个中断源的中断号,它们的高五位必须是相同的。,3、每片8259所管理的8个中断源的中断号,必须是连续的8个数。,所以ICW2与中断类型号有以下特点:,52,例:设某中断向量存放在00058H地址单元处。 求 1:中断类型号, 2

28、:该8259的ICW2 3:该中断源应接入IR?,ICW2,答: 1:中断类型号 00058H416 2:该8259的ICW2=00010000=10H 3:该中断源应接入IR6,53,例2:设某中断类型号为19H,接入8259的IR1 求:该8259的ICW2。,ICW2,答: 由:中断类型号19H 0001 1001 则:该8259的ICW2=00011000=18H,54,例.已知某中断向量存放在000D4H地址单元处。并且由000D4H单元起始依次存放着10H、20H、30H、40H。 请回答: (1)中断类型号为何? (2)接入8259时,该8259的ICW2应为何? (3)该中断源

29、应接入该8259的哪个中断请求输入引脚? (4)该中断向量的物理地址为何? (5)CPU响应该中断时,CS中的值为何?IP中的值为何?,答: (1)中断类型号为35H (2)接入8259时,该8259的ICW2应为30H (3)该中断源应接入该8259的IR5引脚 (4)该中断向量的物理地址为42310H (5)CPU响应该中断时,CS中的值为4030H,IP中的值为2010H,55,主片格式: S7S0:表明主片IR7IR0是否接有从片。为1,是接从片;为0,则未接从片,中断请求直接来自外设中断源。,ICW3,ICW3用于定义级联方式。 主片、从片均要写入ICW3 ,两者的定义不同。,56,

30、从片格式: D7D3可为任意值。 ID2ID0:从片的标识码,表明该从片的INT端接到主片的IR的哪一端。 例如,ID2ID0=110,表示这个从8259A接主8259A的IR6。,57,主、从片ICW3的命令字格式,主8259 IR7 IR4 IR0,INT 从8259(1) IR7 IR4 IR0,INT 从8259(2) IR7 IR4 IR0,00010001=11H,00000100=04H,00000000=00H,例,58,当ICW1中的D0=1时写入。8086/8088系统中必须写入ICW4。其格式如图。,ICW4,59,ICW4的命令字格式,D7D5:特征位,恒为0,表示送出

31、的是ICW4。 D4(SFNM):选择中断嵌套方式。 为1,特殊全嵌套方式,一般仅用于级联方式的主片; 为0,一般全嵌套方式。单级使用或者级联时的从片 D3(BUF):是否选用缓冲方式。为1,缓冲方式;为0,非缓冲方式。 D2(M/S):表示缓冲方式下本片为主片还是从片。为1,主片;为0,从片。当BUF=0时,M/S位不起作用。,60,D1(AEOI):中断结束方式位。 为1,AEOI方式;为0,EOI方式。 D0(uPM):系统选择位,指明8259A当前工作在哪种CPU系统中。为1,是8086/8088系统;为0,是8080/8085系统。,61,8259A初始化流程,8259A正常工作之前

32、,CPU必须对每片8259A进行初始化编程。 初始化编程指通过指令按顺序依次将ICW1 ICW4命令字写入8259A。,62,8259A的命令字应用举例,例 在IBM PC/XT机中仅用一片8259A,中断请求信号采用边沿触发;中断类型号为08H0FH;用普通全嵌套、缓冲、非自动中断结束方式。8259A的端口地址为20H、21H。试按照上述要求对8259A设置初始化命令字:,采用单片8259A时,依次写入ICW1、ICW2、ICW4; 采用多片级联时,依次写入ICW1、ICW2、ICW3、ICW4,且每片8259A都要按上述顺序写入初始化命令字。,ICW1=00010011=13H 边沿触发、

33、单片、设置ICW4 ICW2=00001000=08H 中断类型号为08H0FH ICW4=00001101=0DH 普通全嵌套、缓冲、EOI方式,63,该片8259A的初始化设置的程序段如下: MOV AL,13H ;ICW1 OUT 20H,AL ; ICW1写入A0=0端口 MOV AL,08H ;ICW2 OUT 21H,AL ; ICW2写入A0=1端口 MOV AL,0DH ;ICW4 OUT 21H,AL ;ICW4写入A0=1端口,64,【例】在IBM PC/AT机中使用2片8259A构成主从式中断控制器。从片的INT与主片的IRQ2相连。 主片的中断类型号为08H0FH,端口

34、地址为20H、21H; 从片的中断类型号为70H77H,端口地址为A0H、A1H。 主从片的中断请求信号均采用边沿触发,采用缓冲、非自动中断结束方式。试按照上述要求对8259A设置初始化命令字:,ICW3(主)=00000100=04H,ICW3(从)=00000010=02H,65,主片初始化段如下: MOV AL,00010001B ;ICW1:边沿触发、级联、设 置ICW4 OUT 20H,AL MOV AL,00001000B ;ICW2:中断类型号为08H0FH OUT 21H,AL MOV AL,00000100B ;ICW3:主片IRQ2接有从片 OUT 21H,AL MOV A

35、L,00011101B ;ICW4:特殊全嵌套、缓冲/主片、EOI方式 OUT 21H,AL,66,从片初始化段如下: MOV AL,00010001B ;ICW1:边沿触发、级联、设置ICW4 OUT 0A0H,AL MOV AL,01110000B ;ICW2:中断类型号为70H77H OUT 0A1H,AL MOV AL,00000010B ;ICW3:从片标识码,即接主片的IRQ2 OUT 0A1H,AL MOV AL,00001001B ;ICW4:普通全嵌套、缓冲/从片、EOI方式 OUT 0A1H,AL,67,对8259A用初始化命令字初始化后,就进入工作状态,可以接收IRi输入

36、的中断请求,并按系统默认方式来管理中断。在系统运行时,可以根据程序需要,随时写入操作命令字,对中断管理方式进行动态地设置和修改。,操作命令字OCW,68,OCW1是中断屏蔽操作命令字,直接对IMR的相应位进行设置。其格式如图所示。 A0=1:表示要把OCW1写入8259A的奇地址端口。 M7M0:将Mi置1,就是屏蔽了IRi 的中断请求信号。 将Mi置0,就是允许IRi 的中断请求信号。,OCW1,69,中断屏蔽寄存器IMR中的内容还可以读出。 方法是直接用IN指令访问8259的A0=1端口,【例】 试编程实现下列要求:屏蔽IR5、IR4和IR1引脚上的中断请求,而不改变其余的中断屏蔽情况。

37、8259A的端口地址为20H、21H。 程序段如下: IN AL,21H ;读取IMR的当前值 OR AL,00110010B ;OCW1:D5、D4、D1位置1 OUT 21H,AL,70,例8: 操作系统的BIOS中有一段检查IMR的程序,如下,MOV AL,0 OUT 21H,AL ;置IMR=00H IN AL,21H ;读IMR OR AL,AL JNZ D6 ;非零则转D6 MOV AL, 0FFH OUT 21H,AL; 置IMR=FFH IN AL,21H ADD AL,1 ; FFH+1是否为零 JNZ D6 ;非零则转D6 : D6: 处理出错程序,写00H IMR 检查I

38、MR是否=0 如果出错转D6 写FFH IMR 检查IMR是否=FFH 如果出错转D6,71,功能:设置/改变中断优先级模式;发送中断结束命令EOI命令。其格式如图所示。 A0=0,表示OCW2写入偶地址端口; D4、D3=0是OCW2的特征位。,OCW2,72,R:优先级方式控制位。 为1,循环优先级;为0,固定优先级。 SL:决定L2L0是否有效。 为1,有效;为0,无效。 EOI:中断命令结束位。 为1,发EOI命令;为0,则该位不起作用。 L2L0:双功能。 在特殊中断结束命令时,L2L0指出具体要使ISR的哪一位复位; 在优先级特殊循环方式命令时,L2L0指出循环开始时IRi中哪个中

39、断优先级最低。,R、SL、EOI须组合起来使用,其组合方式所对应的命令如下表所示。,73,OCW2的中断结束及优先级方式,74,【例1】 若对某8259A的OCW2设置为11000101B,试分析此操作命令字所确定的工作方式。 解:根据OCW2的格式 D7D5为110,表明设置为优先级特殊循环方式; D2D0为101,表明指定初始时最低优先级为IR5。 则8259A的优先级高低顺序为IR6最高,然后是IR7、IR0、IR1、IR2、IR3、IR4,IR5最低。,OCW2应用举例 :,75,【例2】如果要设置某个8259A为特殊中断结束方式,使IR3在ISR中的相应位复0。8259A的端口地址为

40、20H、21H。 试编程实现之。 解:根据OCW2的格式 OCW2=01100011 (特殊EOI、结束IR3中断服务) 程序段如下: MOV AL, 63H; OUT 20H,AL,OCW2应用举例 :,76,【例3】如果向8259发操作命令字OCW2=E3H ( 1 1 1 0 0 0 1 1 ) 有2个作用: (1)采用中断优先级特殊循环,并指定IR3的优先级最低,IR4升为最高,其它依次排列。 (2)发特殊EOI命令,结束IR3的中断服务(ISR的D3位清零),OCW2应用举例 :,77,OCW3有三个功能:设置8259A的中断屏蔽方式;设置中断查询方式;设置读8259A内部寄存器的命令,其格式如图所示。 A0=0,表示OCW3写入偶地址端口; D4=0,D3=1,为特征位;D7未用,一般为0。,OCW3,78,D5、D6: ESMM、SMM: 配合使用,设置/取消特殊屏蔽方式。 ESMM、SMM = 11时,设置特殊屏蔽方式; ESMM、SMM = 10时,取消特殊屏蔽方式。 当ESMM=0,保持原来屏蔽方式,SMM不起作用。 设置特殊屏蔽方式的方法:在某级中断服务程序中首先设置命令字OCW3的ESMM、SMM位为11,进入特殊屏蔽方式,然后通过设置命令字OCW1使该级的Mi位为1。这样该级中断被屏蔽而不允许发生同级中断,同时开放了低级别的中断请求。若

温馨提示

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

评论

0/150

提交评论