微型计算机原理与接口技术第二版--等-第6章课件

PPT
  • 阅读 70 次
  • 下载 0 次
  • 页数 127 页
  • 大小 1.303 MB
  • 2022-12-01 上传
  • 收藏
  • 违规举报
  • © 版权认领
下载文档40.00 元 加入VIP免费下载
此文档由【小橙橙】提供上传,收益归文档提供者,本网站只提供存储服务。若此文档侵犯了您的版权,欢迎进行违规举报版权认领
微型计算机原理与接口技术第二版--等-第6章课件
可在后台配置第一页与第二页中间广告代码
微型计算机原理与接口技术第二版--等-第6章课件
可在后台配置第二页与第三页中间广告代码
微型计算机原理与接口技术第二版--等-第6章课件
可在后台配置第三页与第四页中间广告代码
微型计算机原理与接口技术第二版--等-第6章课件
微型计算机原理与接口技术第二版--等-第6章课件
还剩10页未读,继续阅读
【这是免费文档,您可以免费阅读】
/ 127
  • 收藏
  • 违规举报
  • © 版权认领
下载文档40.00 元 加入VIP免费下载
文本内容

【文档说明】微型计算机原理与接口技术第二版--等-第6章课件.ppt,共(127)页,1.303 MB,由小橙橙上传

转载请保留链接:https://www.ichengzhen.cn/view-77606.html

以下为本文档部分文字说明:

第6章中断教学提示:中断传送方式是最常用、比较及时和快速的输入输出控制方式。现在我们使用的不同种类的计算机和各种操作系统都支持中断处理。本章首先描述了中断传送的一般概念和原理,然后着重描述了8086中断处理的相关内容,最后比较详细

地描述了8259A中断控制器的功能以及同微处理器的连接方法。教学目标:理解什么是中断,为什么要使用中断;什么是中断源。熟知响应中断的条件、中断的优先级、中断嵌套的概念以及中断的处理过程。深刻理解8086中断处理相关知识,包括可屏蔽和非屏

蔽中断请求的区别;中断的屏蔽与开放;中断向量表;中断类型码;中断响应和处理过程。理解8259A的功能、内部结构与引脚信号含义;6种操作方式及中断处理过程;各命令字含义及编程;掌握它在微型计算机中的连接方法。6.1概述中断是计算机所具有的

非常重要的功能,具有中断功能的CPU可以实现:(1)与外设同步工作。(2)实现实时处理。(3)故障处理。(4)在现代微型计算机中,使用中断机制可以实现多道程序和多重任务的自动切换。6.1.1中断的基本概念所谓中断是指CPU在正常运行程序的过程中,CPU内部或外部出现某些事件、异常需要及时处理,导致

CPU暂停正在执行的程序,转去执行处理该事件或异常对应的程序,并在处理完毕返回原程序处继续执行被暂停的程序,这一过程称为中断及中断处理。中断处理过程如图6.1所示。中断时,被打断执行的程序中下一条被暂停执行的指令所在的地址称为断点。能够实现中断功能的硬件电路和相应软件,统

称为中断系统。任何能够引发中断的事件称为中断源。常见的中断源有:一般的输入/输出外设,如键盘、打印机等;数据通道,如磁盘机、磁带机等;实时时钟,如定时器/计数器8253提供的定时信号等;故障源,如电源掉电、内存出错等;为调试程序设置的断点等。可

以看出中断源的种类非常多,而中断系统为区别不同种类的中断源,一般采用若干位二进制编码进行区分,方法是为每个中断源分配一个不同的编码,称为中断类型码。图6.1中断处理过程示意图继续执行断点主程序中断服务程序有中断请求中断处理返回断点6.1.2中断处理过程从

中断源向CPU发出中断请求信号到CPU将这一请求处理完成的过程,叫中断处理过程。这一过程包括:中断请求、中断响应、中断处理和中断返回几个步骤。1.中断请求根据中断请求信号引入CPU内部中断处理逻辑部件的不同渠道,中断请求分为内部请求和外部请求,也称软件中断请求和硬件中断请求。

软件中断请求在CPU内部由中断指令或程序出错直接引发中断;硬件中断请求必须通过专门的引脚引入中断请求信号。例如,8086/8088CPU用INTR引脚和NMI引脚接收硬件可屏蔽和非屏蔽中断请求信号。2.中断响应对于可屏蔽的硬件中断请求,CPU执行

程序的时候,在一条指令执行过程中检测判断有无中断请求信号。当CPU检测到中断请求信号,且内部的中断允许触发器的状态为1,表示允许中断时,CPU在执行完现行指令后,发出INTA中断响应信号。图6.2所示为CPU内部

产生中断响应信号的逻辑电路。从图6.2可以看出,一旦CPU发出中断响应信号,应立即清除中断请求信号,以避免同一个中断请求被CPU多次处理。从图中也可以看出,只有执行开中断指令后,才能够响应中断。当执行关中断指令后,就禁止了响应中断请求信号。开中断也称为允许中断,关中断也称为屏蔽中断或禁止中

断。图6.2CPU内部产生中断响应信号的逻辑电路图3.中断处理CPU一旦响应中断,立即进入中断处理过程。该过程实际上就是CPU中止正在运行的程序,转去执行引起该中断事件的程序,即中断处理(服务)子程序。主要操作有:(1)关中断(2)保护断点(3

)确定中断处理子程序入口地址(4)执行中断处理子程序①对现场的保护②对其他中断请求的处理③中断处理子程序的最后一条指令一定是中断返回指令4.中断返回执行完中断处理子程序后,要返回到主程序的断点处,此过程称为中断返回。实际上就是在中断处理子程序中通过执行最后一条指令——中断返回指令(如8086

/8088的IRET指令)来实现的。中断返回指令的操作是保护断点的逆过程。6.1.3中断优先级1.中断优先级当系统中有多个设备用中断方式与CPU进行数据交换时,由于各设备随时会向CPU提出中断请求,所以就避免不了有时会同时出现多个中断请求的

情况。而此时CPU只能按优先级别(也称优先权,是设计者根据引起中断事件的轻重缓急程度为每个中断源事先确定好的中断优先级别)的次序予以响应和处理,这个响应的次序称为中断优先级。不同级别的中断请求,常常遵循的处理原则是:(1)不同优先级的多个中断源同时发出中断请求时,应按优先级

别由高到低次序响应并处理。实现中断优先级排队。(2)高优先级请求可以中断低优先级的中断处理程序,实现中断嵌套。如果正在处理高优先级中断,出现低优先级中断请求,可暂不响应。(3)中断处理时,出现同级别中断请求,应在当前中断处理结束后再处理新的请求。2.确定中断优先级1)软

件查询法图6.3软件查询法对应的硬件电路软件查询方法的流程图如图6.4所示。图6.4软件查询法程序流程图对于图6.3所示电路,设中断请求寄存器端口号为40H,软件查询的程序段如下:INAL,40H;读中断请求寄存器T

ESTAL,80H;判断电源故障请求?JNZPWF;是,转处理电源故障中断处理子程序TESTAL,40H;判断磁盘请求?JNZII2;是,转磁盘中断处理子程序2)简单硬件电路排队法常用的硬件优先级排队电路有菊花链电路、中断优先级编码电路等。下面简单介绍菊花链电路(p2

35)。6.1.4中断嵌套图6.6中断嵌套示意图在允许中断嵌套的系统中应注意:一般CPU响应中断请求后,硬件会自动关闭中断,这样,CPU在执行中断处理子程序时将不能再响应其他任何中断请求。若要实现中断嵌套,应在进入低级别中断处理子程序之初设置一条开中断指令STI。6.28086

/8088中断及中断处理基础8086/8088CPU的中断类型码使用8位二进制数,范围为0~255,可以处理256种不同类型的中断,CPU根据中断类型码来识别不同的中断源。8086/8088的中断源如图6.7所示。

从图6.7可以看出这256个中断源可分为两大类:一类是外设接口的中断请求,由CPU的引脚引入,中断源来自CPU外部,故称外部中断(又称硬件中断);另一类在执行指令时引起,来自CPU的内部,故称内部中断(又称软件中断)。图6.78086/8088中断源6.2.18086/8088的外部

中断8086/8088CPU有两条外部中断请求引脚:NMI(非屏蔽中断)和INTR(可屏蔽中断)引脚。1.非屏蔽中断NMI2.可屏蔽中断INTR6.2.28086/8088的内部中断1.内部中断(软件中断)1)除法错误中断当CPU执行除法指令(DIV/IDIV)时,若除数为

0或所得的商超过了寄存器所能表示的范围,则立即产生一个除法错误中断。该中断是类型码为0的内部中断,CPU响应中断后转去执行除法错误中断处理子程序。2)溢出中断INTOCPU进行带符号数的算术运算时,若发生了溢出,则标志位OF=1,如果此时执行INTO指令,会产生溢

出中断。若OF=0,执行INTO指令不产生中断,CPU继续执行下一条指令。INTO指令通常安排在算术指令之后,以便在溢出时能及时处理。例如:ADDBX,CXINTO;测试加法是否溢出,其中断类型码为43)单步执行中断(单步中断)当TF=1时,每执行一条指令,CP

U会自动产生一个单步中断。单步中断处理子程序显示各个寄存器及使用的存储单元内容,以便分析单条指令执行的结果。单步中断又称为陷阱中断,主要用于程序调试。此中断类型码为1。4)INTn中断指令引起的中断中断

指令的操作数n就是中断类型码。CPU执行INTn指令后,会立即产生一个类型码为n的中断,转入相应的中断处理子程序。5)断点中断断点电中断即INT3指令引起的中断,中段类型码为3,一般在调试程序中设置断

点可使用本指令实现。程序执行到本指令停下转入中断处理子程序,显示相关寄存器和内存单元的值。2.内部中断的特点内部中断具有如下特点:1)所有内部中断的中断类型码及相应优先级均由系统确定,如表6.1所示(p239)。前三种内部中断优先

级均高于外部中断,外部中断中NMI级别高于INTR,只有单步执行中断优先级最低且低于外中断。2)除单步执行中断外,其它内部中断均无法禁止。单步执行中断用TF位禁止,当标志寄存器中TF=0时,禁止。3)

由于中断类型码已确定,所以不用执行中断响应周期取中断类型码。4)由于内部中断均处于程序的固定位置处,所以无随机性。6.2.3中断向量表8086/8088最多可以处理256个中断,在中断管理系统中,可以响应多少个中断就应该有多少个中断处理子程序与之对应。为统一管理这些存放在内存不同区域的中断处

理子程序,8086/8088将这些中断处理子程序的入口地址统一存放在内存的一个固定区域。图6.88086/8088的中断向量表由图6.8可看出,中断处理子程序入口地址在中断向量表中是按中断类型码顺序存放的,因此每个

中断处理子程序入口地址在中断向量表中的位置可由“中断类型码×4”计算出来。例如,若中断类型码n=40H,则其中断向量放在中断向量表0:0100H开始的连续4个单元中,若物理地址00100H、00101H、00102H、00103H这4个连续的单元中存放的数据分别是00H、20H

、00H、10H,则对应中断处理子程序入口地址为1000H:2000H。在8086/8088的中断向量表中:有5个专用中断(中断类型码为0~4),它们的用途已经确定;27个系统保留的中断(中断类型码为5~31)供系统使用,不允许用户自行定义;224个用户自定义中断

(中断类型码为32~255),这些中断类型码可供软件中断INTn或可屏蔽中断INTR使用。注意其中有些中断类型码已经有了固定用途,例如,中断类型码21H的中断已用作DOS的系统功能调用,用户选择中断类型码时必须避开。由用户确定了中断类型码后,还应先将相应的

中断处理子程序入口地址填入中断向量表,以便CPU根据提供的中断类型码找到相应的中断向量。其方法有两种:1.直接装入法用传送指令直接将中断处理子程序首地址装入中断向量表中。设中断类型码为40(此类型码对应的向量表地址为从000A0H开始的4个连续存储单元

)。程序段如下:PUSHDSXORAX,AXMOVDS,AXMOVAX,OFFSETINT40;取中断处理子程序偏移地址MOV[00A0H],AX;设置中断处理子程序偏移地址MOVAX,SEGINT40;取中断处理子程序段地址MOV[0

0A0H+2],AX;设置中断处理子程序所在代码段的段地址POPDS2.DOS系统功能调用法(1)利用DOS系统功能调用的25H子功能,可以把中断向量放入中断向量表中相应的位置,方法是将DOS调用入口参数置成:子功能号:(AH)=25H入口参数:(AL)=中断类型码,INT40H为中断处

理子程序的标号(DS)=中断处理子程序入口地址的段地址(DX)=中断处理子程序入口地址的偏移地址下面程序段是完成中断类型码为40H的入口地址的设置:PUSHDS;保护DSMOVDX,OFFSETINT40H;取中断处理子程序偏移地址MOVAX,SEGINT40H

;取中断处理子程序段地址MOVDS,AXMOVAH,25H;送子功能号MOVAL,40H;送中断类型码INT21H;DOS功能调用POPDS;恢复DS(2)利用DOS系统功能调用的35H子功能,能够把AL中的中断类型码所对应的中断向量表中的中断向量,取到ES:

BX中。ES为段地址,BX为偏移地址。方法是将DOS调用入口参数设置成:子功能号:(AH)=35H入口参数:(AL)=中断类型码执行:INT21H返回参数:ES:BX=中断类型码对应的中断向量(中断处理子程序的段地址、偏移地址)程序为:MOVAL,N;N为中

断类型码0~255MOVAH,35H;子功能号INT21H;返回时中断向量在ES:BX中6.2.48086/8088的中断处理过程图6.9(p242)表示8086/8088CPU中断处理的基本过程。由图6.9可以看出,CPU在

每条指令的最后一个机器周期的最后一个T状态,均按顺序采样中断请求信号。首先采样的是内部中断,由此可见其中断优先级最高,其次采样NMI,INTR和TF。对这几种中断的处理过程基本类似,所不同的是获取中断类型码的方法不同。对于软件中断和非屏蔽中断,其中断类型

码由系统设定。对于可屏蔽中断,其中断类型码由发出INTR请求的8259A提供。在8086/8088系统中,CPU对可屏蔽中断的响应处理要经过以下几步:(1)执行2个中断响应总线周期,取得中断类型码。当CPU响应INTR引脚上的中断请求后,在2个总线周

期的T2~T4状态分别输出2个负脉冲,在第2个总线周期的T2~T4状态内,CPU在低8位数据总线上获得8259A送来的中断类型码。(2)执行一个总线写周期将标志寄存器FLAG的值压栈。(3)将TF送入TEMP。(4)设置IF=0,TF=0

,即关中断和禁止单步中断。(5)执行两个总线写周期,将断点处的段地址CS和偏移地址IP的内容压栈保护。(6)执行两个总线读周期,将中断向量前两个字节即中断处理子程序偏移地址和后两个字节段地址的内容分别送入IP和CS寄存器,调用中

断处理子程序。在图6.9所示的流程中,(1)~(6)是CPU的内部处理,由硬件自动完成。对于非屏蔽中断和软件中断不需要第一步,只需从第二步开始。中断处理子程序的一般结构如图6.10所示。图6.10中断处理子程序的

一般结构关中断保护现场开中断中断服务恢复现场中断返回如前所述,若该中断处理允许被更高级别的中断源中断,则需加入开中断指令。中断处理子程序的最后一条指令一定是中断返回指令,以保证断点的恢复。用户在设计中断处理子程序时要预先确定一个中断类型码,不论是采用软件中断还是硬

件中断,其类型码都只能在系统预留给用户的类型码中选择。6.3可编程中断控制器Intel8259A6.3.1Intel8259A功能、内部结构与引脚信号1.功能(1)具有8级中断优先级控制,若采用级联方式,最多可管理64级中断。(2)对

每一个中断请求均有屏蔽功能;在中断响应期间,可提供中断类型码。(3)8259A是可编程器件,可以根据需要通过编程随时对所具有的多种中断管理方式,进行设置或重新组织。2.8259A的内部结构图6.11所示为8259A的内部结构图,其基本组成是由:中断

请求寄存器IRR;中断服务寄存器ISR;优先权判别器PR;中断屏蔽寄存器IMR;数据总线缓冲器;读/写控制逻辑;控制逻辑及级联缓冲/比较器构成。图6.118259A内部结构框图1)中断请求寄存器中断请求寄存器IRR(InterruptRequestRegister),由

一个8位锁存器构成,接收并锁存来自引脚IR7~IR0上的中断请求信号,当IR7~IR0某一引脚上出现有效中断请求信号时,IRR对应位被置1,该锁存器可被CPU读取。2)中断屏蔽寄存器中断屏蔽寄存器IMR(InterruptMaskRegister)由一个8位寄存器组成。若IR

R中记录的各个中断请求有任何一个需要屏蔽,只要将IMR的相应位置1即可,未被屏蔽的中断请求允许进入优先权电路。中断屏蔽寄存器通过编程进行设置。3)中断服务寄存器中断服务寄存器ISR(In-ServiceRegister),是一个8位寄存器,通过8位二进制数的值记录当前正在处理的中断

请求。例如,当ISR的D3=1时,表示CPU正在处理来自IR3引脚的中断请求。ISR的置位是在相应引脚的中断请求被响应时,由8259A的控制逻辑设置。相应位被清零,表示中断处理结束。清零动作的发生时间及方式可通过编程设置。4)优先权判别器优先权判别器电路用于识别和管理各个中断请求信号的

优先级别,当有多个中断请求信号同时申请时,优先权电路根据编程设置的优先权管理方式,选择IRR中优先级最高者,在CPU响应中断时将ISR中相应位置1。若某中断请求正在被处理时,又有新的中断请求,则由优先权电路将新进入的

中断请求的优先级和当前正在处理的中断的优先级进行比较。若比较结果是新的中断请求比正在处理的优先级高,则正在处理的中断程序自动被中断,由优先权电路通过控制逻辑向CPU发出中断请求INT信号,CPU处理级别高的中断请求,形成中断嵌套。5)数据总线缓冲器数据总线缓冲器是一个8位双向三

态缓冲器,是8259A与系统之间传送信息的数据通道。它与数据总线相连,可以接收CPU发来的命令字,也可以向CPU发送中断类型码,或由CPU读取相关信息。6)读/写控制逻辑读/写控制逻辑的功能是,根据CPU的读写命令确定数据总线缓冲器中数据的传输方向,同时根据片选信号-

CS和A0选择内部与CPU进行数据交换的各命令字寄存器。当CPU发读信号时,将选中寄存器的内容送到数据总线上;当CPU发写信号时,将CPU发来的命令字送入指定的命令字寄存器。7)控制逻辑8259A的控制逻辑部分,主要包括了一组初始化命令字寄存器和一组操作命令字寄存器。其主要作用是确定82

59A的工作方式,并按照编程设定的工作方式管理8259A的全部工作;同时还负责根据IRR、IMR及优先权电路的状态,通过INT引脚向CPUINTR引脚发出中断请求信号;CPU收到8259A的中断请求信

号后,进入中断处理流程。过程如下:(1)当CPU从INTR引脚收到中断请求信号后,若IF=1,则CPU完成当前指令后,响应中断,执行两个中断响应总线周期,每个总线周期都在-INTA引脚上发出一个负脉冲,负脉冲宽度为两个

时钟周期。(2)8259A的控制逻辑在收到第一个负脉冲后,使IRR锁存功能失效,不再接收IR7~IR0上的中断请求信号(直到第二个负脉冲结束后,IRR锁存功能才有效),并清除IRR的相应位。使ISR的对应位置1,以

便优先权判别器为以后的中断请求裁决提供依据。(3)收到第二个负脉冲后,8259A把当前中断的中断类型码送到D7~D0,CPU根据此类型码进入相应的中断处理子程序。(4)在中断处理子程序结束时,CPU应向8259A发中断结

束命令,该命令将ISR寄存器的相应位清0,中断处理结束。8)级联缓冲/比较器级联缓冲/比较器用来存放和比较在级联系统中用到的所有8259A的级联地址。当系统需要扩展而采用级联方式时,级联缓冲/比较器的三个引脚CAS0、CAS1和CAS2的意义不同。做为主片的8259A这三个引脚

为输出端,发送从片的级联地址,用于表示哪1个从片的中断请求被响应;作为从片的8259A,这三个引脚是输入端,用于接收主片送来的片选代码。例如,1个从片的INT端连接到主片的IR2端,当从片的中断请求通过主片

送到CPU,CPU响应发出第1个负脉冲时,主片CAS2、CAS1、CAS0输出二进制数010,表示连接到IR2引脚上的从片中断请求被响应。3.8259A引脚信号含义图6.128259A引脚图(1)IR7IR0:中断请求信号输入引脚,引入外设接口电路或其他8259A(从片)向8259A发出的

中断请求信号。IRn的触发方式有边沿触发和电平触发方式,通过编程设定。(2)D7D0:双向、三态数据线,与系统数据总线的D7D0相连,用来传送命令字、某些寄存器内容和中断类型码等。(3)-WR:写信号,输入,低电平有效。通知8259A接收CPU从数据总线上送来的命令字

。(4)-RD:读信号,输入,低电平有效。用于CPU读取8259A中某些寄存器的内容(如IMR、ISR或IRR等)。-WR和-RD均控制数据总线缓冲器中数据的传输方向。(5)INT:8259A向CPU发出的中断请求信号,高

电平有效。该引脚连接CPU的INTR端。在级联方式下,从片INT输出连接到主片中断请求信号输入引脚IRn上。(6)-INTA:中断响应信号,输入,低电平有效。接收CPU发来的中断响应信号,并在第二个负脉冲期间,8259A将

中断类型码送到数据总线上。(7)-CS:片选信号,输入,低电平有效。由地址译码器对高位地址译码后产生。只有该信号有效时,CPU才能对8259A进行读/写操作。(8)A0:地址输入信号,用于对8259A内部寄存器端口的寻址,与地址总线的A0或A1相连。每片8259A对应两个端口地

址,一个为偶地址,一个为奇地址,且偶地址小于奇地址。在与8088连接时,可直接将该引脚与地址总线的A0连接;与8086连接时要注意,因为8259A只有8位数据线,8086有16位,8086与8259A的所有数据传送都用16位数

据总线的低8位进行,而8086CPU在传输数据时只有偶地址端口的数据通过低8位数据总线输入输出,所以为保证所有传送都用总线的低8位,最简单的方法是将8086地址总线的A1和8259A的A0端相连,这样就可以用两个相邻的偶地址作为8259A的端口地址

,从而保证用数据总线的低8位与8259A交换数据。6.3.28259A的操作方式和中断处理过程1.中断优先级管理方式1)完全嵌套方式完全嵌套方式也称固定优先级方式。在这种方式下,由IRn引脚引入的中断请求信号具有固定的优先级,规定IR0最高,IR7最低。在对8259A初始化后

若没有设置其他优先级管理方式,则默认为完全嵌套方式。在完全嵌套方式下,当一个中断请求被响应时,ISR中的对应位ISn被置1。除中断自动结束方式外,在CPU发出中断结束命令EOI前,此位一直保持为1,以封锁同级或低级的中断请求,但允许响应级别高

的中断请求,以实现中断嵌套。2)特殊全嵌套方式特殊全嵌套方式与完全嵌套方式基本类似,区别在于允许同级的中断请求进入。3)优先级自动循环方式采用优先级自动循环方式,各中断源优先级是循环变化的,具有大体相同的优先级。当一个中断源的中断服务完成后,其优先级自动降为最低,而将最高优先级赋予与之

相邻的低一级的中断请求源。此方式主要用在系统中各中断源优先级相同的情况下。开始时,优先级队列次序是IR0~IR7(IR0最高,IR7最低);若此时出现了IR3请求,响应IR3并处理完成后,优先级队列变为IR4

~IR7、IR0、IR1、IR2、IR3(最低)。4)优先级特殊循环方式该方式与优先级自动循环方式相比,主要区别是可以通过编程设置开始的最低优先级。例如,最初设定IR2为最低优先级,那么IR3就是最高优先级,而优先级自动循环方式中,最初的最高优先级一定是IR0。2.中断屏蔽方式8259A可对8个

中断请求引脚上引入的中断请求信号,根据需要通过编程写入相应的屏蔽字分别进行屏蔽。具体屏蔽方式有以下两种。1)普通屏蔽方式普通屏蔽方式是通过对中断屏蔽寄存器(IMR)的设定,实现对中断请求的屏蔽。中断屏蔽寄存

器的每一位对应一个中断请求。当某一位为1时,与之相对应的中断请求被屏蔽。为0时,开放2)特殊屏蔽方式特殊屏蔽方式是当一个优先级较高的中断请求正在被处理时,若设置了特殊屏蔽方式,在进入中断处理子程序后,用操作命令字OCW1,将屏蔽寄存器中本级中断的对应位置1,使本级中断受到屏蔽,同时825

9A自动清除中断服务寄存器ISR中本级中断对应位,使优先级较低的中断请求也被开放,能够通过8259A向CPU请求中断。3.中断结束方式所谓中断结束(EndOfInterrupt,EOI),就是将正在被处理或处理即将完成的中断请求在ISR中的相应位清0,具体有以下两种方法。1)自动结束方式(AEOI

)自动结束方式在第二个-INTA负脉冲的后沿将对应的ISR位清0。2)非自动结束方式在非自动结束方式下,从中断程序返回前,需通过程序向8259A输出一个中断结束命令(EOI),将ISR中的相应位清0。具体方法有以下两种:(1)一般结束方式。此方式由8259A

自动选择ISR中优先权最高位清0。此方式常用于完全嵌套方式下的中断结束。(2)特殊结束方式。此方式需由用户指明将ISR中的哪一位清0,常用于特殊全嵌套方式。在级联系统中均采用一般结束方式或特殊结束方式。在中断处理程序结束时,必须发两次中断结束命令,一次发给主片,另一

次发给从片。4.中断触发方式中断触发方式指的是IRn引脚上的信号在什么状态下作为有效信号。8259A有两种状态可供选择。1)电平触发方式设置为电平触发方式时,当IRn引脚上出现高电平时,作为中断请求信号。请求一旦被响应,该高电平信号应及时撤除,否则

会引发第二次中断。2)边沿触发方式边沿触发方式以IRn引脚上出现由低电平向高电平的跳变作为中断请求信号,跳变后高电平要一直保持,直到被响应。5.查询方式当CPU的IF位为0时,禁止响应外部的可屏蔽中断请求。当8259A向CPU发中断请求信号INT时,CPU不响应。由于外设仍然向8259A

发中断请求信号,要求CPU服务,此时CPU可通过用软件查询的方法来确认中断源,从而实现对外设的服务。基本过程如下:1)CPU首先向8259A发查询命令字。2)紧接着执行一条输入指令,从8259A的偶地址端口读出一字节的查询字。查询字格式为:

IxxxxW2W1W0。3)CPU读入查询字后,判断其最高位I,若最高位为I=1,说明8259A的IRn已有中断请求输入,此时该查询字的最低三位W2W1W0组成的代码,表示了当前有一个或多个中断请求中的最高优先级

对应的IRn的编号,CPU据此转入相应的中断处理子程序。6.与系统总线的连接方式1)缓冲方式为减轻系统总线负担,在多片8259A级联的大系统中一般采用缓冲方式。在缓冲方式下,8259A通过总线收发器和数据总线相连。8259A的-SP/-EN作为输出端,-EN有效,使总

线收发器使能。2)非缓冲方式非缓冲方式主要用于单片8259A或片数不多的8259A级联的系统中。在该方式下,8259A直接与数据总线相连,8259A的-SP/-EN作为输入端,-SP有效。只有单片8259A时,-SP/-EN端必须接高电平;有多片8259

A时,该引脚用于区分主从芯片。-SP/-EN端接高电平则表示该8259A为主片;接低电平,则表示该8259A为从片。7.8259A中断处理过程8259A完成一次中断响应的过程如下:(1)当外设向8259A中断请求引脚上发送中断请求信号时,中断请求寄存器IRR中的相应位置位,并将信号锁存在IRR

中。(2)IRR中的内容与中断屏蔽寄存器IMR中的对应位进行比较,如果该请求信号未被屏蔽,则信号被送入优先权比较电路(判别器)。(3)优先权比较电路根据送来的信号,确定优先级最高者以后,通过控制逻辑向CPU发出中断请求信号INT。(4)当CPU接收到82

59A传入的INT信号时,IF=1时进入中断响应周期,发出两个连续的-INTA信号到8259A的-INTA引脚上。(5)8259A在接到第一个-INTA信号后,禁止接收IR0~IR7的中断请求,直到第二个-INTA结束;使ISR相应位置位,并清

除相应的IRR位。(6)8259A在第2个-INTA负脉冲到来时,将该中断请求的中断类型码送到数据总线D7~D0。(7)根据所设置的不同的结束方式,将ISR相应位清0。至此完成1个中断请求的处理过程。

6.3.38259A的编程8259A是可编程的中断控制器,使用前要根据要求和硬件连接方式对其进行初始化。此后在工作过程中,其初始化编程所设置的状态保持不变。但可以根据实际情况动态地对相关的中断操作进行编程,以达到随时控制中断处理的目的。所以,对于

8259A,有两组命令字——初始化命令字ICW(InitializationCommandWords)和操作命令字OCW(OperationCommandWords)。相应地,CPU可写入两组7个命令字到

7个对应的寄存器,分别是保存ICW的ICWR1~ICWR4和OCW的OCWR1~OCWR3寄存器。1.初始化命令字及其编程8259A使用前必须对其进行初始化编程,以确定基本操作方式。初始化编程设置通过4个初始化命令字ICW1~IC

W4来完成。1)初始化命令字(1)ICW1主要用于设置操作方式,其格式如图6.13所示。图6.13ICW1命令字格式(2)ICW2用于设置中断类型码,此命令字应紧跟ICW1写入A0=1的端口,即奇地址端口,其格式如图6.1

4所示。图6.14ICW2命令字格式在8086/8088系统中,ICW2的D7D3位设置中断类型码的高5位,低3位D2D0的内容由8259A根据申请中断请求引脚IR7IR0进行编码,自动填入000111范围内的3位二进制数,与高5

位一同构成8位中断类型码。例如:若ICW2的高5位D7~D3=10011,则对应IR0~IR7申请中断请求的相应中断类型码分别为98H、99H、9AH、9BH、9CH、9DH、9EH和9FH。(3)ICW3用

作级联方式下主、从芯片的初始化命令字,只有在ICW1的SNGL=0表示系统中包含多片8259A时才需设置ICW3,并写入奇地址端口,格式如图6.15所示。图6.15ICW3命令字格式对主片和从片ICW3需分别设置:对于主片,当IR7IR0引脚上接有从片

时,S7~S0相应位就置1。例如,若主片ICW3的内容为05H(00000101B)时,说明主片的IR0、IR2上连有从片。对于从片,ICW3的D7D3位不用,可置0;用D2D0位的编码表示本从片与主片的对应引脚的连接情况。例如,若某从片ICW3的内容为

05H,说明该从片的INT引脚与主片的IR5相连。(4)ICW4也叫方式控制初始化命令字,用于设置8259A的工作方式,当ICW1的IC4位为1时,才设置ICW4,写入A0=1即奇地址端口,格式如图6.16所示。图6.16ICW4的作用2)初始化编程初始化编程是在系统加电之初进行的,由

于8259A内部有7个命令字需设置,而只有两个端口地址,所以在编程过程中,命令字从两个端口地址写入,可以按以下原则进行端口的寻址:(1)必须按照确定顺序,对寄存器进行设置。(2)在命令字中,设置特征位。初始化设置就采用这两种方法,使得4个命

令字从两个端口地址写入。其初始化顺序如图6.17所示。当系统加电后,向8259A偶地址端口中写入一个D4=1的命令字(ICW1),表示8259A进入初始化编程。紧跟ICW1,立即向奇地址端口中写入ICW2、ICW3(若ICW1的D1=0)和ICW4(若ICW1的D0=1)。

8259A无论与8086/8088还是8080/8085芯片配合工作,初始化都必须发送ICW1和ICW2,只有在ICW1中指明需要ICW3和ICW4以后,才发送ICW3和ICW4。一旦初始化以后,若要改变某一个ICWn寄存器中的内容,则必须重新进行初始化编程,不能只写入单

独的一个ICWn初始化命令字。图6.178259A初始化顺序例如,在PC/AT机中8259A采用两片级联方式,主片设定为:上升沿触发、在IR2引脚连接从片、需写入ICW4、非自动结束方式、中断类型码应

设为08H0FH、采用完全嵌套方式、主片8259A端口地址是20H、21H;从片定义为:上升沿触发、级联到主片的IR2引脚、需设置ICW4、非自动结束方式、中断类型码为70H77H、采用完全嵌套方式、从片8259A端口地址是A0H、A1H。初始化过程如下:初始化主

片:MOVAL,11H;置ICW1,上升沿触发、多片级联、写ICW4OUT20H,ALMOVAL,08H;置ICW2,设置中断类型码的高5位OUT21H,ALMOVAL,04H;置ICW3,主片IR2引

脚接从片OUT21H,ALMOVAL,01H;置ICW4,完全嵌套、非缓冲、一般EOI、8086OUT21H,AL初始化从片:MOVAL,11H;置ICW1,上升沿触发、多片级联、写ICW4OUT0A0H,ALMOVAL,70H;置ICW2,设置中断类型码的高5位OUT0A

1H,ALMOVAL,02H;置ICW3,从片标识码,;从片INT引脚连接到主片IR2引脚OUT0A1H,ALMOVAL,01H;置ICW4,完全嵌套、非缓冲、一般EOI、8086OUT0A1H,AL2.操作命令字及其编程1)操作命令字系统初始化完成以后,8259A进入正常

工作状态时,可以在应用程序中随时通过对8259A的操作命令字进行编程,改变8259A的工作方式或读出8259A内部寄存器的内容。8259A的操作命令字有OCW1、OCW2和OCW3。其写入过程与初始化命令字不同,可以不按顺序。8259A是通过不同的端口地址及特征位对这三个操作命

令字加以区分的。(1)OCW1的功能是设置和清除中断屏蔽寄存器IMR的相应位,用于设定对8259A输入引脚IR7~IR0的屏蔽状态。OCW1需写入A0=1即奇地址端口,格式如图6.18所示。图6.18OCW1命令字格式(2)OCW2是常用的命令字,

主要用于设置优先级循环方式和中断结束方式,OCW2需向A0=0即偶地址端口写入,格式如图6.19所示。图6.19OCW2命令字格式中断结束命令是一个常用的命令。PC机上8259A端口地址为20H和21H,以下指令能够发出非自动结束方式中的一般结束方式的结束命令:MOVAL,20HOUT20H,AL

(3)OCW3主要用于设置和撤消特殊屏蔽方式、设置中断查询方式以及发出对8259A内部寄存器的读出命令。OCW3写入A0=0即偶地址端口,格式如图6.20所示。图6.20OCW3命令字格式D4和D3位是特征位,当向偶

地址写入的命令字中D4D3=01时,表示写入的是OCW3。D7:无关位,可设为任意值。D6:ESMM,设置/保持屏蔽方式命令字。ESMM=1时SMM位才有意义。根据SMM位设置屏蔽方式;ESMM=0,保持原来设置的屏蔽方式。D5:SMM,特殊屏蔽方式设置位。与ESMM配合使用,SMM=

1,表示设置特殊屏蔽方式;SMM=0,表示清除特殊屏蔽方式。D2:P,查询命令位,D2=1时表示该OCW3用作查询命令,可以通过软件查询方式获得中断请求的编号。具体方法是:8086/8088标志寄存器中IF设为0,关闭中断。用输出

指令将OCW3写入8259A,随后读8259A,8259A即可将一个查询字送到数据总线上(查询命令字见6.3.2)。D2为0表示非查询方式。D1D0:RR、RIS,读8259A状态功能位。这两位的组合确定对中断请求寄存

器(IRR)还是对中断服务寄存器(ISR)内容的读出。D1D0=10时,表明下一个对偶地址端口的读信号读出的内容是IRR的值;D1D0=11时,下一个对偶地址端口的读信号读出ISR的值。D1=0,这两位无意义。这两位的使用

在D2(P)=0时起作用。2)8259A的读操作编程通过读操作,可将8259A内部的寄存器内容读出。8259A常用的读操作有如下几种(假设8259A的端口地址为20H和21H):(1)读出IRR的值。即先向20H端口写O

CW3=0AH(RR=1、RIS=0),再读20H端口,程序如下:MOVAL,0AH;OCW3=0AH,读IRROUT20H,AL;OCW3写入8259AINAL,20H;读出IRR内容(2)读出ISR的值。即先向20H端口写OCW3=0BH(RR=1、RIS

=1),再读20H端口,程序如下:MOVAL,0BH;OCW3=0BH,读ISROUT20H,AL;OCW3写入8259AINAL,20H;读出ISR内容(3)读IMR的值。随时可用奇地址读IMR的值,并可对其作出修改。如开放IR3、IR5引脚中断请求,保持其余引脚状态不

变,程序如下:INAL,21H;读IMRANDAL,D7H;开放IR3、IR5中断OUT21H,AL;修改IMR若屏蔽IR3和IR4引脚中断请求,保持其余引脚状态不变,程序如下:INAL,21H;读IMRORAL,18H;屏蔽IR3、IR4中断OUT21H,A

L;修改IMR(4)读查询字(根据查询状态字,可读出最高级别的中断请求IRn):先向20H端口写OCW3=0CH(P=1),再读20H端口。程序如下:MOVAL,0CH;OCW3=0CHOUT20H,AL;OCW3写入8259AINAL,20H;读出查询字内容6.3.48259A应用举例图6.

21所示为8259A在PC/XT机中的应用,从图6.21可以看出,中断请求信号引脚除IR2外均被系统占用。现假设某外设的中断请求信号由IR2端引入,要求编程实现CPU每次响应该中断时屏幕显示字符串“WELCOME!”,响应

5次中断后,程序结束。图6.218259A在PC/XT机中的连接已知主机启动时8259A中断类型码的高5位初始化为00001,故IR2的类型码为0AH(00001010B);8259A的中断结束方式,初始化时设置为非自动结束,即需

要在中断处理程序中发EOI命令;8259A的端口地址为20H和21H。程序如下:DATASEGMENTMESSDB'WELCOME!',0AH,0DH,'$'DATA1DB0DATAENDSCODESEGMENTASSUMECS:COD

E,DS:DATASTART:MOVAX,SEGINT2MOVDS,AXMOVDX,OFFSETINT2MOVAX,250AHINT21H;置中断向量表CLI;关中断INAL,21H;读中断屏蔽寄存器ANDAL,0FBH;开放IR2中断OUT21H,AL

STIMOVAX,SEGDATA1MOVDS,AXLOOP2:MOVAL,DATA1;等待中断CMPAL,5JBLOOP2CLIINAL,21HORAL,04H;屏蔽IR2中断OUT21H,ALSTIMOVAL,0MOVAH,4C

HINT21H;------------------------主程序结束,中断处理程序开始INT2:PUSHAXPUSHDSPUSHDXSTIMOVAX,DATA;中断处理子程序MOVDS,AXMOVDX,OFFSETMESSMOVAH,0

9INT21H;显示每次中断的提示信息MOVAL,20HOUT20H,AL;发出EOI结束中断INCBYTEPTRDATA1POPDXPOPDSPOPAXIRETCODEENDSENDSTARTEND

小橙橙
小橙橙
文档分享,欢迎浏览!
  • 文档 25747
  • 被下载 7
  • 被收藏 0
相关资源
广告代码123
若发现您的权益受到侵害,请立即联系客服,我们会尽快为您处理。侵权客服QQ:395972555 (支持时间:9:00-21:00) 公众号
Powered by 太赞文库
×
确认删除?