第六章 中断技术_第1页
第六章 中断技术_第2页
第六章 中断技术_第3页
第六章 中断技术_第4页
第六章 中断技术_第5页
已阅读5页,还剩111页未读 继续免费阅读

下载本文档

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

文档简介

1第五章

中断技术

25.1中断的基本概念

一、中断:指CPU在正常运行程序时,由于内部/外部事件或由程序的预先安排引起CPU中断正在运行的程序,而转到为内部/外部事件或为预先安排的事件服务的程序中去。服务完毕,再返回去继续执行被暂时中断的程序。例:

PC机的键盘管理便是使用中断功能的较好例子.

使用中断指令处理机内部的原因如除数为0、奇偶校验错(PC机采用的是奇校验)等,都可以引起中断。

3二、中断源与中断识别中断源:发出中断请求的外设或引起中断的内部原因。包含:外设中断(外设请求与CPU交换数据)

指令中断(INTn)

程序性中断(溢出、除数为0等)

硬件故障中断(奇偶错、电源掉电)。42.中断识别:

指CPU根据一定的措施查找中断源,形成相应的中断服务程序的入口地址。识别方法:①向量中断:由中断向量来提供中断服务程序的入口地址。②查询中断:采用软件或硬件查询技术来确定发出中断请求的中断源。

5三、中断向量与中断向量表1.中断向量:中断例行程序的入口地址。

80X86在实模式下有中断向量256个,每个占4B(低2字节为偏移地址,高2字节为段基址)。2.中断号:系统分配给各中断源的代号。取值范围为0~0FFH。系统提供的中断号见书P80页或有关资料。3.中断向量表:中断向量按类型号由小到大顺次存放在地址区间:00000H~003FFH。这就构成了中断向量表。(见下表)64.中断向量指针(或中断向量入口地址,它是中断向量在中断向量表中的首偏移地址)=中断类型号*4

7四、中断向量的装入与修改

我们可以用自己设计的中断程序来代替系统提供的某个中断处理程序,然后在程序中以中断的形式调用它。这就要用新的中断处理程序的段址和段偏移来取代原来的中断向量。

89五、中断优先级排队方式

由于CPU一次只能响应并处理一个中断,当同时出现多个中断请求时,必须要排队处理。常用的有2种排队方法:①按优先级排队:预先指定各中断源的优先级别。高的先响应。②循环轮流排队:不分级别高低,CPU轮流响应各中断请求。10六、中断嵌套

正在执行的中断处理程序,又被其他中断源中断,这种情况叫做中断嵌套。一个正在执行的中断处理程序,能被优先级高于它的中断源中断。在开中断(IF=1)的情况下,对可屏蔽中断来说,如有必要,甚至可以在中断处理程序中采用特定的方法使CPU也能响应同级或低级中断。中断嵌套的深度受堆栈容量的限制。115.2IBM-PC微机中断系统

一、硬中断由外设提出中断申请,CPU响应后产生的中断。

PC机有一片中断控制器8259A,286以上有2片8259A。它用于接收外设的中断请求,并负责向CPU发出中断申请。12

硬中断的中断号和优先级在系统设计时就已给定。中断号小则优先级高。

286以上系统的硬中断源列表

131.NMI:CPU的NMI引脚上出现—个上升沿触发信号时,产生2号中断(NMI)请求。该中断不会被指令CLI所禁止,在硬中断中它具有最高的优先级。只要出现NMI请求,CPU立即响应。在响应该中断时,CPU既不给出中断应答信号,也不需要中断源提供中断号,而是立即进入系统预定的2号中断,自动执行NMI服务程序。因此,它常用于紧急情况的故障处理。142.INTR:

若CPU的INTR引脚上有一个‘高”有效信号输入,则产生INTR请求。可用指令CLI/STI来禁止/允许。在INTR被响应时,CPU发INTA信号(在最大方式下,此信号由8288发出),中断源要向CPU提供中断类别号,以便找到中断服务程序入口。中断向量表中08~0FH、70~77H号就是INTR中断。这种中断是外设产生的。

15

PC/XT使用1片8259A支持8级外部中断,对应的中断请求为IRQ0~IRQ7。对应中断类型号为08~0FH。其中0AH号(对应与IRQ2)中断被保留,用户可以使用。(见图)

PC/AT及兼容机,使用两片8259A,支持15级外部中断。它是在PC/XT基础上增加1个从片8259A,并把从片的中断请求线INT接到主片的IRQ2,实现两片级联,形成15级中断。因此,第二级中断IRQ2用户不能再使用。(见图)

为了保持与PC/XT中断程序的兼容性,在PC/AT及兼容机中,用IRQ9替代IRQ2。并对中断向量表作了相应调整和处理.16返回17二、软件中断

这类中断是在程序中使用中断指令INTnH而产生。指令的操作数就是中断号,而不由中断控制器提供。中断处理过程中,CPU也不发出中断响应信号。中断的发生由程序安排。1.ROM-BIOS中断基本的ROM-BIOS中断占用中断号10H~1FH,此外,还占用中断号05H及未定义自由软中断号为40H、41H和46H,这些中断的功能.包括对I/O设备的控制,提供对系统的实用服务程序和中断服务程序运行所需的参数等。18①I/O设备控制程序:这是ROM-BIOS系统核心,是控制I/O设备操作最底层的软件,可供高层软件调用。如:

INT10H视频显示1/O控制程序。②BI0S实用服务程序

这类中断服务程序提供实用服务。它们用于系统自举、查看系统配置和内存容量、获取时钟和实时钟、屏幕打印以及进出保护模式等方面。如:

INT12H内存容量检测程序19③BIOS特殊中断:供系统内部调用或由应用程序自行接管。

如:

INT1cH定时器报时中断程序。该程序由定时器中断08H调用,BIOS对该程序仅安排一条IRET指令,故允许用户利用此特点接管该中断,实现定时器报时功能。④BIOS专用参数中断

这类中断并未提供—个中断处理程序,而是指出一个地址入口,内含BIOS某些中断程序在运行中要调用的参数。如:

INT1DH视频显示方式参数。该参数由INT10H的AH=0子功能调用。

202.DOS中断DOS中断占用中断号20H~3FH。这些中断程序提供了DOS系统的主要功能。大致可归纳为以下5部分。⑴公开的DOS专用中断:供DOS内核代码专用,用户不能在程序中直接调用。

INT22H程序结束地址

INT23HCtrl-C出口地址

INT24H严重错误出口地址。⑵未公开的DOS专用中断:供DOS内核调用。未在资料中公开。如:INT29H字符输出处理程序。21⑶DOS可调用中断:有5个。可在程序中直接调用。如:

INT25H磁盘扇区读出。⑷系统功能调用中断:INT21H(包含00~6CH个子功能)。⑸DOS保留:供今后扩展之用。中断号为30H~3FH。如后来增加的INT33H(鼠标中断)

22三、处理器专用内部中断

这类中断由内部的突发事件引起。不是由外设申请,也不是由中断指令产生。应该属于不可屏蔽中断。但由于其中断处理过程与软件中断具有相同的特点,所以有时也被归入软件中断类。1.0号中断:除数为0中断2.1号中断:单步中断

(单步标志位TF=1时发生)3.3号中断:断点中断

(由指令码INT3H引起)4.4号中断:溢出中断

(在标志位OF=1时发生)23注意:

在运算过程中出现溢出标志OF为1后,CPU并非会自动转入溢出处理服务程序。因为,OF=1只是一个必要条件。在编程时,要想对某些运算操作进行溢出监控,则应在这些操作指令之后加一条“INTO”指令,并设计相应的溢出中断服务程序。因为,溢出标志位OF为零时.“INTO”指令不产生任何操作。24四、未定义的自由中断

在软中断(20H~FFH)中,除ROM-BIOS中断和DOS中断以外、其余的中断(40H~FFH)统称为未定义自由中断。这类中断因基本系统未指定其用途,故可由系统扩充或根据应用需要作出新的定义。其中又可划分为以下几部分:1.系统保留区(40H~5FH)目前,中断号40H、41H、46H已有定义,被ROM-BIOS占用,其余均保留为今后扩充用。2.用户保留区(60H~6FH),用户可根据需要占用这些中断号,以便增加新的功能。253.扩充外部硬中断区(70H~77H)。该区为扩充的8级外部硬中断号,它们分别对应中断级8~l5。(4)未使用区(78H~7FH)。

(5)BASlC使用区(80H~EFH)。

(6)内部使用区(F0H~FFH)。26五、硬中断与软件中断的比较1.硬中断的特点①由外部事件引起、有随机性、突发性②中断响应周期,CPU要发中断应答信号(NMI不发)③中断号由中断控制器提供(NMI则由系统指定为2H)④可屏蔽(NMI是不可屏蔽)2.软中断的特点①由中断指令产生无随机性和突发性②中断响应周期,CPU不需要发中断应答信号③中断号由指令直接给出④不可屏蔽

27六、中断处理过程

中断处理过程包含4个过程:中断请求,中断响应,中断服务和中断返回。28七、中断响应周期时序

当8259A收到多个外设的中断请求信号时,经过判优等处理后选中其中一个请求信号IRi,产生中断请求信号INT。CPU收到后,在当前一条指令执行完,且中断标志位IF=1时,CPU进入中断响应周期,它要通过总线控制器发出两个连续中断应答信号INTA来完成一个中断响应周期。29

从上图可见,一个中断响应周期完成以下两个工作:

(1)当总线控制器发出第1个INTA脉冲时.CPU输出有效的总线锁定信号LOCK,使总线在此期间处于封锁状态,防止其它处理机或DMA控制器占用总线。与此同时.8259A将判优后选中的最高优先级在ISR中的相应位置位,在IRR中的相应位清0。30

(2)当总线控制器发出第2个INTA脉冲时,总线锁定信号LOCK撤除,总线被解封,地址锁存允许信号ALE无效,此时允许数据线工作。8259A把中断类型号送上数据总线(注:由于PC/XT机使用8088CPU,系统的数据总线是8位,且与低8位地址线复用,那么,在总线周期中的第一时钟周期必须是ALE有效,由地址信号占用地址总线,在第二个时钟周期后才使ALE无效,此时低8位地址线才作为数据线使用)。于是CPU在T3周期的下降沿从数据读取中断号。315.3可编程中断控制器8259A一、8259A处理中断事务所作的工作

1.优先级排队管理

2.接受和扩充外设的中断请求

3.提供中断号

4.屏蔽和开放中断请求

32二、8259A的外部特性和内部结构

1.引脚(如图)

①D7~D0:数据总线、双向。小系统中可直接连CPU的数据总线。在较大系统中,需接总线驱动器。②

CS:片选信号、输入、低电平有效。③

RD:读信号、输入。④

WR:写信导、输入。⑤

CAS2~CASo:三根级联线,双向。主片输出,从片输入。⑥

INTA:中断响应信号,输入。⑦

IR7~IR0:外设的中断请求信号,输入。33⑧INT:8259A发出的中断请求信号,输出。⑨SP/EN

:用于主从设备的设定或缓冲器作用方向的设定两个方面。在非缓冲方式中用作输入线,指定8259A为主片(SP=1时)或是从片(SP=0时)。在缓冲方式中用作输出线,控制缓冲器的收/发方向。

342.8259A内部结构

35①中断请求寄存器(IRR)

该寄存器的D0~D7位分别对应于连接在IR0~IR7线上的外设所产生的中断请求,某线有请求则对应位置“1”。它具有锁存功能,其内容是否允许读出则由OCW3命令控制。

当某个请求被CPU响应并在第1个INTA到来时,其相应位被复位。

36②正在服务寄存器(ISR)

在中断响应之后,第一个INTA周期由优先权分析器(PR)把获准中断请求的中断级在相应的ISR中置位。上图可见,若IRR中的IR3获得中断请求允许,则ISR中相应的IS3位置位.表明IR3正在被服务。

ISR被用来存放正在被服务的所有中断级(包括中断嵌套的所有中断级,其内容的读出由OCW3命令提供允许控制。

37

中断结束之后,ISR中相应的位必须清0(复位)。这样,才能使以后出现的同级或低级的中断请求能被响应。

具体的复位方法有自动结束和非自动中断结束方式。前者由第二个INTA的后沿将ISR的相应位复位,后者要用OCW2的中断结束命令EOI来执行。38③中断屏蔽寄存器(IMR)

对IRR起屏蔽作用。寄存器8位(D0~D7)对应8级中断屏蔽。要屏蔽某级中断,则对其相应位置1,禁止相应IRi提出中断请求;反之则写0,不屏蔽,即允许相应IRi提出中断请求。屏蔽操作由屏蔽命令OCW1执行。

39④优先权分析器(PR)

在各IRi输入端出现的中断请求都被送到PR。PR从这些中断请求中选出最高的优先级,并让它与“正在服务中的中断”进行优先级比较,若该中断请求的优先级高,则PR就使INT线变为高电平,向CPU申请中断,并且在中断被响应时将它记入ISR的对应位中;否则PR不为其提出申请。

该分析器可实现中断判优及屏蔽的功能。如图所示。

40返回OCW1

ⅡⅢ41由图可知,中断优先级分析器的工作原理如下:

首先,由8个“与门”逻辑选出所有参加中断优先级排队的中断请求级。即8位IRR与8位IMR相应各位分别送入“与门”输入端,只有当IRR位置“1”(有中断请求)和IMR位置“0”(开放中断请求)同时成立时,相应“与门”输出高电平参加编码。其次,优先级编码器对参加排队的那些中断优先级进行编码,并从中选出最高优先级作为比较器的输入(A2、A1、A0)。42

最后,把来自ISR的当前正在服务的优先级(B2、B1、B0)与当前请求的最高优先级(A2A1A0)—起送入比较器进行比较,

当A>B成立时,比较器输出有效高电平,打开与门1,当前的可屏蔽中断请求的高电平就经由与门1和或门输出,形成8259A向CPU提出的中断请求信号INT。

由上图还可看出:

Ⅰ.一个正被服务的中断禁止同级或低级中断请求。开放高一级中断请求。这同时也使我们进一步能理解:中断结束之后,ISR中相应的位必须清0(复位)。这样,才能使以后出现的同级或低级的中断请求能被响应。

43

Ⅱ.在第二个INTA信号到来时,8259把中断类型号送上数据总线供CPU读取。

Ⅲ.当CPU并未执行任何中断服务程序时,优先级失效信号为高电平,此时,只要有任意一个中断请求,都将通过与门2和或门向CPU发出INT信号。

44⑤级联缓冲器/比较器

用于多片级联及数据缓冲方式。级联方式中,主片和从片之间将对应的三个引脚CAS0~2相互联接成为专用总线。用CAS0~2对从片进行寻址。在第一个INTA到来时,若被响应的是从片的中断请求,则主片通过

CAS0~2把中断申请被响应的从片的标志号ID送到从片,通知其中断被响应。从片将此标志号与自身标志号比较,若相符,则在下一个INTA脉冲来时将中断类型号送上数据总线。否则在第二个INTA信号到来时,主片8259把中断类型号送上数据总线供CPU读取。45⑥读写控制逻辑和数据总线缓冲器

实现CPU对8259A的读写。当CPU执行IN指令时,RD信号与A0配合,将8259A中内部寄存器的内容经数据缓冲器读入CPU;在CPU执行OUT指令时,WR信号与A0配合,由CPU将初始化命令字(ICW)和操作命令字(OCW)通过数据缓冲器写入8259A中各指定的寄存器。

8259A中只有2个端口,所以,只需要地址总线的A0位即可区分。而CS则由其余的高位地址线经地址译码产生。46CS,WR,RD,A0组合功能及8259A分别在PC机和单板机TP86A上的I/O端口地址如下表所示:

⑦控制逻辑它是8259A的内部控制电路,用于向CPU发INT信号和接收CPU发来的信号,协调8259内部各功能部件之间的联系,以完成全部中断处理功能。47三、8259A的工作方式1.引入中断请求(中断触发)的方式①边沿触发方式:用上升沿(即正跳变)向8259请求中断。当在IRi输入端检测到由低到高的上跳变(该跳变会使IRR相应位置1),且高电平保持到第一个INTA到来之后,8259A就认为有中断请求。该高电平的持续存在不会引起再次的中断。

48②电平触发方式:以高电平请求中断。

在IRi输入线上检测到一个高电平(该高电平出现时IRR相应位置1),并能维持到第一INTA个脉冲到来之后,就认为有外设提出中断请求。该高电平的持续存在可重复产生中断,若只要求产生一次中断,则必须在CPU发出EOI命令之前或CPU再次开放中断之前,使已响应的中断请求线IRi置为低电平,否则将出现第2次中断。

两种触发方式中如果在到来之前IRi变“低”,则巳置位的IRR位又被复位,相应的ISR位也不能建立。

49③中断查询方式:外设通过8259A申请中断,但8259A不使用INT信号向CPU申请中断,而由CPU用软件通过查询来确定中断源。

502.连接系统总线的方式①缓冲器方式:指8259A与带总线缓冲器的系统数据总线连接。此时SP/EN用于启动缓冲器。通常用于大系统。②非缓冲器方式:指在小系统中,不需要总线缓冲器,8259A直接与数据总线连接。此时SP/EN用于指定主从片。

513.屏蔽中断源的方式

①通常屏蔽方式:利用操作命令字OCW1,对IMR中各位进行置1或清0,则实现对相应的中断源的中断请求的屏蔽或开放。②特殊屏蔽方式:通过设置OCW3的D6D5=11来允许在中断服务过程中响应除正在服务的中断级之外的其它所有等级的中断。主要意义在于能在中断服务过程中响应低优先级中断请求。

524.优先级排队方式①全嵌套方式:按优先级0高至7低的顺序,只允许高级别中断嵌套。这是8259A的默认嵌套方式。②特殊全嵌套方式:允许同级别的中断嵌套。用于多片级联。③优先级自动轮换:初始化时优先级0高至7低,但某级中断被响应后,其级别则降为最低。其下一级的中断则成为最高级。用于有多个中断源级别相同的情况。优先级初始情况:

IR0被响应后优先级的变化:

53④优先级指定轮换:由程序指定一个初始的最低优先级,然后再按顺序自动轮换。若指定3级为最低级,4级则成为最高级。

545.结束中断的方式⑴自动中断结束方式:在本方式下,由第2个INTA脉冲后沿清除由第一个INTA脉冲在ISR中置1的位。注意,此时尚未完成中断服务,所以,此方式只能用于不会出现中断嵌套的系统。⑵非自动中断结束方式:使用本方式,必须在中断服务程序的末尾、中断返回指令之前,放置中断结束命令(EOI)

,以清除ISR中被置“1”的位。中断结束命令有2种形式:①不指定的中断结束命令:只需设置OCW2=0010000B。②指定的中断结束命令:在操作命令字中指定要结束的中断请求线IRi的编号。即设置OCW2=00100L2L1L0,后三位用于指定编号。上述清除ISR中的置1位的目的在于保证本中断服务结束后,其它优先级较低的中断源的中断请求能被响应。

55四、8259A的中断操作功能及其命令⑴初始化命令字1.中断请求触发方式的设定及8259A芯片数目的选择(ICW1)8259A有四条初始化命令字:ICW1~ICW4,它们按照一定的顺序送入,设置8259A的初始状态。

8259A有两种检测外设中断请求的方式。①电平触发方式②边沿触发方式触发方式由ICW1的D3位来选择,芯片数目由D1位决定。

ICW1的格式如下:

5657CPU向8259A发送初始化命令字ICW1的标识是:A0=0和D4=1。前者是地址信息,后者是ICW1的特征位。它启动8259A的初始化过程,还产生若干隐含的动作:清除IMR,设置完全嵌套方式的中断优先级排队,设置读IRR方式。ICW2是8259A为CPU准备的一个8位的中断类型号。但要注意,在初始化编程时用户通过ICW2写入8259A的仅仅只是其中的高5位

(D7~D3)。而低3位(D2~D0)则由8259A在第一个INTA到来时,自动将被响应的中断请求线IRi的优先级编码(3位)写入,共同组成一个提供给CPU的中断号。可见同一片中的各中断号的高5位都是相同的。2.中断类型号的设置(ICW2)58ICW2的格式如下:593.中断级联方式设置(ICW3)①级联的结构形式在级联方式时.中断控制系统由一片8259A作为主片,若干其它8259A作为从片组成。下图所示系统中包括了一个主片和两个从片,共提供了22个中断等级。

60

当ICW1中的SNGL写入0时,表示多片8259A级联,此时需要分别对主片和从片初始化。

ICW3的主要任务:Ⅰ.主片ICW3指定主片的哪个中断输入引脚(IRi)接从片;Ⅱ.从片ICW3指定从片的标志码。从片的中断输出信号(INT)与主片的哪个中断输入引脚(IRi)相接,该IRi引脚的编码就是从片标志码。

主、从片ICW3的格式不同。主片的ICW3中某一位为1时,表示该位对应的IRi端接一个从片。而从片的低3位则是标识码,高5位无效。6162②级联方式下从片中断申请及响应的过程假定一个从片的若干个IRi输入端接收到中断申请:Ⅰ.从片内中断判优。根据判优结果由INT端(高电平有效)向主片提出中断申请。Ⅱ.主片内中断判优。主片接到申请(也可能有多个从片同时提出申请)后,也要进行判优,并根据判优结果由主片INT端(高电平有效)向CPU提出中断请求。Ⅲ.在CPU响应中断后,第一个INTA脉冲使所有的8259A得到通知:中断申请已被允许。与此同时,主片8259A把申请被响应的从片的ID码送上CAS0~2总线,通知让该从片在下一个INTA到来时,把中断号送上数据总线,这样就完成了中断响应。63

在中断响应时,由于级联的主片和从片分别将对应的ISR位置位。所以对非自动EOI方式,在中断服务完毕后必须发出两个EOI命令,一个给主片,一个给从片。644.中断命令字ICW4D4(SFNM)=1:设置特定完全嵌套方式。这种方式使8259A能响应与正在服务的中断同级或高级别的中断请求。级联方式下的主片必须使用这种方式。

在级联方式下,有一点要特别注意,那就是主片ISR不能区别来自同一从片的中断嵌套。因此,来自从片的中断服务程序结束后,必须先读该从片的ISR,只有它为全0时才能向主片发送EOI命令。否则将会使从片的其它中断得不到服务。

65

D4=0:设置一般的完全嵌套方式。

D3(BUF):指示8259A是否工作在缓冲方式以决定SP/EN的功能。

0:非缓冲方式,SP/EN用作主/从片选择的输入控制信号。

1:缓冲方式,SP/EN用作允许缓冲器发送/接收的输出控制信号。

D2(M/S):在D3=1时用作主从片选择。

1:表示主片,0:表示从片。

当D3=0时,D2(M/S)无效。例:

D3D2(BUF,M/S)=11:8259A用作缓冲方式下的主片。

D3D2(BUF,M/S)=10:8259A用作缓冲方式下的从片。

66缓冲方式级联原理图如下图所示:

67

8259A的中断结束方式有两种:自动结束和非自动结束(正常结束)。

D1=1:设置中断自动结束方式。在中断服务程序中不需要写入中断结束命令(EOI),它通常用于非嵌套中断系统。

D1=0:设置非自动结束方式。要求在中断服务程序中写入中断结束命令(EOI)

D0=1:8259A用于16位以上机。

D0=0:用于8位机。

6869⑵操作命令1.中断屏蔽操作命令字(OCW1)

用于向IMR写入对中断请求IR的屏蔽信息,其格式如图:其中,Mi与IRi相应。

可见,在程序中可以按需要对一个和多个中断请求进行屏蔽或开放。但要注意,在某中断请求IRi被屏蔽期间,IRR中的相应位i仍能接受该中断请求的触发而置位。只是,在被屏蔽期间,该中断请求不能被响应。一旦在程序中撤销了对它的屏蔽,此时如果该中断请求IRi仍然存在(高电平),则它将被响应。(见图)

70此外,通过与OCW3配合使用,可以对较低级别的中断请求实现嵌套(即特定屏蔽方式)。

712.操作命令字OCW2D0~D2位:L0~L2是用来指定中断等级(0~7)。以便对指定的ISR位复位或从指定的优先级开始轮换。与D6位配合使用。D5位:EOI=1:表示本OCW2是中断结束命令。(此时就配合有ICW4的AEOI=0)

EOI=0:表示本OCW2不是中断结束命令,8259采用的是自动中断结束方式。(与ICW4的AEOI=1配合)72D6位:SL用来设置是否指定中断级。

SL=1:需要指定,并用L0~L2位来指定中断等级。

SL=0:不需要指定,应使L0~L2=000D7位:

R=1:采用优先权轮换,并且按照SL,EOI及L2~L0各位的组态来执行优先级指定轮换;

R=0:不采用优先权轮换,即优先权固定。

73OCW2具有2个功能:

⑴构成中断结束命令。以执行非自动中断结束方式的操作。

在ICW4中设置了AEOI=0时,要使用OCW2来执行非自动结束方式的操作。包含:①不指定的EOI方式(SL=0):复位对象是ISR的当前置1位中的最高优先级位。

此方式用于完全嵌套方式下,由CPU利用程序发送结束命令(EOI)给8259A,使ISR中优先级最高的置1位清0,从而结束该位对应的中断。也就是结束最高级别的中断服务。

74②指定的EOI方式(SL=1):复位指定的ISR位。

本方式用于8259不工作于完全嵌套的方式。因为此时正在服务的中断的级别不一定具有最高的优先级。本方式是在操作命令字中指定要结束的中断等级码(由L2~L0给出该码)。即指定ISR中与该中断等级码相应的需要复位的位。

本命令可用于任何优先级管理方式。

75⑵

中断排队方式的操作①优先权固定方式(R=0):即为完全嵌套方式。②优先权轮换方式(R=1):优先级顺序不固定。刚服务完的中断的优先级最低。它的下一个等级成为最高优先级。

Ⅰ.优先级指定轮换(SL=1):从指定的优先级开始轮换。

Ⅱ.优先级自动轮换(SL=0):从IR0开始轮换。注:

“指定轮换”必配有L2~L0=指定的最低优先级。76773.操作命令字OCW3

D0:用于选读ISR或IRR。

RIS=1:读ISR;

R1S=0:读IRR。

RIS的状态仅在RR位为1时有效。

IMR的读出不必先发指定命令,只要读奇地址端口即可(见208)。

78D1:读寄存器允许位RR=1:允许CPU按RIS位的设置读寄存器,选定后直到再次选定以前寄存器不变;RR=0:不允许读寄存器。

79D2:P用于发送查询命令。

P=1:通知8259A,CPU将执行一条读查询字的指令(A0=0),并且同时使读其它寄存器命令无效,CPU每读一次查询字之前都要发送该命令;

P=0:不执行读查询字的指令。D5:SMM用于设置特定屏蔽方式。

SMM=1:设置特定屏蔽方式

SMM=0:撤销特定屏蔽方式。

D6:ESMM为允许特定屏蔽方式位

ESMM=0:SMM位无效

ESMM=1:SMM位有效

80①查询中断方式的操作

8259A提供了一条查询命令供CPU访问8259A的查询字,以支持查询中断。

在有中断请求的情况下,CPU根据查询字提供的申请服务的最高优先级编码和程序中预先设计好的算法来获取中断向量,转入中断服务程序。查询字格式:81读取查询字的操作方法顺序如下:例:CLIMOVAL,0CHMOVDX,20HOUTDX,ALINAL,DX

STIⅠ.CPU关中断(CLI)Ⅱ.发出查询命令(使OCW3中的P=1即可)

Ⅲ.紧接着再发一个读查询字的IN指令。8259A把它作为CPU对它的中断响应,如果此时有中断请求,则以最高等级的中断请求为依据,8259A将ISR的相应位置1,将特定的“查询字”送数据总线给CPU。Ⅳ.CPU开中断(STI)

82②读状态操作(指读IRR、ISR、IMR的操作)要先选后读。即先发出读状态操作命令OCW3(即RR=1,RIS=0/1),后发IN指令读之即可。若想改变所读寄存器,可重发一次OCW3(使RR=1,RIS的值与原来相反即可)。

83③特定屏蔽方式的操作

允许在中断服务过程中响应除正在服务的中断级之外的其它所有等级的中断。主要是用于在完全嵌套方式下实现对低等级中断请求的嵌套。

基本作法:

Ⅰ.先关中断(标志IF=0),

Ⅱ.再发OCW1命令把正在服务的那些中断都屏蔽起来,

Ⅲ.然后发特定屏蔽方式命令OCW3(即:使ESMM=1,SMM=1)实现特定屏蔽方式,

Ⅳ.最后开中断(IF=1)即可。若要恢复原方式,可作相反处理,先关中断,发复位特定屏蔽方式命令(即:ESMM=1,SMM=0),解除被屏蔽的ISR位。

84855.48259A在微机系统中的应用一、8259A编程命令的使用注意,PC微机由系统软件执行8259A的初始化编程和中断向量的装入,不允许用户自己去做。用户只能对没有配置完善OS的单板机去做。因此,在PC机上开发中断处理程序,不能用ICW1~ICW4去进行初始化,只需使用OCW1、OCW2进行中断屏蔽/开放和发EOI命令。而OCW3则很少使用。861.初始化命令字(ICW)

初始化命令一定要按规定的顺序写入,主片、从片要分别进行初始化。初始化编程的主要任务是:·设定中断请求信号的有效触发形式。·设定8259A是单片还是多片级联方式·设置中断类型号·设置优先排队规则。·设定中断结束时的操作原则。87初始化命令的写入流程:

882.操作命令字(OCW)

对8259A完成初始化后,若用户还需要设定某些操作方式,则可以通过CPU发操作命令OCW对中断控制器进行动态控制。

8259A的OCW与ICW不同,OCW不需要按顺序发送,其位置也可按需要而定。

89返回903.8259A的初始化编程

[例题6-3]设8086系统中,8259A的端口地址为208H、209H,中断请求信号采用电平触发方式,单片8259A,中断类型号高5位为00010,中断源接在IR3中,不用特殊全嵌套方式,用非自动结束方式,非缓冲方式。编写初始化程序。解:MOVDX,208H;8259A偶地址MOVAL,00011011B;设置ICW1控制字,要写ICW4、单片、电平触发OUT DX,ALMOV AL,00010011B;设置ICW2中断类型号,中断类型号高5位为00010,中断源接在IR3中MOV DX,209H;8259A奇地址OUT DX,ALMOV AL,00000001B;控制字ICW4,不用特殊全嵌套方式,用非自动结束方式,非缓冲方式OUT DX,AL[例题6-4]设8086系统中,8259A的端口地址为208H、209H,中断请求信号采用边沿触发方式,单片8259A,中断类型号为08H,用普通中断结束命令,固定优先级,编写初始化程序。解:MOV

温馨提示

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

评论

0/150

提交评论