微机中断系统和DMA控制方式_第1页
微机中断系统和DMA控制方式_第2页
微机中断系统和DMA控制方式_第3页
微机中断系统和DMA控制方式_第4页
微机中断系统和DMA控制方式_第5页
已阅读5页,还剩32页未读, 继续免费阅读

下载本文档

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

文档简介

1、第六章 微机中断系统和DMA控制方式内容提要: 1中断的基本概念; 28086系统的中断源、矢量中断; 38259A的功能、结构特点、中断管理方式、编程; 48259A的应用举例; 58259A编程实验。 学习目标: 1掌握8086内部中断的特点; 2掌握中断的基本概念,掌握对外部中断响应的区别; 3深刻理解中断类型码、中断矢量和中断向量表的概念,以及如何对中断服务程序寻址; 4了解8259A的编程结构,理解8259A工作方式、有关命令和初始化编程及其在PC机中应用。 难点:8259A工作方式、命令的理解。 学时:6 §1 中断系统概述一、 中断的基本概念1. 什么是中断所谓中断,是

2、指在执行当前程序时,由于外部事件和内部事件,使得中断正在执行的程序,转到为外部和内部事件服务的程序中去执行。当服务程序执行完毕,再返回到刚才被中断的程序断点处,继续执行。通常,上述被中断而后又被恢复执行的程序叫做主程序,而为外部和内部事件服务的程序叫做中断服务程序。主程序被中断本身并没有什么意义,主程序中断后,转去执行服务程序,才是采用中断技术的真正原因。主程序STI ;开中断,允许CPU响应中断请求中断服务程序中断请求2. 中断类型 1 硬中断:也称为外部中断,它可分为两种: 一种是由中断电路发生的中断请求信号在CPU的INTR端引起的中断,也称可屏蔽中断。 n 可屏蔽中断:凡是微处理器内部

3、能够屏蔽(IF=0)的中断。 另一种是CPU的NMI端引起的中断,也称不可屏蔽中断。 n 不可屏蔽中断:凡是微处理器内部不能够屏蔽(不受IF状态影响)的中断。 2 软件中断 也称内部中断,是指程序中使用INT指令引起的中断。 3. 中断源引起程序中断的事件称为中断源。中断源有:I. 外设中断:如外设请求以中断方式与交换数据。II. 硬件故障中断:如电源掉电引起中断。III. 指令中断:如执行INT 21H指令引起的中断。IV. 程序性中断。如由于程序员的疏忽或算法上的差错,使程序在运行中出现错误而引起的中断。4. 中断识别CPU响应中断后,只知道有中断请求但不知道是哪一个中断源,寻找中断源的操

4、作过程称为中断识别。中断识别的目的就是形成该中断服务程序的入口地址。CPU识别中断的方法有两种:向量中断和程序查询中断。向量中断指在CPU响应中断后,由中断控制器将服务程序入口地址送到CPU。 查询中断指采用软件或硬件查询技术来确定发出中断请求的中断源。二、8086系统的中断源 8086CPU总共允许有256级中断,按产生的原因,系统有如下中断源:     1)不可屏蔽中断NMI 边沿触发,正跳沿有效,此类中断不受中断允许标志位的限制,也不能用软件进行屏蔽。当NMI端有一个上升沿触发信号时,CPU就会在结束当前指令后,自动从中断向量表中找到类型

5、2中断服务程序的入口地址,并转去执行。NMI是一种比INTR优先级高的中断请求。 2)可屏蔽中断INTR 电平触发,高电平有效,该信号若为高电平,表示I/O设备向CPU发出中断申请,若IF=1,CPU允许中断,就会在结束当前指令后响应该外设的中断请求,进入可屏蔽中断的处理程序。 3)内部中断 内部中断是通过软件指令或软件陷阱而调用的非屏蔽中断(指不受IF状态影响),这是由程序运行的状态和指令代码执行后自动启动而不是由外界中断请求来调用的。 内部中断按其性质又可分为软件陷阱和软件中断。软件陷阱是指:在某些指令执行期间FR的标志位满足设定的条件或CPU的状态符合某种情况从而触发CPU内部逻辑去启动

6、所需要的中断服务子程序,如除法出错中断和单步中断。软件中断是指通过指令来调用中断服务子程序。 类型:8086的内部中断有溢出中断、除法错中断、断点中断、软中断及单步中断。 除法溢出中断 当除数为0或除法结果商超出规定存放范围时,此时将自动产生类型号为0的内部中断。注意点:没有对应的中断指令。 溢出中断 溢出中断是通过INTO中断指令实现的。该指令跟在有符号数的算术运算指令以后,当在程序执行过程中,遇到INTO指令,且此时溢出标志OF=1时,则产生一个中断类型为4的中断,并转入溢出中断处理;若OF=0,INTO指令不起作用。 例:MOV BL,126 MOV AL,5 ADD AL,BL 执行到

7、此指令后只能将OF置1 INTO 执行到此产生中断 软中断 是系统以软中断指令INT n方式实现的,n为中断类型号(0255),5n255,04中断类型号作为专用中断的类型号,不允许用户修改; 53FH为系统备用中断,一般不允许用户改作其它用途,并且其中许多中断已被系统开发使用,如10H1FH为ROMBIOS,21H为DOS功能调用,40HFFH为用户可用的中断,用户可用INT n使用,也可作为可屏蔽中断的类型号。 单步中断 为了用户调试上机的方便,当TF=1时,则在每执行一条指令后,可以产生一个类型号为1的中断。 在中断处理程序的控制下,可以给出有关寄存器的内容或状态标志位的状态,以便了解程

8、序的执行情况。 断点中断 断点中断也是提供给用户的一种程序调试手段。在相应的程序语句后设置断点,就可以分段落调试程序,从而避免单步调试的冗长和繁琐。用DEBUG调试程序时,可用G命令设置断点。 设置断点,实际上就是在用户程序的指定点(即对应的某一个存储单元,该单元一定是某条指令的第一个字节存储单元)用单字节的中断指令INT 3来代替程序中原有指令的第一个字节代码(操作码),同时把原有指令第一个字节操作码保存起来。 当执行到断点位置时,就会执行中断指令INT 3,进入类型码为3的中断服务子程序,显示一系列寄存器值和一些重要信息,供用户判断。 断点中断返回前,中断服务程序还负责恢复设置断点时原程序

9、中被INT 3指令所替换的原来指令的第一个字节的操作码。然后修改断点地址,返回主程序再从被恢复的那条指令继续执行三、中断向量与中断向量表1、 什么是中断向量实模式下,中断服务程序的入口地址(中断服务程序首指)就是中断向量。由于中断服务程序是预先设计好并存放在程序存储区,因此,中断服务程序的入口地址,由两部分组成:服务程序的段基址CS(2字节)和服务程序的偏移地址IP(2字节)。2、 中断向量表n 定义:将所有的中断处理程序的入口地址都集中在一起,构成一个中断矢量表。 n 特点:每个入口地址占4个字节,高地址的2个字节单元存放中断处理程序的段地址,低地址的2个字节单元存放中断处理程序的段内偏移地

10、址。 n 例:设某中断源的类型码为13H,该中断源的中断服务程序的入口地址为FF00H:2200H,试画出中断矢量表。 解:n=13,则4n=13H*4=4CH 中断矢量表如下:当中断类型码为n时,则中断向量表指针为4n,则有:注意:实模式下,规定把存储器的00003FFH共1024个地址单元作为中断向量存储区,n 中断类型号的获取获取中断号的方法与中断类型有关,不同的中断类型获取他们中断后的方法不同。可屏蔽中断INTR的中断号,由中断控制器8259A提供。指令中断INT nH的中断号(nH)是由中断指令直接给出的。不可屏蔽中断NMI以及内部一些特殊中断的中断号是由系统预先设置好的,如NMI的

11、中断号为02H,非法除数的中断号为0H等。 n 8086中断处理流程 CPU在获得中断类型号后,先自动将标志寄存器入栈,并自动将IF和TF清零; 然后自动将当前代码段寄存器CS和指令指针寄存器IP内容入栈,并根据中断类型号n从中断矢量表中取出中断处理程序的段地址送入CS;再从中断矢量表中取中断处理程序的偏移地址值送入IP,从而实现向中断处理程序的转移; 在中断处理程序完成后,用中断返回指令IRET恢复断点,从栈中弹回断点的偏移量和段地址值到IP和CS中,并恢复FR的内容,从而实现了向被中断程序的返回。 注意点:在处理程序的开始用开中断指令打开中断,以便实现中断嵌套。 四、中断向量的装入与修改1

12、 中断向量的装入单板微机中,用户开发的中断系统在编写中断服务程序时,其中断向量由用户负责装入。 例中断类型号为60H,中断服务程序的CS:SEG_INTR,IP:OFFSET_INTR(006DH),则填写中断向量表的程序段为:方法一:CLI ;将标志位IF置0,屏蔽可屏蔽中断 CLD ;将标志位DF置0,使串操作过后地址增加MOVE AX,0 ;将寄存器清0MOVE ES,AX ;给ES赋值为0,中断向量表地址从00H开始MOV DI,4*60H ;设置STOSW指令的目标地址为服务程序的入口地址MOV AX,OFFSET_INTR ;将服务程序的IP赋给AXSTOSW ;将AX中的IP传送

13、到入口地址ES:DI的前2个字节MOV AX,SEG_INTR ;将服务程序的CS赋给AXSTOSW ;将AX中的IP传送到入口地址的前2个字节STI ;将标志位IF置1方法二:MOV AX,00H MOV ES,AXMOV BX,60H*4 ;60H*4放入BX寄存器MOV AX,06DH ;将中断服务程序的IP放入AX寄存器MOV ES:BX,AX ;在入口地址的低2个字节写入IPPUSH CS ;代码段地址入栈POP AX ;获取代码段的地址MOV ES:BX+2,AX ;在入口地址的高2个字节写入CS2 中断向量的修改在微机中,即使是系统尚未使用的中断号,也不由用户直接装入中断向量,而

14、是采用中断向量修改的办法。修改中断向量并非修改中断,而是修改同一中断的中断服务程序入口地址。中断向量修改的方法是利用功能调用INT 21H的35H号功能和25H号功能。其入口参数如下:INT21H的35号功能:功能:从向量表中读取中断向量入口参数:AH=35H,AL=中断号出口参数:ES:BX=读取的中断向量段基址:偏移量INT21H的25号功能:功能:向向量表中写入中断向量入口参数:AH=25H,AL=中断号DS:DX=要写入的中断向量的段基址:偏移量出口参数:无n 中断向量的修改分3步进行:(另见P186)1)用35H号功能,获取原中断向量,并保存在字变量中。实现程序段:MOV AH,35

15、HMOV AL,nHINT 21HMOV OLD_OFF,BXMOV BX,ESMOV OLD_SEG,BX2)用25号功能,设置新中断向量。实现程序段MOV AH,25HMOV AL,nHMOV DX,SEG INTRMOV DS,DXMOV DX,OFFSET INTRINT 21H3)新中断服务程序完毕后,利用25H号功能恢复原中断向量。MOV AH,25HMOV AL,nHMOV DX,OLD_SEGMOV DS,DXMOV DX,OLD_OFFINT 21H五、中断优先级排队方式及中断嵌套1、中断优先级当系统中同时有几个中断源请求中断,而在一个时刻只能响应定出一个中断请求,为此,要进

16、行排队。根据任务的轻重缓急,给每个中断原指定一个优先级别。安排了优先权后,当有多个中断请求时,首先只响应并处理优先级别最高的中断申请,处理完了最高优先等级的中断之后,再回来处理次高优先级的中断,直到把同时申请的几个中断请求处理完毕。很明显,采用优先级排队的管理方式,可以使系统中那些需要实时处理的任务得到及时服务。整个中断系统的中断优先级如下.最高级:内部中断与异常软件中断外部不可屏蔽中断(NMI)最低级:外部可屏蔽中断(INTR)可屏蔽硬件中断的优先级排队是由8259A采用硬件方法实现的,即由8259A的中断请求输入引脚(IR)的编号决定,连到IR0上的中断请求优先级最高,连到IR7上的中断请

17、求优先级最低。2、中断嵌套中断嵌套:CPU暂时中断当前正在运行的优先级较低的中断服务程序,去处理优先级更高的中断源,待处理完以后,再返回到被中断了的中断服务程序继续执行。完全嵌套方式:CPU只响应优先级别更高的中断源而屏蔽掉相同或更低优先级的中断源,这种方式被称为完全嵌套方式。中断嵌套的实质是中断中断服务程序,而不是中断主程序。其实质在于使那些更紧急的优先级高的中断源及时得到处理和服务。§2 8259A可编程中断控制器及其应用可编程中断控制器8259A作为中断系统的核心器件,协助管理外部中断,是一个十分重要的芯片。要了解外部硬件中断系统,不可不了解8259A。下面从8259A的结构、

18、功能、工作方式、初始化以及应用等方面进行讨论。一、 8259A主要功能: 具有8级中断优先级控制,通过级连可扩展至64级中断优先级控制; 每一级中断都可以屏蔽或允许; 在中断响应总线周期,8259A可提供相应的中断类型码; 有多种中断管理方式,可通过编程选择。 二、 8259A引脚和结构图 8259A芯片引脚1. 8259A的芯片引脚(见图):片选信号,输入,低电平有效,当 =0时,8259A被选中。 、 :读、写命令信号,输入。            D7D0  010CPU写命令控制字到82

19、59A  001CPU从8259A读状态字/数据/中断类型码  D7D0:8位双向三态数据总线,传送命令控制字、状态字和中断类型码和数据。 IR7IR0:8根中断请求输入线。 INT:中断请求输出线。 :CPU发给8259A的中断响应信号,输入,低电平有效。在级联系统中,仅主片的  信号被连接。A0:片内地址选择输入线,一片8259A只占两个I/O端口地址,一个为奇地址,另一个为偶地址。 CAS0CAS2:级连线,8259A单片使用时无效。采用级连方式时,作为主片的8259A,它们是输出线(/ =1);作为从片的8259A,它们是输入线(/ =0)。 / :级连/

20、允许缓冲信号,双向,低电平有效。在缓冲方式中,该引脚为输出线,控制数据总线缓冲器的接收或发送,作 用:=0时,表示允许8259A通过缓冲器输出;=1时,表示CPU写8259A。级联时主从片由ICW4的M/S位确定,当8259A工作于非缓冲方式时,该引脚为输入线 ,当 =1的是主片, =0的是从片。 INT:中断请求信号,输出,高电平有效。 IR0IR7:外设中断请求输入端,高电平有效。从IR0IR7上输入的中断请求信号被命名为IRQ0IRQ7。 Vcc、GND:+5V电源和地线。2. 内部结构(见图)PR中断请求寄存器IRR 8位,每一位对应一个I/O设备(即IR0IR7),用来记录发生中断请

21、求的外设。当某一外设(I/O设备)发出中断请求信号IRQ时,对应位被置“1”。简言之:用来存放要请求服务的所有中断请求信号。 中断服务寄存器ISR 8位,用来存放正在被服务,包括尚未服务完毕而中途被别的中断打断了的所有中断级,对应位置“1”。 优先权判决电路PR 用来识别各中断请求信号的优先级别。当多个中断请求信号同时产生时,由判优电路判定哪一个中断请求具有最高优先权,若有中断正在被服务,则还需与ISR的当前中断服务优先级相比较,以决定是否将8259A的中断申请线INT上升为高电平(即发出请求)。一般处理原则是允许高级中断打断低级中断,而不允许低级中断打断高级中断,也不允许同级中断互相打断。中

22、断屏蔽寄存器IMR 8位,对IRR起屏蔽作用,用来存放对各级中断请求的屏蔽信息。当该寄存器中某一位置“1”时,表示禁止这一级中断请求进入系统,通过IMR寄存器可实现对各级中断的有选择的屏蔽。控制逻辑 用于向8259A内部其它部件发控制信号;外部向CPU发INT信号;接收CPU发来的 信号;控制8259A进入中断服务状态。 控制逻辑是8259A全部功能的核心,包括一组方式控制字寄存器和一组操作命令字寄存器,以及相关的控制电路。 数据总线缓冲器 8位双向三态缓冲器,是8259A与CPU之间数据接口。当CPU对8259A进行读操作时,数据总线缓冲器用来传输从8259A内部读至CPU的数据/状态信息和

23、中断类型码,写操作时由CPU向8259A内部写入控制命令字。 读/写控制逻辑 用于控制对8259A的读、写操作。 控制信号有: 、 、 、A0共同控制,完成规定的操作。 8259A芯片内可写的寄存器有:各种命令寄存器,可读的寄存器有:IRR、ISR、IMR等状态寄存器。 级连缓冲器 多片8259A可级连使用,最多可以组成64级中断优先级控制,此时一片8259A作主片,另外18片作从片,主从片的CAS0CAS2并接在一起,作为级连总线。 在中断响应过程中,主片的CAS0CAS2为输出线,从片的CAS0CAS2为输入线。在第一个 负脉冲结束时,主片把被响应的中断请求的从片编码送入CAS0CAS2级

24、连总线。从片接收后,将主片送来的编码与自己的编码相比较,若相同,表明从片被选中,则在第二个中断响应总线周期把中断类型码送至D7D0,供CPU读取。 三、 8259A中断管理方式8259A提供了多种中断处理的管理工作方式,如图5-5所示。这些工作方式使8259A的使用范围大大增加。其中,有些方式是经常使用,有些方式很少用到,我们对常用的工作方式要重点加以注意。 图5-5 8259A中断管理工作方式 1、中断触发方式中断触发方式,实际上是中断请求的启动方式,即表示有外设申请中断的方式。8259A有两种中断请求的启动方式。 1)边缘触发方式IR0-IR7输入线出现由低电平到高电平的跳变,表示有中断请

25、求。PC微机采用边沿触发这种方式。 2)电平触发方式IR0-IR7输入线出现高电平时,表示有中断请求。2、中断级联方式8259A可以单片使用,也可以多片使用,二片以上使用时就存在级联问题。所谓级联问题分两个方面,从主片来看它的哪一根或哪几根中断申请输入线IR上有从片连接;从从片来看它的中断申请输出线INT与主片的哪一根中断申请输入线IRi相连。8259A可以处理8级级联的硬件中断。3、中断屏蔽方式8259A的中断屏蔽是指对外设中断申请的屏蔽,即允许还是不允许外设申请中断。而不是对已经提出的中断申请响不响应的问题。8259A有两种中断申请的屏蔽的方式。1)常规屏蔽方式是通过8259A屏蔽寄存器写

26、入8位屏蔽码来屏蔽和开放8个中断申请线(IR0-IR7)上的中断申请,要屏蔽哪个中断申请,就将屏蔽码的相应位置1;不屏蔽的,则相应位置。例如屏蔽码11111011B,表示仅开放IR2,其他均屏蔽。常规屏蔽方式是最常用的屏蔽方式。2)特殊屏蔽方式用于开放的一级中断申请。允许比正在服务的中断级别低或高的中断申请,而屏蔽同级的中断在此申请中断。这种方式很少使用。4、中断优先级排队方式8259A提供了三种中断优先级排队方式:完全嵌套方式、特殊完全嵌套方式和优先级轮换方式。其中,最常用的是完全嵌套方式,其要点是,当有多个“中断请求”同时出现时,是按中断源优先级别的高低相应中断,而在响应中断后,执行中断服

27、务程序时,能被优先级高的中断源所中断,但不能被同级或低级的中断源所中断。 特殊完全嵌套方式和完全嵌套方式基本相同,所不同的是在特殊完全嵌套方式下,当执行某一级中断服务程序时,可响应相同级的中断请求,从而实现对同级中断请求的特殊嵌套。特殊全嵌套方式用于多片级联。优先级轮换方式很少使用。5、中断结束方式EOI(End of Interrupt)当一个中断服务结束后,CPU可以利用中断结束命令EOI通知8259A。以便复位ISR的相应位。中断结束的实质是使ISR中置1的位清0,即撤销该位相应的中断级,以便让低优先级中断源能够申请中断。8259A提供自动结束和非自动结束两种方式。1)自动结束方式是中断

28、响应之后,在中断回答周期,就自动复位了该中断源在ISR寄存器中被置1的位。因此,在中断服务程序中,根本就不需要向8259A发中断结束命令(OCW2),去清0置1的位。故称自动结束。此方式很少使用。2)非自动结束方式是ISR中被置1的位,在服务完毕后,不能自动复位,而必须在中断服务程序中,向8259A发中断结束命令,才能复位,故称为非自动结束。非自动结束方式是常用的方式,其中又有两种命令格式:a.常规结束命令该命令使ISR中优先级最高的置1位清0(复位)。又称不指定结束命令,因为,在命令代码中,并不指明是哪一级中断结束,而是隐含的暗示使最高优先级结束,其命令代码是20H。常规中断结束命令只用于完

29、全嵌套方式。b.指定结束命令该命令明确指定ISR中那一个置1的位清0,即服务完毕,具体指定哪一级中断结束。其命令代码是6XH,其中X=0-7,表示与IR0-IR7相对应的8级中断。指定结束命令是一个通用的结束命令,可用于各种中断优先级排队方式。四、 编程结构在8259A开始正常工作之前,必须用初始化命令字建立起8259A操作的初始状态。8259A的初始化是通过CPU对8259A送4个初始化命令字ICW1、ICW2、ICW3、ICW4以及3个操作命令字OCW1、OCW2和OCW3。初始化命令字是在系统启动工作时由初始化程序设定,一旦设定后就不再更改。操作命令字则是由应用程序来设置,它可以对中断处

30、理过程作动态的控制。在系统运行中,OCW允许被多次更改。由于8259A只占用两个I/O端口地址,但要写入四个方式控制字和三个操作命令字,因而其各寄存器的读写是I/O地址和特征位及顺序配合完成的。1. 初始化命令字:有ICW1ICW4四个。4个初始化命令是用来对8259A的中断管理方式和中断号进行设置,包括中断触发方式、级联方式、排队方式、以及结束方式。另外,中断屏蔽方式是一种默认值,初始化时即进入常规屏蔽方式,因此,在初始化命令中不出现屏蔽方式的设置。若要改变常规屏蔽方式为特殊屏蔽方式,则初始化之后,执行操作命令OCW3。ICW1芯片控制初始化命令字n 写入条件: =0、A0=0(对应偶地址)

31、、特征位的D4=1。n 各位作用: D0:D0=1,要写ICW4;D0=0,不需要写ICW4,对于8086CPU,要写ICW4; D1:D1=1,单片方式,初始化过程中不用设置ICW3; D1=0,级连方式,必须设置ICW3; D2:调用地址间隔。D2=1,调用地址间隔为4;D2=0,调用地址间隔为8。对8086CPU系统无效;D3:D3=1,中断请求输入线IR0IR7为高电平有效的电平触发方式,此时不用边沿检测;D3=0,中断请求输入线IR0IR7为上升沿有效的边沿触发方式,即只有当IR出现正跳变时才被识别并送入IRR中; D5D7:8086CPU系统无意义,可全写“0”。 ICW2设置中断

32、类型号初始化命令字n 写入条件:跟在ICW1之后, =0、A0=1(对应奇地址)。 n 各位作用: D7D3:规定中断类型码的高五位(T7T3); D2D0:低3位的值由外设所连接的IR0IR7引脚编号决定,并由8259A自动填写。可全写0。n 例:设定中断向量08H0FH或70H77H,则在D7D3只填08H或70H的高5位00001B或01110B,与低3位一起组成中断向量。ICW3标识主片/从片初始化命令字n 写入条件:跟在ICW2之后, =0、A0=1(奇地址端口)且ICW1的D1=0,使用在级连方式。n 主8259A ICW3各位作用:若某个IR上接有8259A,则对应的位写“1”,

33、否则写“0”。n 从8259A ICW3各位作用:D2D1D0:表示接入主8259A的IR端的编码;D7D3:无意义,全填0。ICW4方式控制字初始化命令 n 写入条件:跟在ICW2之后(若无ICW3)或者跟在ICW3之后(若有ICW3),特征位D7D5均为0, =0、A0=1(奇地址端口)且ICW1的D0=1。 n 各位作用: D4:D4=1,特殊完全嵌套方式,一般作为级联时主片的方式,工作在该方式时与工作在一般完全嵌套方式仅一点不同:在中断处理过程中,对优先级相等的同级中断也给予响应,能实现同级中断嵌套;D4=0,一般完全嵌套方式,一般作为级联时从片的方式,或单片使用时的方式; D3:D3

34、=1,缓冲方式,是指8259A和DB之间需加一缓冲器(提高DB带负载能力),此时 / 作为输出线 ,用以锁存或开启缓冲器; D3=0,非缓冲方式, / 作为主从片选择 。 D2:D2=1,在D3=1时(缓冲方式),主片; D2=0,在D3=1时(缓冲方式),从片。 在D3=0时,D2无意义。 注意:BUF位用来表明8259A是否采用缓冲方式,如果BUF(D3)位为1,表示采用缓冲方式,这时双功能信号线有效,=0,表示允许缓冲器输出,=1表示允许缓冲器输入。这种情况下由M/S(D2)位定义主从关系,M/S=1表示该片是主8259A,M/S=0表示该片是从8259A。如果BUF(D3)位

35、为0,表示不采用缓冲方式,这时双功能信号线有效,=0表示该片是从8259A,=1表示该片是主8259A,这种情况下M/S位无效。D1:D1=1,自动中断结束方式(AEOI); D1=0:非自动中断结束方式。当任何一级中断处理完毕,CPU应向8259A回送结束命令(EOI),以便8259A将ISR寄存器中相应位清“0”,标志一级中断处理过程完全结束。自动EOI方式是在中断响应结束后,自动将ISR相应位清“0”,CPU不向8259A回送任何信息。要慎用,易出现低级中断打断高级中断的情况。 D0:D0=1,8259A用于80X86CPU系统; D0=0,8259A用于非80X86CPU系统。 ICW

36、1ICW4写入8259A后,IR0IR7优先级固定不变,优先级由高到低的顺序依次是:IR0、IR1、IR2、IR7,清零ISR、IMR,处于普通屏蔽方式,对A0=0的端口地址执行读操作时,读取的是IRR的状态。 2. 操作命令字有:OCW1、OCW2、OCW3三个操作命令字在应用程序中被编程,对设置的次序没有要求,但对使用的端口地址有规定。OCW1(A0=1)用于实现中断屏蔽,也称屏蔽操作字,各位分别对应于IR0IR7。被写入8259A中断屏蔽寄存器IMR中。 各位作用:为1,屏蔽对应的中断请求;为0,不屏蔽对应的中断请求。OCW2(A0=0)用于控制中断结束、优先权循环等。 n 写入条件:A

37、0=0并且特征位D4D3=00。n 各位作用: D7:D7=1,中断优先顺序是循环轮换的,工作在循环优先级; D7=0,中断优先顺序是固定不变的,工作在固定优先级。 D6:D6=1,D2D0位将指明一个中断级; D6=0,D2D0位无意义。 D5:D5=1,执行中断结束操作,(用于非自动中断结束方式)用作中断结束命令EOI,8259A接到中断结束命令后,将ISR中对应的或指定的置1位清0;D5=0,不执行中断结束操作。 D2D0:(D6=1才有意义)指明结束哪一位的中断或设置哪一位优先级为最低。 OCW2有8种组合方式,各有不同作用,如下表: OCW3 用来控制8259A的中断屏蔽和读取寄存器

38、的状态。 n 硬件条件:A0=0且特征位D4D3=01,D7=0。 n 各位作用: D4D3:01,OCW3的标志位; D2D1D0:名称分别是P、RR和RIS,组合功能如下: D6D5:名称分别是ESMW、SMM,组合功能如下:     n 说明: I. 对8259A A0=1的端口地址执行读操作,可读取IMR状态(随机可读);对8259A A0=0的端口地址执行读操作,可读取IRR状态或ISR状态(先写ICW3,后读)。 II. 在读IRR状态或ISR状态前,必须输出对应的OCW3,但只要读操作状态操作与前一次相符,则不必在读IRR或读ISR状态前输出OCW3

39、; III. 8259A完成了初始化以后,自动处于读IRR状态; IV. 8259A为查询中断提供了查询命令(OCW3中的D2=1时,下一个CPU读指令为查询命令),使用查询命令前,CPU首先必须关中断。一旦CPU发出查询命令,8259A把IN指令的 脉冲当作响应信号,如有中断请求,就使ISR相应位置1,并将下列查询字送到DB上,供CPU从A0=0的端口读取。 Ø 查询字各位的内容: D7:D7=1,表示8259A有中断请求,D7=0,则无中断请求; D2D1D0:请求中断服务的最高优先级的IRQ编码(在D7=1时,才有意义); D6D3:无意义。 V. 所谓特殊屏蔽方式,即除了被I

40、MR屏蔽的中断源外,8259A对任何级别的中断请求都能响应,即使对某些比正在处理的中断级别低的中断请求也能响应。3个OCW命令中,OCW1的中断屏蔽/开放和OCW2的中断结束常用,OCW3很少使用。§3 8259A应用举例一、8259A单片连接和编程1 初始化流程初始化命令字共有四个 ICW1ICW4,通常是在系统开始运行时,由程序写入到8259A的各个命令寄存器中,以保证在整个系统运行时,能够工作在所希望的状态中。在四个命令字中,ICW1和ICW2适合于任何需要使用8259A的系统,而ICW3和ICW4则是有选择地使用。8259A初始化的流程如图所示。n 8259A为单片时,应对I

41、CW1、ICW2和ICW4初始化命令字。在级联系统中,初始化的命令字有ICW1、ICW2、ICW3和ICW4。2 8259A与PC/XT8259A在系统中占用二个端口地址,用A0寻址。这四个命令除ICW1的端口地址的A0位为0外,其它三个A0均为1。这表明ICW2ICW4的端口地址为同一个。因此,在实际设置命令字时,区别ICW2ICW4的唯一办法,就是按照从ICW2到ICW4的排列顺序进行初始化的设置。否则,将会出现张冠李戴的错误。下面是IBM PCXT中 ROM BIOS关于8259A初始化设置程序段。在IBM PCXT机中,ICW1的端口地址为20H,ICW2ICW4的端口地址均为21H。

42、由于IBM PCXT中的8259A是单片系统,因此,不需对ICW3设置。具体程序段如下:          INTA00  EQU  20H      ;8259A的端口        INTA01  EQU  21H      ;地址;.         ;.        MOV    AL,13H ;上升沿,单片,设置ICW4       

温馨提示

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

评论

0/150

提交评论