版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、125.1 中断的基本概念一、中断:指CPU在正常运行程序时,由于内部外部事件或由程序的预先安排引起CPU中断正在运行的程序,而转到为内部外部事件或为预先安排的事件服务的程序中去。服务完毕,再返回去继续执行被暂时中断的程序。例: PC机的键盘管理便是使用中断功能的较好例子. 使用中断指令 处理机内部的原因如除数为0、奇偶校验错(PC机采用的是奇校验) 等,都可以引起中断。 3二、中断源与中断识别1. 中断源: 发出中断请求的外设或引起中断的内部原因。 包含:外设中断(外设请求与CPU交换数据) 指令中断(INT n) 程序性中断(溢出、除数为0等) 硬件故障中断(奇偶错、电源掉电)。42. 中
2、断识别: 指CPU根据一定的措施查找中断源,形成相应的中断服务程序的入口地址。 识别方法: 向量中断:由中断向量来提供中断服务程序的入口地址。 查询中断:采用软件或硬件查询技术来确定发出中断请求的中断源。 5三、中断向量与中断向量表1. 中断向量:中断例行程序的入口地址。 80X86在实模式下有中断向量256个,每个占4B(低2字节为偏移地址,高2字节为段基址)。2. 中断号:系统分配给各中断源的代号。 取值范围为00FFH。 系统提供的中断号见书P80页或有关资料。3. 中断向量表:中断向量按类型号由小到大顺次存放在地址区间:00000H003FFH。这就构成了中断向量表。 (见下表)64.
3、 中断向量指针(或中断向量入口地址,它是中断向量在中断向量表中的首偏移地址)=中断类型号*4 7四、中断向量的装入与修改 我们可以用自己设计的中断程序来代替系统提供的某个中断处理程序,然后在程序中以中断的形式调用它。这就要用新的中断处理程序的段址和段偏移来取代原来的中断向量。 89五、中断优先级排队方式 由于CPU一次只能响应并处理一个中断,当同时出现多个中断请求时,必须要排队处理。 常用的有2种排队方法: 按优先级排队:预先指定各中断源的优先级别。高的先响应。 循环轮流排队:不分级别高低,CPU轮流响应各中断请求。10六、中断嵌套 正在执行的中断处理程序,又被其他中断源中断,这种情况叫做中断
4、嵌套。 一个正在执行的中断处理程序,能被优先级高于它的中断源中断。 在开中断(IF=1)的情况下,对可屏蔽中断来说,如有必要,甚至可以在中断处理程序中采用特定的方法使CPU也能响应同级或低级中断。中断嵌套的深度受堆栈容量的限制。11一、硬中断 由外设提出中断申请,CPU响应后产生的中断。 PC机有一片中断控制器8259A,286以上有2片8259A。它用于接收外设的中断请求,并负责向CPU发出中断申请。12 硬中断的中断号和优先级在系统设计时就已给定。中断号小则优先级高。 286以上系统的硬中断源列表 131. NMI: CPU的NMI引脚上出现个上升沿触发信号时,产生2号中断(NMI)请求。
5、 该中断不会被指令CLI所禁止,在硬中断中它具有最高的优先级。只要出现NMI请求,CPU立即响应。 在响应该中断时 ,CPU既不给出中断应答信号,也不需要中断源提供中断号,而是立即进入系统预定的2号中断,自动执行NMI服务程序。因此,它常用于紧急情况的故障处理。142. INTR: 若CPU的INTR引脚上有一个高”有效信号输入,则产生INTR请求。 可用指令CLI/STI来禁止/允许。 在INTR被响应时,CPU发INTA信号(在最大方式下,此信号由8288发出) , 中断源要向CPU提供中断类别号,以便找到中断服务程序入口。 中断向量表中080FH、7077H号就是INTR中断。这种中断是
6、外设产生的。 15 PC/XT使用1片8259A支持8级外部中断,对应的中断请求为IRQ0IRQ7。对应中断类型号为080FH。其中0AH号(对应与IRQ2)中断被保留,用户可以使用。(见图) PCAT及兼容机,使用两片8259A,支持15级外部中断。它是在PCXT基础上增加1个从片8259A,并把从片的中断请求线INT接到主片的IRQ2,实现两片级联,形成15级中断。因此,第二级中断IRQ2用户不能再使用。 (见图) 为了保持与PCXT中断程序的兼容性, 在PCAT及兼容机中,用IRQ9替代IRQ2。并对中断向量表作了相应调整和处理16返回17二、软件中断 这类中断是在程序中使用中断指令IN
7、T nH而产生。指令的操作数就是中断号,而不由中断控制器提供。中断处理过程中,CPU也不发出中断响应信号。中断的发生由程序安排。1. ROM-BIOS中断 基本的ROM-BIOS中断占用中断号10H1FH,此外,还占用中断号05H及未定义自由软中断号为40H、41H和46H,这些中断的功能包括对IO设备的控制,提供对系统的实用服务程序和中断服务程序运行所需的参数等。18IO设备控制程序:这是ROM-BIOS系统核心,是控制IO设备操作最底层的软件,可供高层软件调用。如: INT 10H 视频显示1O控制程序。BI0S实用服务程序 这类中断服务程序提供实用服务。它们用于系统自举、查看系统配置和内
8、存容量、获取时钟和实时钟、屏幕打印以及进出保护模式等方面。如: INT 12H 内存容量检测程序19BIOS特殊中断:供系统内部调用或由应用程序自行接管。 如: INT 1cH 定时器报时中断程序。该程序由定时器中断08H调用,BIOS对该程序仅安排一条IRET指令,故允许用户利用此特点接管该中断,实现定时器报时功能。BIOS专用参数中断 这类中断并未提供个中断处理程序,而是指出一个地址入口,内含BIOS某些中断程序在运行中要调用的参数。如: INT 1DH 视频显示方式参数。该参数由INT 10H的AH0子功能调用。202. DOS中断DOS中断占用中断号20H3FH。这些中断程序提供了DO
9、S系统的主要功能。大致可归纳为以下5部分。公开的DOS专用中断:供DOS内核代码专用,用户不能在程序中直接调用。 INT 22H 程序结束地址 INT 23H Ctrl-C出口地址 INT 24H 严重错误出口地址。未公开的DOS专用中断:供DOS内核调用。未在资料中公开。如:INT 29H 字符输出处理程序。21 DOS可调用中断:有5个。可在程序中直接调用。如: INT 25H 磁盘扇区读出。系统功能调用中断:INT 21H (包含006CH个子功能)。 DOS保留:供今后扩展之用。中断号为30H3FH。如后来增加的INT 33H(鼠标中断) 22三、处理器专用内部中断 这类中断由内部的突
10、发事件引起。不是由外设申请,也不是由中断指令产生。应该属于不可屏蔽中断。但由于其中断处理过程与软件中断具有相同的特点,所以有时也被归入软件中断类。1. 0号中断:除数为0中断2. 1号中断:单步中断 (单步标志位TF=1时发生)3. 3号中断:断点中断 (由指令码INT 3H引起)4. 4号中断:溢出中断 (在标志位OF=1时发生)23注意: 在运算过程中出现溢出标志OF为1后,CPU并非会自动转入溢出处理服务程序。因为,OF1只是一个必要条件。在编程时,要想对某些运算操作进行溢出监控,则应在这些操作指令之后加一条“INTO”指令,并设计相应的溢出中断服务程序。因为,溢出标志位OF为零时“IN
11、TO”指令不产生任何操作。24四、未定义的自由中断 在软中断(20HFFH)中,除ROM-BIOS中断和DOS中断以外、其余的中断(40HFFH)统称为未定义自由中断。这类中断因基本系统未指定其用途,故可由系统扩充或根据应用需要作出新的定义。其中又可划分为以下几部分:1. 系统保留区(40H5FH)目前,中断号40H、41H、46H已有定义,被ROM-BIOS占用,其余均保留为今后扩充用。2. 用户保留区(60H6FH),用户可根据需要占用这些中断号,以便增加新的功能。253. 扩充外部硬中断区(70H77H)。该区为扩充的8级外部硬中断号,它们分别对应中断级8l5。 (4)未使用区(78H7
12、FH)。 (5)BASlC使用区(80HEFH)。 (6)内部使用区(F0HFFH)。26五、硬中断与软件中断的比较1. 硬中断的特点 由外部事件引起、有随机性、突发性 中断响应周期,CPU要发中断应答信号(NMI不发) 中断号由中断控制器提供(NMI则由系统指定为2H) 可屏蔽(NMI是不可屏蔽)2. 软中断的特点 由中断指令产生无随机性和突发性 中断响应周期,CPU不需要发中断应答信号 中断号由指令直接给出 不可屏蔽 27六、中断处理过程 中断处理过程包含4个过程:中断请求,中断响应,中断服务和中断返回。28七、中断响应周期时序 当8259A收到多个外设的中断请求信号时,经过判优等处理后选
13、中其中一个请求信号IRi,产生中断请求信号INT。CPU收到后,在当前一条指令执行完,且中断标志位IF1时,CPU进入中断响应周期,它要通过总线控制器发出两个连续中断应答信号INTA来完成一个中断响应周期。29 从上图可见,一个中断响应周期完成以下两个工作: (1)当总线控制器发出第1个INTA脉冲时CPU输出有效的总线锁定信号LOCK,使总线在此期间处于封锁状态,防止其它处理机或DMA控制器占用总线。与此同时8259A将判优后选中的最高优先级在ISR中的相应位置位,在IRR中的相应位清0。30 (2)当总线控制器发出第2个INTA脉冲时,总线锁定信号LOCK撤除,总线被解封,地址锁存允许信号
14、ALE无效,此时允许数据线工作。8259A把中断类型号送上数据总线(注:由于PC/XT机使用8088CPU,系统的数据总线是8位,且与低8位地址线复用,那么,在总线周期中的第一时钟周期必须是ALE有效,由地址信号占用地址总线,在第二个时钟周期后才使ALE无效,此时低8位地址线才作为数据线使用)。于是CPU在T3周期的下降沿从数据读取中断号。315.3 可编程中断控制器8259A一、8259A处理中断事务所作的工作 1. 优先级排队管理 2. 接受和扩充外设的中断请求 3. 提供中断号 4. 屏蔽和开放中断请求 32二、8259A的外部特性和内部结构 1. 引脚(如图) D7D0:数据总线、双向
15、。小系统中可直接连CPU的数据总线。在较大系统中,需接总线驱动器。 CS:片选信号、输入、低电平有效。 RD:读信号、输入。 WR:写信导、输入。 CAS2CASo:三根级联线,双向。主片输出,从片输入。 INTA:中断响应信号,输入。 IR7IR0:外设的中断请求信号,输入。33 INT:8259A发出的中断请求信号,输出。 SP/ /EN :用于主从设备的设定或缓冲器作用方向的设定两个方面。在非缓冲方式中用作输入线,指定8259A为主片(SP=1时)或是从片(SP=0时)。在缓冲方式中用作输出线,控制缓冲器的收/发方向。 3435中断请求寄存器(IRR) 该寄存器的D0D7位分别对应于连接
16、在IR0IR7线上的外设所产生的中断请求,某线有请求则对应位置“1”。它具有锁存功能,其内容是否允许读出则由OCW3命令控制。 当某个请求被CPU响应并在第1个INTA到来时,其相应位被复位。 36正在服务寄存器(ISR) 在中断响应之后,第一个INTA周期由优先权分析器(PR)把获准中断请求的中断级在相应的ISR中置位。 上图可见,若IRR中的IR3获得中断请求允许,则ISR中相应的IS3位置位表明IR3正在被服务。 ISR被用来存放正在被服务的所有中断级(包括中断嵌套的所有中断级,其内容的读出由OCW3命令提供允许控制。 37 中断结束之后,ISR中相应的位必须清0(复位)。这样,才能使以
17、后出现的同级或低级的中断请求能被响应。 具体的复位方法有自动结束和非自动中断结束方式。前者由第二个INTA的后沿将ISR的相应位复位,后者要用OCW2的中断结束命令EOI来执行。38中断屏蔽寄存器(IMR) 对IRR起屏蔽作用。寄存器8位(D0D7)对应8级中断屏蔽。 要屏蔽某级中断,则对其相应位置1,禁止相应IRi提出中断请求;反之则写0,不屏蔽,即允许相应IRi提出中断请求。屏蔽操作由屏蔽命令OCW1执行。 39优先权分析器(PR) 在各IRi输入端出现的中断请求都被送到PR。PR从这些中断请求中选出最高的优先级,并让它与“正在服务中的中断”进行优先级比较,若该中断请求的优先级高,则PR就
18、使INT线变为高电平,向CPU申请中断,并且在中断被响应时将它记入ISR的对应位中;否则PR不为其提出申请。 该分析器可实现中断判优及屏蔽的功能。如图所示。 40返回OCW1 41由图可知,中断优先级分析器的工作原理如下: 首先,由8个“与门”逻辑选出所有参加中断优先级排队的中断请求级。即8位IRR与8位IMR相应各位分别送入“与门”输入端,只有当IRR位置“1”(有中断请求)和IMR位置“0”(开放中断请求)同时成立时,相应“与门”输出高电平参加编码。其次,优先级编码器对参加排队的那些中断优先级进行编码,并从中选出最高优先级作为比较器的输入(A2、A1、A0)。42 最后,把来自ISR的当前
19、正在服务的优先级(B2、B1、B0)与当前请求的最高优先级(A2A1A0)起送入比较器进行比较, 当AB成立时,比较器输出有效高电平,打开与门1,当前的可屏蔽中断请求的高电平就经由与门1和或门输出,形成8259A向CPU提出的中断请求信号INT。 由上图还可看出: . 一个正被服务的中断禁止同级或低级中断请求。开放高一级中断请求。这同时也使我们进一步能理解:中断结束之后,ISR中相应的位必须清0(复位)。这样,才能使以后出现的同级或低级的中断请求能被响应。 43 . 在第二个INTA信号到来时,8259把中断类型号送上数据总线供CPU读取。 . 当CPU并未执行任何中断服务程序时,优先级失效信
20、号为高电平,此时,只要有任意一个中断请求,都将通过与门2和或门向CPU发出INT信号。44级联缓冲器比较器 用于多片级联及数据缓冲方式。 级联方式中,主片和从片之间将对应的三个引脚CAS02相互联接成为专用总线。用CAS02对从片进行寻址。 在第一个INTA到来时,若被响应的是从片的中断请求,则主片通过 CAS02把中断申请被响应的从片的标志号ID送到从片,通知其中断被响应。从片将此标志号与自身标志号比较,若相符,则在下一个INTA脉冲来时将中断类型号送上数据总线。否则在第二个INTA信号到来时,主片8259把中断类型号送上数据总线供CPU读取。45读写控制逻辑和数据总线缓冲器 实现CPU对8
21、259A的读写。 当CPU执行IN指令时,RD信号与A0配合,将8259A中内部寄存器的内容经数据缓冲器读入CPU; 在CPU执行OUT指令时,WR信号与A0配合,由CPU将初始化命令字(ICW)和操作命令字(OCW)通过数据缓冲器写入8259A中各指定的寄存器。 8259A中只有2个端口,所以,只需要地址总线的A0位即可区分。而CS则由其余的高位地址线经地址译码产生。46 CS,WR,RD,A0组合功能及8259A分别在PC机和单板机TP86A上的IO端口地址如下表所示: 控制逻辑 它是8259A的内部控制电路,用于向CPU发INT信号和接收CPU发来的信号,协调8259内部各功能部件之间的
22、联系,以完成全部中断处理功能。47三、8259A的工作方式1. 引入中断请求(中断触发)的方式 边沿触发方式:用上升沿(即正跳变)向8259请求中断。当在IRi输入端检测到由低到高的上跳变(该跳变会使IRR相应位置1),且高电平保持到第一个INTA到来之后,8259A就认为有中断请求。该高电平的持续存在不会引起再次的中断。 48电平触发方式:以高电平请求中断。 在IRi输入线上检测到一个高电平(该高电平出现时IRR相应位置1),并能维持到第一INTA个脉冲到来之后,就认为有外设提出中断请求。 该高电平的持续存在可重复产生中断,若只要求产生一次中断,则必须在CPU发出EOI命令之前或CPU再次开
23、放中断之前,使已响应的中断请求线IRi置为低电平,否则将出现第2次中断。 两种触发方式中如果在到来之前IRi变“低”,则巳置位的IRR位又被复位,相应的ISR位也不能建立。 49 中断查询方式:外设通过8259A申请中断,但8259A不使用INT信号向CPU申请中断,而由CPU用软件通过查询来确定中断源。 502. 连接系统总线的方式 缓冲器方式:指8259A与带总线缓冲器的系统数据总线连接。此时SP/ /EN用于启动缓冲器。通常用于大系统。 非缓冲器方式:指在小系统中,不需要总线缓冲器,8259A直接与数据总线连接。此时SP/ /EN用于指定主从片。 513. 屏蔽中断源的方式 通常屏蔽方式
24、:利用操作命令字OCW1,对IMR中各位进行置1或清0,则实现对相应的中断源的中断请求的屏蔽或开放。 特殊屏蔽方式:通过设置OCW3的D6D5=11来允许在中断服务过程中响应除正在服务的中断级之外的其它所有等级的中断。主要意义在于能在中断服务过程中响应低优先级中断请求。 524. 优先级排队方式 全嵌套方式:按优先级0高至7低的顺序,只允许高级别中断嵌套。这是8259A的默认嵌套方式。 特殊全嵌套方式:允许同级别的中断嵌套。用于多片级联。 优先级自动轮换:初始化时优先级0高至7低,但某级中断被响应后,其级别则降为最低。其下一级的中断则成为最高级。用于有多个中断源级别相同的情况。优先级初始情况:
25、 IR0被响应后优先级的变化: 53 优先级指定轮换:由程序指定一个初始的最低优先级,然后再按顺序自动轮换。若指定3级为最低级,4级则成为最高级。 545. 结束中断的方式 自动中断结束方式:在本方式下,由第2个INTA脉冲后沿清除由第一个INTA脉冲在ISR中置1的位。注意,此时尚未完成中断服务,所以,此方式只能用于不会出现中断嵌套的系统。 非自动中断结束方式:使用本方式,必须在中断服务程序的末尾、中断返回指令之前,放置中断结束命令(EOI) ,以清除ISR中被置“1”的位。 中断结束命令有2种形式: 不指定的中断结束命令: 只需设置OCW2=0010000B。 指定的中断结束命令:在操作命
26、令字中指定要结束的中断请求线IRi的编号。即设置 OCW2=00100L2L1L0,后三位用于指定编号。 上述清除ISR中的置1位的目的在于保证本中断服务结束后,其它优先级较低的中断源的中断请求能被响应。 55四、8259A的中断操作功能及其命令 初始化命令字1. 中断请求触发方式的设定及8259A芯片数目的选择(ICW1) 8259A有四条初始化命令字:ICW1ICW4,它们按照一定的顺序送入,设置8259A的初始状态。 8259A有两种检测外设中断请求的方式。 电平触发方式 边沿触发方式 触发方式由ICW1的D3位来选择,芯片数目由D1位决定。 ICW1的格式如下: 5657 CPU向82
27、59A发送初始化命令字ICW1的标识是:A0=0和D41。前者是地址信息,后者是ICW1的特征位。它启动8259A的初始化过程,还产生若干隐含的动作:清除IMR,设置完全嵌套方式的中断优先级排队,设置读IRR方式。 ICW2是8259A为CPU准备的一个8位的中断类型号。 但要注意,在初始化编程时用户通过ICW2写入8259A的仅仅只是其中的高5位 (D7D3)。而低3位(D2D0)则由8259A在第一个INTA到来时,自动将被响应的中断请求线IRi的优先级编码(3位)写入,共同组成一个提供给CPU的中断号。可见同一片中的各中断号的高5位都是相同的。2. 中断类型号的设置(ICW2)58ICW
28、2的格式如下:593. 中断级联方式设置(ICW3)级联的结构形式 在级联方式时中断控制系统由一片8259A作为主片,若干其它8259A作为从片组成。 下图所示系统中包括了一个主片和两个从片,共提供了22个中断等级。 60 当ICW1中的SNGL写入0时,表示多片8259A级联,此时需要分别对主片和从片初始化。 ICW3的主要任务:.主片ICW3指定主片的哪个中断输入引脚(IRi)接从片;.从片ICW3指定从片的标志码。 从片的中断输出信号(INT)与主片的哪个中断输入引脚(IRi)相接,该IRi引脚的编码就是从片标志码。 主、从片ICW3的格式不同。主片的ICW3中某一位为1时,表示该位对应
29、的IRi端接一个从片。而从片的低3位则是标识码,高5位无效。6162级联方式下从片中断申请及响应的过程假定一个从片的若干个IRi输入端接收到中断申请:.从片内中断判优。根据判优结果由INT端(高电平有效)向主片提出中断申请。.主片内中断判优。主片接到申请(也可能有多个从片同时提出申请)后,也要进行判优,并根据判优结果由主片INT端(高电平有效)向CPU提出中断请求。.在CPU响应中断后,第一个INTA脉冲使所有的8259A得到通知:中断申请已被允许。与此同时,主片8259A把申请被响应的从片的ID码送上CAS02总线,通知让该从片在下一个INTA到来时,把中断号送上数据总线,这样就完成了中断响
30、应。63 在中断响应时,由于级联的主片和从片分别将对应的ISR位置位。所以对非自动EOI方式,在中断服务完毕后必须发出两个EOI命令,一个给主片,一个给从片。64D4(SFNM)=1:设置特定完全嵌套方式。这种方式使8259A能响应与正在服务的中断同级或高级别的中断请求。级联方式下的主片必须使用这种方式。 在级联方式下,有一点要特别注意,那就是主片ISR不能区别来自同一从片的中断嵌套。因此,来自从片的中断服务程序结束后,必须先读该从片的ISR,只有它为全0时才能向主片发送EOI命令。否则将会使从片的其它中断得不到服务。 65 D4=0:设置一般的完全嵌套方式。 D3(BUF):指示8259A是
31、否工作在缓冲方式以决定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用作缓冲方式下的从片。 6667 8259A的中断结束方式有两种:自动结束和非自动结束(正常结束)。 D1=1:设置中断自动结束方式。在中断服务程序中不需要写入中断结束命令(
32、EOI),它通常用于非嵌套中断系统。 D1=0:设置非自动结束方式。要求在中断服务程序中写入中断结束命令(EOI) 。 D0=1:8259A用于16位以上机。 D0=0:用于8位机。 6869操作命令1. 中断屏蔽操作命令字(OCW1) 用于向IMR写入对中断请求IR的屏蔽信息,其格式如图:其中,Mi与IRi相应。 可见,在程序中可以按需要对一个和多个中断请求进行屏蔽或开放。但要注意,在某中断请求IRi被屏蔽期间,IRR中的相应位i仍能接受该中断请求的触发而置位。只是,在被屏蔽期间,该中断请求不能被响应。一旦在程序中撤销了对它的屏蔽,此时如果该中断请求IRi仍然存在(高电平),则它将被响应。(
33、见图) 7071D0D2位:L0L2是用来指定中断等级(07)。以便对指定的ISR位复位或从指定的优先级开始轮换。与D6位配合使用。D5位:EOI=1:表示本OCW2是中断结束命令。(此时就配合有ICW4的AEOI=0) EOI=0:表示本OCW2不是中断结束命令,8259采用的是自动中断结束方式。(与ICW4的AEOI=1配合)72D 6位:SL用来设置是否指定中断级。 SL=1:需要指定,并用L0L2位来指定中断等级。 SL=0:不需要指定,应使L0L2=000D7位: R=1:采用优先权轮换,并且按照SL,EOI及L2L0各位的组态来执行优先级指定轮换; R=0:不采用优先权轮换,即优先
34、权固定。 73OCW2具有2个功能: 构成中断结束命令。以执行非自动中断结束方式的操作。 在ICW4中设置了AEOI=0时,要使用OCW2来执行非自动结束方式的操作。包含: 不指定的EOI方式(SL=0) :复位对象是ISR的当前置1位中的最高优先级位。 此方式用于完全嵌套方式下,由CPU利用程序发送结束命令(EOI)给8259A,使ISR中优先级最高的置1位清0,从而结束该位对应的中断。也就是结束最高级别的中断服务。 74指定的EOI方式(SL=1):复位指定的ISR位。 本方式用于8259不工作于完全嵌套的方式。因为此时正在服务的中断的级别不一定具有最高的优先级。本方式是在操作命令字中指定
35、要结束的中断等级码(由L2L0给出该码)。即指定ISR中与该中断等级码相应的需要复位的位。 本命令可用于任何优先级管理方式。 75 中断排队方式的操作 优先权固定方式(R=0):即为完全嵌套方式。 优先权轮换方式(R=1):优先级顺序不固定。刚服务完的中断的优先级最低。它的下一个等级成为最高优先级。 .优先级指定轮换(SL=1):从指定的优先级开始轮换。 .优先级自动轮换(SL=0):从IR0开始轮换。注: “指定轮换” 必配有L2L0=指定的最低优先级。 7677 D0:用于选读ISR或IRR。 RIS=1:读ISR; R1S=0:读IRR。 RIS的状态仅在RR位为1时有效。 IMR的读出
36、不必先发指定命令,只要读奇地址端口即可(见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查询中断方式
37、的操作 8259A提供了一条查询命令供CPU访问8259A的查询字,以支持查询中断。 在有中断请求的情况下,CPU根据查询字提供的申请服务的最高优先级编码和程序中预先设计好的算法来获取中断向量,转入中断服务程序。查询字格式:81读取查询字的操作方法顺序如下:例:CLI MOV AL,0CH MOV DX,20H OUT DX,AL IN AL,DX STI .CPU关中断(CLI). 发出查询命令(使OCW3中的P=1即可) .紧接着再发一个读查询字的IN指令。8259A把它作为CPU对它的中断响应,如果此时有中断请求,则以最高等级的中断请求为依据,8259A将ISR的相应位置1,将特定的“查
38、询字”送数据总线给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)实现特定屏蔽
39、方式, .最后开中断(IF=1)即可。 若要恢复原方式,可作相反处理,先关中断,发复位特定屏蔽方式命令(即:ESMM=1,SMM=0),解除被屏蔽的ISR位。 84855.4 8259A在微机系统中的应用一、8259A编程命令的使用 注意,PC微机由系统软件执行8259A的初始化编程和中断向量的装入,不允许用户自己去做。用户只能对没有配置完善OS的单板机去做。 因此,在PC机上开发中断处理程序,不能用ICW1ICW4去进行初始化,只需使用OCW1、OCW2进行中断屏蔽/开放和发EOI命令。而OCW3则很少使用。861. 初始化命令字(ICW) 初始化命令一定要按规定的顺序写入,主片、从片要分别
40、进行初始化。初始化编程的主要任务是:设定中断请求信号的有效触发形式。设定8259A是单片还是多片级联方式设置中断类型号设置优先排队规则。设定中断结束时的操作原则。87882. 操作命令字(OCW) 对8259A完成初始化后,若用户还需要设定某些操作方式,则可以通过CPU发操作命令OCW对中断控制器进行动态控制。 8259A的OCW与ICW不同,OCW不需要按顺序发送,其位置也可按需要而定。 89返回90第6章 中断系统与可编程8259A3.8259A的初始化编程的初始化编程 例题例题6-3 设8086系统中,8259A的端口地址为208H、209H,中断请求信号采用电平触发方式,单片8259A
41、,中断类型号高5位为00010,中断源接在IR3中,不用特殊全嵌套方式,用非自动结束方式,非缓冲方式。编写初始化程序。 解:解:MOV DX ,208H ;8259A偶地址MOV AL , 00011011B;设置ICW1控制字,要写ICW4、单片、电平触发OUT DX , ALMOV AL , 00010011B;设置ICW2中断类型号,中断类型号高5位为00010,中断源接在IR3中MOV DX , 209H ;8259A奇地址OUTDX , ALMOV AL , 00000001B;控制字ICW4,不用特殊全嵌套方式,用非自动结束方式,非缓冲方式OUT DX,AL第6章 中断系统与可编程
42、8259A 例题例题6-4 设8086系统中,8259A的端口地址为208H、209H,中断请求信号采用边沿触发方式,单片8259A,中断类型号为08H,用普通中断结束命令,固定优先级,编写初始化程序。 解:MOV DX ,208H ;8259A偶地址MOV AL , 00010011B;设置ICW1控制字,要写ICW4、单片、边沿触发OUT DX , ALMOV AL , 08H;设置ICW2中断类型号为08H MOV DX , 209H ;8259A奇地址OUTDX , ALMOV AL , 00001101B;控制字ICW4,固定优先级,普通EOI方式,缓冲方式OUT DX,AL在中断服
43、务结束时,需要向8259A设置操作命令字OCW2=20H,如下所示。MOV DX 208HMOV AL,20H ;写OCW2, 普通EOI方式OUT DX,AL 8259A的中断屏蔽寄存器IMR的内容可随时通过读指令(IN指令)从奇地址端口读取。也就是说读取IMR与OCW3控制字无关,可在程序的任何位置安排IN指令来实现。将IMR的内容读入CPU之后,可根据实际应用的需要做相应的处理。第6章 中断系统与可编程8259A 例题例题6-5 将IMR的内容读入CPU,并且开放IR7中断,设8259A的地址为20H、21H。 解:IN AL ,21H ;读IMR,21H是8259A奇地址端口AND A
44、L ,7FH OUT 21H ,AL ;开放IR7中断(看OCW1,IR7=0) 例题例题6-6 将IMR的内容读入CPU,并且屏蔽IR7中断,设8259A的地址为20H、21H。 解:解: IN AL ,21H ;读IMR,21H是8259A奇地址端口 OR AL ,80H OUT 21H ,AL ;屏蔽IR7中断(看OCW1,IR7=1)分析项目1、项目2、项目3、项目4、项目5的电路原理框图及接线图,分析程序流程图,分析程序。第6章 中断系统与可编程8259A4.8259A的应用的应用分析项目1、项目2、项目3、项目4、项目5的电路原理框图及接线图,分析程序流程图,分析程序。6.2 82
45、59A芯片引脚和内部结构芯片引脚和内部结构 6.2.1项目项目2:用:用8259A中断控制中断控制LED灯左循环亮灯左循环亮 1项目要求与目的项目要求与目的 (1)项目要求:用8086控制8259可编程中断控制器,实现对外部中断的响应和处理。编写程序实现8086响应外部中断8259的IR0,每按一次脉冲按钮,结果用8255的PA口输出到LED发光二极管灯左循环亮。(2)项目目的:了解8259A的芯片引脚及内部结构。了解8259的初始化编程。了解8086与8259的连接方法。第6章 中断系统与可编程8259A2项目电路连接与说明项目电路连接与说明(1)项目电路连接:如图6-9所示的粗线为要接的连
46、线,接线描述如下:8259A的片选CS连至地址译码处的210217插孔;8255A的片选CS连至地址译码处的200207插孔;将8只LED发光二极管连接至8255A的PA0PA7插孔;将UP脉冲按钮连接至8259A的IR0插孔。(2)项目说明:8259可外接8个中断源,本项目只响应INT0中断,8259也可以多级连接,以响应多个中断源。将单脉冲信号接到8259的INT0脚。每按一下UP,8259A就中断一次,LED发光二极管灯左循环亮。在编程时应注意: 正确地设置可编程中断控制和工作方式。 必须正确地设置中断服务程序地址。第6章 中断系统与可编程8259A3项目电路原理框图项目电路原理框图 项
47、目电路原理框图如图6-9所示。电路由8086CPU、8255A芯片、8259A芯片、8只发光二极管LED0LED7和脉冲按钮UP组成。 图6-9 用8259A中断控制LED灯左循环亮电路图第6章 中断系统与可编程8259A4项目程序设计项目程序设计 (1)程序流程图 用8259A中断控制LED灯左循环亮程序流程图如6-10所示。图6-10 用8259A中断控制LED灯左循环亮程序流程图 第6章 中断系统与可编程8259A (2)程序清单 用8259A中断控制LED灯左循环亮程序清单如下所示。 DATA SEGMENTDATA ENDS STACK SEGMENT STACKSTA DW 50
48、DUP(?)STACK ENDSCODE SEGMENT ASSUME CS:CODE,DS: DATA ,SS:STACK START :MOV AL,13H ; 00010011B,ICW1:边沿触发,单片,要ICW4 MOV DX,210H ; 8259地址 OUT DX,AL MOV AL,8 ; ICW2中断类型号为8 MOV DX,211H OUT DX,AL第6章 中断系统与可编程8259A MOV AL,01H ; ICW4不用缓冲方式,正常中断结束,非特殊的全嵌套方式 OUT DX,AL MOV AX,0 ; 清零 MOV DS,AX ; 数据段清零 LEA AX,INT0
49、; 写8259中断程序的入口地址 MOV DS:4*8,AX; 把中断服务程序的入口地址偏移量送中断矢量表 MOV AX,CS MOV DS:4*8+2,AX; 把中断服务程序的入口地址段地址送中断矢量表 IN AL,DX ;读中断屏蔽寄存器IMR, AND AL,0FEH ;屏蔽IR1IR7,允许IR0中的中断请求 OUT DX,AL MOV DX,203H ; 8255初始化 MOV AL,80H ; A口输出,方式0 OUT DX,AL MOV BL,0FEH ;LED0灯亮(低电平灯亮) MOV AL,BL MOV DX,200H OUT DX,AL ;PA0灯亮 STI ;开中断第6
50、章 中断系统与可编程8259A REPEAT :HLT JMP REPEAT ;等待 INT0 PROC NEAR ;8259中断程序 ROL BL,1 ;左循环1次 MOV AL,BL MOV DX,200H ; PA口灯亮 OUT DX,AL MOV DX,210H MOV AL,20H ; OCW2发结束命令EOI=1 OUT DX,AL IRET INT0 ENDP CODE ENDS END START第6章 中断系统与可编程8259A6.4 项目扩展与工程应用项目扩展与工程应用 6.4.1项目项目4:中断控制跑马灯:中断控制跑马灯1项目要求与目的项目要求与目的 (1)项目要求:用8
51、086控制8259可编程中断控制器,实现对外部中断的响应和处理,用LED代替跑马灯,正常情况下执行跑马灯右循环,当8086响应外部中断8259的IR0时,每按一次脉冲按钮,跑马灯左循环7个灯,编写程序实现。(2)项目目的:熟悉8259A的芯片引脚及内部结构。掌握8086与8259的连接方法。熟悉8086对8259的控制方法及编程方法。熟悉8086对8255的控制方法及编程方法。熟悉跑马灯的控制方法及编程方法。第6章 中断系统与可编程8259A2项目电路连接与说明项目电路连接与说明(1)项目电路连接:如图6-26所示的粗线为要接的连线,接线描述如下:8259A的片选CS连至地址译码处的21021
52、7插孔;8255A的片选CS连至地址译码处的200207插孔;将8只LED发光二极管连接至8255A的PA0PA7插孔;将UP脉冲按钮连接至8259A的IR0插孔。(2)项目说明:8259可外接8个中断源,本项目只响应INT0中断。将单脉冲信号接到8259的IR0脚。每按一下UP,8259A就中断一次,跑马灯左循环7个灯。正常情况下执行跑马灯右循环,编写程序实现。在编程时应注意: 正确地设置可编程中断控制和工作方式。 必须正确地设置中断服务程序地址。第6章 中断系统与可编程8259A3项目电路原理框图项目电路原理框图 项目电路原理框图如图6-26所示。电路由8086CPU、8255A芯片、82
53、59A芯片、8只发光二极管LED0LED7和脉冲按钮UP组成。图6-26 中断控制跑马灯电路图 第6章 中断系统与可编程8259A4项目程序设计项目程序设计(1)程序流程图 中断控制跑马灯程序流程图如6-27所示。 (a) 主程序 (b)中断服务程序 图6-27 中断控制跑马灯程序流程图 第6章 中断系统与可编程8259A(2)程序清单 中断控制跑马灯程序清单如下所示。 DATA SEGMENTDATA ENDS STACK SEGMENT STACKSTA DW 50 DUP(?)STACK ENDSCODE SEGMENT ASSUME CS:CODE,DS: DATA ,SS:STACK
54、 START :MOV AL,13H ; 00010011B,ICW1:边沿触发,单片,要ICW4 MOV DX,210H ; 8259地址 OUT DX,AL MOV AL,8 ; ICW2中断类型号为8 MOV DX,211H OUT DX,AL MOV AL,01H ; ICW4不用缓冲方式,正常中断结束,非特殊的全嵌套方式 OUT DX,AL MOV AX,0 ; 清零 MOV DS,AX ; 数据段清零 第6章 中断系统与可编程8259A LEA AX,INT0 ; 写8259中断程序的入口地址 MOV DS:4*8,AX; 把中断服务程序的入口地址偏移量送中断矢量表 MOV AX,
55、CS MOV DS:4*8+2,AX; 把中断服务程序的入口地址段地址送中断矢量表 IN AL,DX ; 读中断屏蔽寄存器IMR, AND AL,0FEH ; 屏蔽IR1IR7,允许IR0中的中断请求 OUT DX,AL MOV DX,203H ; 8255初始化 MOV AL,80H ; A口输出,方式0 OUT DX,AL STI ; 开中 MOV BL,0FEH ;LED0灯亮(低电平灯亮) BG: MOV AL,BL MOV DX,200H OUT DX,AL ;跑马灯亮 CALL DELAY ;100ms延时子程序 ROR BL,1 ;右循环 JMP BG ;等待INT0 PROC
56、NEAR ; 8259中断程序 MOV AH,07H ;置循环次数 BG1: ROL BL,1 ; 左循环1次 MOV AL,BL第6章 中断系统与可编程8259A MOV DX,200H ; PA口灯亮 OUT DX,AL CALL DELAY ;100ms延时子程序 DEC AH JNZ BG1 MOV DX,210H MOV AL,20H ; OCW2发结束命令EOI=1 OUT DX,AL IRET INT0 ENDP DELAY PROC NEAR ;延时100ms子程序MOV BH,100DELAY2: MOV CX,374DELAY1: NOP NOP LOOP DELAY1 D
57、EC BH JNZ DELAY2 RETDELAY ENDP CODE ENDS END START第6章 中断系统与可编程8259A6.4.2项目项目5:两个外部中断源中断:两个外部中断源中断 1项目要求与目的项目要求与目的 (1)项目要求:用8086CPU控制8259可编程中断控制器,实现对两个外部中断的响应和处理。要求程序中对IR0每次中断进行计数,并将累计计数结果用8255的PA口输出到LED显示;对IR1每次中断,去控制继电器动作,使LED闪烁。(2)项目目的:掌握8259A的初始化编程方法。掌握8086与8259的连接方法。了解8086对8255的编程方法。第6章 中断系统与可编程
58、8259A2项目电路连接与说明项目电路连接与说明(1)项目电路连接:如图6-28所示的粗线为要接的连线,接线描述如下:8259A的片选CS连至地址译码处的210217插孔;8255A的片选CS连至地址译码处的200207插孔;将8只LED发光二极管连接至8255A的PA0PA7插孔,PB0接到继电器的控制端上;将UP脉冲按钮连接至8259A的IR0插孔,将DOWN脉冲连接至8259A的IR1插孔。(2)项目说明:8086需要外接中断控制器才能对外部中断进行处理。8259可外接8个中断源,本项目只响应IR0、IR1中断。将单脉冲信号UP接到8259的IR0脚,每次中断时,可以看到LED显示会加1;将单脉冲信号DOWN接到8259的IR1脚,每次中断时,可以看到继电器控制的LED灯闪烁。在编程时应注意: 正确地设置可编程中断控制和工作方式。 必须正确地设置中断服务程序地址。 本实验是LED灯是低电平亮。第6章 中断系统与可编程8259A3项目电路原理框图项目电路原理框图 项目电路原理框图如图6-28所示。电路由8086CPU、8255A芯片
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 茂名市2025届高三冲刺模拟语文试卷含解析
- 李建伟 合同编通则司法解释解读与应对实务
- 房屋租赁合同押金收据填写模板
- 第1单元阅读综合实践(分层练习)(解析版)
- 《初中知识结构图》课件
- 供配电系统培训课件
- 四年级上册科学教科版课件第2课 呼吸与健康生活
- 《服务领域物流》课件
- 学生人身安全协议书(2篇)
- 《HR工具数据分析》课件
- 殡葬职工心理压力及疏导措施研究分析 应用心理学专业
- 中医养生的气血调养
- 心理战法律战舆论战课件
- 中电投财务标准化管理手册
- 年产5万吨原位固态化电解质项目建议书
- 政府采购代理机构内部监督管理制度
- 法律的含义及其历史发展
- 康复科2024年度工作总结及创新计划
- 船用天线的布置安装与船舶备用电源
- 2024年广西投资集团有限公司招聘笔试参考题库附带答案详解
- 《民事诉讼程序》课件
评论
0/150
提交评论