微机原理 第六章中断系统_第1页
微机原理 第六章中断系统_第2页
微机原理 第六章中断系统_第3页
微机原理 第六章中断系统_第4页
微机原理 第六章中断系统_第5页
已阅读5页,还剩95页未读 继续免费阅读

下载本文档

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

文档简介

1、第六章 中断系统,本章主要知识点: 1、中断的基本概念 2、8086中断管理 3、8086中断向量系统 4、8259可编程中断控制器的功能与使用方法 本章学习的重点: 1、8086中断管理 2、8086中断向量系统 3、8259的控制字 4、8259的工作方式及初始化命令和操作命令的基本编写方法,6.1 中断系统基本概念,什么是中断? 定义:中断就是指当CPU正在执行程序时,外设(或其它中断源)向CPU发出请求,CPU暂停当前程序的执行,转向该外设服务(或称中断服务)程序,当中断服务程序运行结束后,返回原程序继续执行的过程。 实现中断服务的两个条件:如何引起中断?如何处理中断的请求? 中断服务

2、的实现一般需要经历下述过程: 中断请求中断响应断点保护中断源识别中断服务断点恢复中断返回 中断的作用就是完成或实现上述的过程!,中断过程示意图6-1,中断嵌套,图 6.2 代码段内中断过程示意图,6.1.1 中断控制系统的作用,1、分时处理(按规定的时间处理某个过程) 2、故障处理(对系统运行过程中出现的特殊情况及时给予处理,例如除数为0时) 3、实时处理(对系统有特殊要求的部分需要在整个运行过程中实时处理,了解系统的运行状态),6.1.2 中断源,1外部设备请求中断:系统外设所发出的中断(外部设备提出的实时处理请求)请求。 2故障请求中断:同机器硬件错误有关的中断系统称谓硬件故障中断。 3程

3、序性中断:与用户程序有关的中断,统称为程序性中断(如DOS中断等)。,6.2 中断的处理过程(重点掌握内容),处理一个中断的过程,就是如何处理以下一些基本问题的过程: 1)如何产生中断输入信号(请求中断)。 2)如何识别中断源。 3)如何把控制转给中断服务程序。 4)如何保护和恢复中断的现场。 5)如何识别优先级较高的中断。 6)如何开放和关闭中断。 也就是说如何实现图6-1所示的过程,6.2.1 中断请求与中断屏蔽,1中断请求的定义:用某种信号通知CPU指明某个外设正在请求,需要CPU中断现行程序的执行(系统能识别出是那个设备或事件要求中断)。 2中断请求的条件: (1)外设具有提出中断请求

4、功能; (2)CPU允许该外设发中断请求。 3中断屏蔽:当此触发器在程序控制下,使触发器输出端置“1”时,允许中断(EI),若触发器输出端置“0”时,则关闭中断(DI)。(通过软件可以实现是否容许中断,既:可以有中断,也可以没有中断),6.2.2 中断优先级排队,问题的提出:如果有几个外设同时有中断请求时CPU如何处理? 1中断排对:当系统有2个或2个以上的中断时,需按中断的紧急程度排队,最紧急的排序最高,依此排列,称中断优先排队。 2、中断优先级:当CPU正在处理一个中断时,能响应更高级别的中断请求,而暂时停止正在执行的中断服务,既中断可以嵌套(中断服务程序中还可以有中断,如图6.1中的中断

5、服务子程序2就为中断嵌套)。 3单级中断处理和多级中断处理(中断嵌套):单级中断处理不允许其他设备再中断CPU的程序;多级中断处理允许优先级高的中断打断优先级低的中断服务程序。,图6-3 同时中断请求的处理方法,图6-4 8个以下的中断结构 图6-5 8个以上的中断结构,多于8个中断源的中断的硬件电路结构,3中断排队与中断源的识别 (1)程序查询识别(软件查询法) (2)单线串行顺序链识别(硬件查询法) (3)中断向量法识别,硬件查询法(1) 中断优先权排队电路, 可用硬件编码器和比较器组成的优先权排队电路,图6-6硬件优先权排队电路,硬件查询法(2) 链式优先权排队 电路也称菊花链,将所有的

6、中断 源排成一个链。 各中断源在链中 的前后顺序是根 据中断源优先级 别的高低来排 列。排在链前面 的优先级最高。,图6-7硬件优先权排队电路,6.2.3 CPU对中断的响应(中断向量识别法),1中断向量识别法的响应的方法 1)CPU中断响应的条件 (1) 发出中断请求信号 (2)设置中断屏蔽触发器,当此触发器为“1”时,允许外设的中断请求送出至CPU。 (3)CPU处于开中断状态。 (4)CPU在一条现行指令结束之后响应中断。,2)CPU对中断响应的过程(重点掌握内容) (1)关中断-响应中断后,首先发出中断响应信号,内部自动完成关中断操作(本级中断源) 。 (2)保存断点-响应中断后,停止

7、下一条指令的执行,把当前相关寄存器的内容压入堆栈(必须保存IP、CS,CPU自动完成此操作,为中断返回做好准备)。 (3)给出中断入口地址,转入相应的中断服务程序。 (4) 恢复现场-完成中断服务后,将原来保存的现场信息从堆栈弹出,恢复CPU内部相关寄存器的内容。 (5)开中断与返回-为使CPU能再次响应中断,在中断服务程序的最后执行开中断,同时紧跟一条返回指令,从堆栈弹出IP、CS(自动完成),恢复原程序的执行。,图6-8 中断服务程序框图与程序示例,6.3 8086/8088中断系统结构,6.3.1 8086/8088CPU的中断结构体系 1、8086的中断源 8086系统的中断源分为外部

8、中断(中断源来自CPU外部,即外部设备的中断)和内部中断(来自CPU内部的中断)两大类。 1)内部中断: (1)除法溢出中断0号中断 (2)单步中断1号中断 (3)INT指令中断 (4)溢出中断4号中断 (5)软件中断,8086/8088的中断源,图6-9 8086/8088的中断源,内部中断的作用: 除法错中断(中断类型号为0):在执行除法指令时,若发现除数为0,则产生一个类型号为0的内部中断,CPU转去执行除法错中断处理程序。 (2) 溢出中断INTO(中断类型号为4):进行带符号数的算术运算时,若发生了溢出,则标志位OF=1,若此时执行INTO指令,会产生溢出中断,结束时不返回,而把控制

9、权交给操作系统。若OF=0,则INTO不产生中断,CPU继续执行下一条指令。INTO指令通常安排在算术指令之后,以便在溢出时能及时处理。例如: ADD AX,BX INT 0 ;测试加法的溢出,为调试程序设置的中断 (1) 单步中断(中断类型号为1):当TF=1时,每执行一条指令,CPU会自动产生一个单步中断。单步中断可一条一条指令地跟踪程序流程,观察各个寄存器及存储单元内容的变化,帮助分析错误原因。 (2) 断点中断(中断类型号为3):调试程序时可以在一些关键性的地方设置断点,它相当于把一条INT 3 指令插入到程序中,CPU每执行到断点处,INT 3 指令便产生一个中断,使CPU转向相应的

10、中断服务程序。 中断指令INT n引起的中断(中断类型号为n) 程序设计时,可以用INT n指令来产生软件中断,中断指令的操作数n给出了中断类型号,CPU执行INT n指令后,会立即产生一个类型号为n的中断,转入相应的中断处理程序来完成中断功能。,2)外部硬件中断(外部中断): 1) 非屏蔽中断 非屏蔽中断NMI:不受中断允许标志IF的影响,它总是被CPU接受的。非屏蔽中断的优先权高于可屏蔽中断。其中断请求信号是发生在NMI上的电压跳变(边沿触发)中端类型号为2。 2) 可屏蔽中断 出现在INTR线上的请求信号是电平触发的。是否响应INTR的请求,取决于中断允许标志位IF的状态。只有当中断允许

11、标志位IF为1时,CPU才能响应INTR的中断请求。如果IF为0,即使INTR端有中断请求信号CPU也不会响应。这种情况称为中断屏蔽。,3中断类型号和中断向量表(重点掌握),问题的提出:如何确定中断服务的入口地址?中断号与中断服务程序对应关系? 8086解决的方法为: 中断类型号(中断向量):8086对每种中断都指定一个中断类型号,共256个,从0255(00H FFH),每一个中断类型号都与一个中断服务程序相对应(如果有该类型号的中断)。中断服务程序存放在存储区内,但该中断服务程序的入口地址存在内存储器的中断向量表内(固定区域),供中断被响应后能正确的找到该类型号的中断服务程序的入口。,中断

12、向量表:是中断类型号与它相对应的中断服务程序入口地址之间的转换表。 用户在设计中断服务程序时要预先确定一个中断类型号,不论是采用软件中断还是硬件中断,都只能在系统预留给用户的类型号中选择。 图6-10给出了 8086中断向量与入口地址存放位置的表。该表的物理地址为00000H003FFH。 由于该表中的实际中断服务程序的入口地址要由用户通过程序写入,所以该存储区必须留做ROM。这就是为什么在存储器设计时要把最小地址空间设计为ROM的原因。,图6-10 8086中断向量表,前5个中断类型是8086规定的专用中断,有着固定的意义和处理功能;类型码531为系统使用或保留,类型码32255可以由用户自

13、行使用。但是在为某种目的设计的微机系统中,用户可使用的中断类型码另有规定,如PC/AT中断类型码70H77H就已有安排,所以用户在进行系统开发和应用时应注意。 中断类型码和中断向量在向量表中的位置之间的对应关系为: 中断向量=4中断类型码 例如,中断类型码为20H的中断源对应的中断服务程序的入口地址存放在中断向量地址为: 0000: 0080H(420H=80H)开始的4个单元中。,中断向量的形成: 基本原理:每个中断向量在内存中占4个字节,256个中断向量共占1K字节,8086/8088系统支持最多256个中断,占用00000H-003FFH的(RAM)存储器空间作为中断向量表,用于存放中断

14、服务程序的入口地址。 中断向量的存放要求:中断向量的4个字节中,高地址(16位)存放中断处理程序的段地址CS,低地址(16位)存放中断处理程序的偏移地址IP。 中断向量表的计算:在中断被响应后,CPU根据中断向量的类型号N,经过4*N运算,查中断向量表,从表中的4*N地址开始连续的4个字节中获取中断处理程序的入口地址,从而转入相应的中断服务程序。(这一操作由CPU自动完成!),如果中断类型号为20H,中断向量为4 20H=80H在00080H00083H这4个单元中存放的值分别为10H、20H、 30H、 40H,那么该系统20H号中断所对应的中断处理程序的入口地址为4030H:2010H。

15、又如,一个系统中对应于中断类型码为17H的中断处理子程序存放在1234: 5670H开始的内存区域中,则对应于17H类型码的中断向量存放在0000:005CH(417H=5C)开始的4个字节中。所以0005CH-0005FH这4个单元中的值分别为70H、 56H、 34H、 12H。,中断类型号和中断向量表的关系,这四个数据由程序在初始化时给出,书P259,6.3.2 8086/8088中断优先级别对中断源的管理,1中断优先级别,表6-2 中断优先级顺序,28086/8088中断处理过程 1)查找中断源(由IRO-IR7与初始命令字ICW2决定),确定中断类型码,将中断类型码乘4,指向中断向量

16、表中的中断处理子程序的入口地址。将表中的低16位送IP,高16位送CS,这是CPU自动完成的操作,形成新的程序指针。 2)保存CPU的状态(根据程序的要求保存)。 3)清除TF的状态标志位。 4)保存原来执行的主程序的中断点(堆栈操作)。 5)转中断处理子程序入口地址。 6)执行中断处理子程序。 7)返回到被中断了的主程序的断点继续执行。,图6-11 8086/8088中断处理过程,新的CS和IP,不同的中 断类型号,图6-11中断嵌套示意图,主程序,中断源,5,处理程序,中断源,3,请求,中断源,3,处理程序,中断源,1,请求,中断源,1,处理程序,返回,返回,返回,中断源,5,请求,(假设

17、中断源1n的优先级为从高到低),8086/8088中断处理程序入口过程,图6-13 中断处理过程示意图,1K,6.4 Intel 8259A可编程中断控制器,问题的提出: 8086只有一个可屏蔽中断输入线,如何实现处理多个外部中断请求? 解决的办法是用专用的中断控制器接口电路8259可编程中断控制器,6.4.1 8259A的功能、框图和引脚 1功能及工作特点 1)管理和控制8086的外部可屏蔽中断请求 2)实现中断判优 3)提供中断类型码,迅速地转至中断服务程序。 4)可屏蔽中断输入,每一个中断请求都可以屏蔽或允许。单片8259A可以管理8级中断,采用级联方式,最多可管理64级中断。 5) 通

18、过编程使8259A工作在多种不同的方式。,2、8259A的引脚,图6-14 8259A的引脚,8259A的外部引脚功能: 8259A采用28脚双列直插封装形式,如图6.15所示。 1)CS:片选信号,输入,低电平有效,来自地址译码器的输出。只有该信号有效时,CPU才能对8259A进行读/写操作。,2)WR:写信号,输入,低电平有效,通知8259A接收CPU从数据总线上送来的命令字。 3)RD:读信号,输入,低电平有效,用于读取8259A中某些寄存器的内容(如IMR、ISR或IRR)。,4)D7D0:双向、三态数据线,接系统数据总线的D7D0,用来传送控制字、状态字和中断类型号等。 5)IR7I

19、R0:中断请求信号,输入,从I/O接口或其他8259A(从控制器)上接收中断请求信号。在边沿触发方式中,IR输入应由低到高,此后保持为高,直到被响应。在电平触发方式中,IR输入应保持高电平。,6)INT:8259A向CPU发出的中断请求信号,高电平有效,该引脚接CPU的INTR引脚。 7)INTA:中断响应信号,输入,接收CPU发来的中断响应脉冲以通知8259A中断请求已被响应,使其将中断类型号送到数据总线上。,8)CAS0CAS2:级联总线,输入或输出,用于区分特定的从控制器。8259A作为主控制器时,该总线为输出,作为从控制器时,为输入。 9)SP/EN:从片/允许缓冲信号,输入或输出,该

20、引脚为双功能引脚。在非缓冲方式中,该引脚作为输入线,8259A为主控制器(SP/EN1),为从控制器(SP/EN0)。 10)A0为地址输入信号,用于对8259A内部寄存器端口的寻址。 8259A有两个端口地址,一个为偶地址,一个为奇地址。在与8086相连时,可直接将该引脚与地址总线的A0连接;A0线对8259的命令控制字和操作控制字有特定的意义。,3. Intel 8259A的内部结构(了解内容),图6-14 8259A内部组成结构图,1)中断请求寄存器(IRR) 8位,接受来自IR0IR7的中断请求信号,当IR0IR7上出现某一中断请求信号时,IRR对应位被置1; 2)中断屏蔽寄存器IMR

21、 8位(8个中断输入),若IRR(中断请求寄存器)中记录的8个中断中有任何一个需要屏蔽,只要将IMR的相应位置1即可,未被屏蔽的中断请求进入优先权判别器;它的内容有CPU设定。,3)中断服务寄存器ISR 8位,保存当前正在处理的中断请求,例如,如果ISR的D2=1,表示CPU正在为来自IR2的中断请求服务; 4)优先权判别器PR 若某中断请求正在被处理,8259A外部又有新的中断请求,则由优先权判别器将新进入的中断请求和当前正在处理的中断进行比较,以决定哪一个优先级更高。若新的中断请求比正在处理的中断级别高,由PR通过控制逻辑向CPU发出中断申请INT,正在处理的中断自动被禁止,先处理级别高的

22、中断。,5)数据总线缓冲器 用于8259A与数据总线的接口,传输命令控制字、状态字和中断类型码。 6)读/写控制逻辑 其功能是确定数据总线缓冲器中数据的传输方向,选择内部的各命令字寄存器。当CPU发读信号时将8259A的状态信息放到数据总线上;当CPU发写信号时,将CPU发来的命令字信息送入指定的命令字寄存器中。 7)级联缓冲/比较器用来存放和比较在系统中用到的所有8259A的级联地址。主控8259A通过CAS0、CAS1和CAS2发送级联地址,选中从控8259A。,48259A寄存器及I/O端口的识别,表6-3 8259A读写操作及地址,6.5 8259中断触发方式和中断响应过程,1中断触发

23、方式(熟悉) (1)边沿触发方式 (2)电平触发方式,中断触发方式 外设的中断请求信号从8259A的引脚IRn引入,但根据实际工作需要,8259A的中断触发方式可分成如下两种: (1) 边沿触发方式 在边沿触发方式下,8259A的引脚IRn上出现上升沿,表示有中断请求,高电平不表示有中断请求。,(2) 电平触发方式 在电平触发方式下,8259A的引脚IRn上出现高电平,表示有中断请求。这种方式下,应注意及时撤除高电平,否则可能引起不应该有的第二次中断。 无论是边沿触发还是电平触发,中断请求信号IR都应维持足够的宽度,否则将丢失中断请求信息。,2单个8259A工作时进入中断处理的过程 当一条或多

24、条中断请求线(IR0IR7)变成高电平时,设置相应的中断请求寄存器IRR位。 在8259A判断了中断优先权和中断屏蔽寄存器的状态后, 如果条件合适,就向微处理器发出高电平信号INT,请求中断服务。 8086接到中断请求信号后,如果满足条件,则响应中断,输出回答信号为INTA引脚上的两个负脉冲。 8259A接到来自微处理器的第一个INTA 脉冲时,把允许中断的最高优先级请求位置入ISR,并把IRR中相应的位复位。第二个INTA 脉冲时, 8259A向数据总线发送中断类型号。,8259A具有非常灵活的中断管理方式,可满足用户各种不同要求,并且这些工作方式都可以通过编程来设置。但是, 由于工作方式多

25、,使8259A的编程和使用不太容易掌握。为此,在讲述8259A的编程之前,我们先对8259A的工作方式分类进行简明的介绍。,3 工作方式(掌握内容),8259中断优先权有两种管理方式: (1)固定优先权方式 特点:8259的8个中断输入信号IR0IR7的优先权是固定的,优先的顺序为:IR0、IR1、IR7,IR0最高,IR7最低。高级别的可以打断低级别的中断。 (2)自动循环优先权方式,1)中断优先权方式,(2)自动循环优先权方式 在优先权自动循环方式中,优先级队列是在变化的。一个设备受到中断服务以后,它的优先级自动降为最低,原来比它低一级的中断则为最高级,依次排列。如初始优先级队列规定为IR

26、0、IR1、IR2、 、IR7。此时,若IR4请求中断,则处理IR4,在IR4被服务以后,IR4自动降为最低优先级,IR5 成为最高优先级,这时中断源的优先级依次为IR5、IR6、IR7、IR0、IR1、IR2、IR3、IR4。这种方式一般用在系统中多个中断源优先级相同的场合。,8259有两种嵌套方式 (1) (普通)完全嵌套方式:是8259A最常用的工作方式,该方式下中断优先权是固定的,即IR0优先权最高,IR7优先权最低。 在此中断源的中断服务程序完成之前,与它同级(多片时会有同级)或优先权更低的中断源的申请就被屏蔽,只有优先权比它高的中断源的请求被允许的,对同级或低级的中断请求禁止响应。

27、,2)中断嵌套方式,(2) 特殊完全嵌套方式 特殊完全嵌套方式用于多片级联优先权管理。 在特殊完全嵌套方式下,中断优先权也是固定的,即IR0优先权最高,IR7优先权最低。当处理某一级中断时,如果有同级(多片时发生)的中断请求, 那么也会给予响应,从而实现一种对同级中断请求的特殊嵌套。即多片时,后到的同级别中断的级别高。 特殊全嵌套方式用在8259A级连系统中。 主片8259A编程为特殊全嵌套方式,当来自某一从片的中断请求正在处理时,对来自优先级较高的主片其他引脚上的中断请求进行开放;另一方面,对来自同一从片的较高优先级请求也会开放。 , 8259的8个中断请求都可根据需要单独屏蔽,屏蔽是通过编

28、程使中断屏蔽寄存器IMR相应位置“0”(开放该位中断)或置“1”(禁止该位中断),从而允许或禁止相应位的中断。 8259A有两种屏蔽方式 (1) 普通屏蔽方式 普通屏蔽方式是由OCW1的操作控制字将IMR某位置“1”,则它对应的中断就被屏蔽,从而使这个中断请求不能从8259A送到CPU。 如果该位置“0”,则允许该位向CPU发出中断请求。 ,3)中断屏蔽方式,(2) 特殊屏蔽方式 中断服务程序能动态地改变系统的优先权结构。例如,在执行中断服务程序某一部分时,希望禁止较低级的中断请求;但在执行中断服务程序的另一部分时,又希望能够开放比正在执行的中断优先级低的中断。这种方式常用于级联方式的主片。

29、为达到这样的目的,可以使屏蔽寄存器的对应位置1,使本级中断受到屏蔽。这样,便可以为开放较低级中断请求提供可能。特殊屏蔽方式由OCW3来设置。 ,4)中断结束处理方式,不管用哪种优先权方式工作,当一个中断请求得到响应时,8259A都会将中断服务寄存器ISR中相应位置“1”,表明该中断正在被执行。 当中断服务程序结束时,必须使该ISR位清零,否则意味着中断服务还在继续,比它级别低的中断请求无法被响应。这个使ISR位复位的动作就是中断结束处理。 8259有三种中断结束方式: (1) 自动中断结束方式 (2) 普通(一般)中断结束方式 (3) 特殊的中断结束方式,(1) 自动中断结束方式(AEOI)

30、该方式在第二个INTA负脉冲的后沿即完成对应的ISR位的复位。注意,该方式是在中断响应后,而不是在中断处理结束后将ISR位清0。这样,在中断处理过程中,8259A中就没有“正在处理”的标识。此时,若有中断请求出现,且IF1,则无论其优先级如何,都将得到响应。尤其是当某一中断请求信号被CPU响应后,如不及时撤消,就会再次被响应(即二次中断)。所以,中断自动结束方式适合于中断请求信号的持续时间有一定限制以及不出现中断嵌套的场合。,(2) 普通中断结束方式 该方式用于全嵌套方式下的中断结束。可通过在中断服务子程序中编程写入OCW2的EOI来设定使8259中的ISR相应位置0。 在这种方式下,CPU在

31、中断服务程序结束时,向8259A发常规中断结束命令(IRET),将在全嵌套方式下ISR中最高优先级的ISR位(对应于当前正在处理的中断)清0,就相当于结束了当前正在处理的中断。,(3) 特殊中断结束方式(SEOI) 在特殊全嵌套方式下(多片时),根据ISR的内容无法确定最后响应的是哪一级中断。这种情况下,就必须用特殊的中断结束方式,即在程序中要发一条特殊中断结束命令,该命令指出了要清除ISR中的哪一位。 另外,还要注意在级联方式下,一般不用中断自动结束方式,而是用一般(普通)结束方式或特殊结束方式。在中断处理程序结束时,必须发两次中断结束命令,一次是发往主片,另一次发往从片。,5 中断级联方式

32、,1)缓冲方式:8259A通过总线驱动器8288和数据总线相连,为缓冲方式(最大模式下的级连)。(不做重点,自己看相关资料) 2)非缓冲方式:当系统为最小模式下8259A的数据线直接与数据总线相连。,图6-16 8259A非缓冲方式下级连结构,6.6 8259A初始化命令字和操作方式命令字 (重点掌握内容),8259A根据接收到的微处理器的命令进行工作。 微处理器的命令分为两类:一类是初始化命令,称为初始化命令字(ICW)。 8259A在进入操作之前,必须由初始化命令字来使它处于初始状态。另一类是操作命令,称为操作控制字(OCW)。 在对8259A进行初始化之后,用这些控制字来控制8259A执

33、行不同的操作方式。操作控制字可在初始化后的任何时刻写入 8259A。,1. 初始化命令字 8259A有4个初始化命令字ICW1ICW4, 它们按照一定的顺序送入,用于设置8259A的初始工作状态。无论何时,当微处理器向8259A发送一条A0=0和D4=1的命令时,这条命令就译码为ICW1。 A0=0和D4=1是ICW1的标识位! 利用A0=0,D4=1对ICW1寻址。,ICW1:规定8259的连接方式(单片或级联)与中断源请求信号的有效形式(边沿或电平触发)。命令字格式如图所示,利用A0=0,D4=1寻址。 D7、D6、D5、 D2在8086/8088系统中不用,可为1,也可为0。它们在808

34、0/8085系统中使用。,D4=1和A0=0是ICW1的标志。在初始化命令字设置过程结束后,当A0=0时,D4=0表示操作控制字OCW2或OCW3。 OCW2时D4D3=00,OCW3时D4D3=01 LTIM用来设定中断请求信号的形式。如果LTIM=0,则表示中断请求为边沿触发方式; 如果LTIM=1,则表示中断请求为电平触发方式。 SNGL用来指出本片8259A是否与其他8259A处于级连状态。 当系统中只有一片8259A时,SNGL为1;当系统中有多个8259A时,SNGL为0。 IC4用来指出初始化过程中是否设置ICW4。若IC4为0, 表示不用ICW4;若IC4为1,表示用ICW4。

35、在8086/8088系统中, ICW4是必须使用的,此时IC4必定为1。 ,(2) ICW2(中断类型码字) ICW2是设置中断类型码的初始化命令字。 ICW2的各位定义如下:,编程时用ICW2设置中断类型码高5位T7T3,低3位插入IR的编码。 例如:写入ICW2的内容为40H,则IR0IR7对应的8个中断类型号依此为:40H、41H、.47H,8个中断类型号一定是连号!,ICW2(中断类型码字) 决定了中断服务程序在向量表中的位置,可以使CPU自动得到相应中断的中断服务子程序的入口地址。,ICW2命令字,主8259A的ICW3命令字,(3) ICW3(级连控制字) ICW3是标志主片/从片

36、的初始化命令字。只有在一个系统中包含多片8259A时,ICW3才有意义。,A0 D7 D6 D5 D4 D3 D2 D1 D0,如果本片为主片,则D7D0对应于IR7IR0引脚上的连接情况。如果某一引脚上连有从片,则对应位为1;如果未连从片,则对应位为0。例如,当ICW3=F0H(11110000)时,表示IR7、IR6、IR5、IR4引脚上接有从片,而IR3、IR2、IR1、 IR0引脚上没有从片。,如果本片是从片, 则ICW3的格式如下:,A0 D7 D6 D5 D4 D3 D2 D1 D0,如果本片为从片,则ICW3的D7D3不用,可以为0,也可以为1,但为了和以后的产品兼容,所以使它们

37、为0。 ID2ID0是从设备标志ID的二进制代码,它等于从片8259A的INT端所连的主片8259A的IR编码。,(4) ICW4(中断结束方式字) ICW4为方式控制初始化命令字。只有在ICW1的D0位为1时, 才有必要设置ICW4,否则不必设置。 ICW4的格式如下:,2. 初始化命令字的编程顺序 在8259A进入正常工作之前,必须将系统中的每片8259A进行初始化。初始化命令字用来设定8259A的初始状态。在初始化的过程中, ICW1和ICW2总是要出现的。 ICW3和ICW4是否使用,由ICW1的相应位决定。当SNGL=0时,需要ICW3分别用作主片或从片的8259A,它们的格式是不同

38、的。ICW1的IC4=1时,需要ICW4,对于8086/8088系统,ICW4总是需要的。CPU向8259A写入命令时, A0=0和D4=1标志着写入ICW1,初始化过程开始。随后写入的初始化命令字由A0=1作为标志。初始化过程结束后,才能写入操作控制字。,3. 8259A的操作命令字(熟悉内容) 在对8259A用初始化命令字进行初始化后,就进入工作状态,准备好接收IR输入的中断请求信号。在8259A工作期间, 可通过操作命令字来使它按不同的方式进行操作。 操作命令字是在应用程序内部设置的。操作命令字共有三个,可以独立使用。,OCW1(屏蔽控制字) OCW1称为中断屏蔽操作命令字,其格式如下:

39、,A0 D7 D6 D5 D4 D3 D2 D1 D0,在写入OCW1时,直接对中断屏蔽寄存器IMR的相应屏蔽位进行置位或复位操作。M7M0代表8个屏蔽位,用来控制IR输入的中断请求信号。如果某一位M=1,它就屏蔽对应的IR输入(即M0=1屏蔽IR0 ,M1=1屏蔽IR1等等),禁止它产生中断输出信号INT,若M i=0,则中断被开放。屏蔽某个IR输入,不影响其它的IR输入的操作。 因此利用OCW1屏蔽某些IR请求,可以禁止这些设备的中断请求, 而其它的设备可以通过未屏蔽的IR去申请中断。,(2) OCW2(中断结束和优先权循环控制字) OCW2用来设置优先级循环方式和中断结束方式。其格式如下

40、:,各位的意义: R=1为循环优先权, R=0为固定优先权。 SL用来选择指定的IR级别位。决定L2、L1 、 L0 是否有效。若 SL=1,则L2、L1、L0有效;若SL=0,则L2、L1 、L0无效。 EOI是中断结束命令位。在非自动中断结束命令的情况下, EOI1表示中断结束命令,它使ISR中最高优先权的位复位; EOI=0则不起作用。 L2、L1 、L0用来指定操作起作用的IR级别码。 凡SL=1的指令,在L2、L1 、L0所指定的IR级别编码上都起作用。SL=0时,不使用L2、L1 、L0位。L2、L1 、L0的编码与作用的IR级别如表 6 - 5 所示。,(3) OCW3(设置屏蔽

41、方式和读状态控制字) OCW3的功能有三个方面:一是设置和撤消特殊屏蔽方式; 二是设置中断查询方式;三是用来设置对8259A内部寄存器的读出命令。其格式如下:,A0 D7 D6 D5 D4 D3 D2 D1 D0,D6、D5两位决定是否工作于特殊屏蔽模式,D6D511时,允许特殊屏蔽方式,D6D5=10时,清除特殊屏蔽方式,恢复到正常屏蔽方式。,OCW3各位的意义,D6、D5两位决定是否工作于特殊屏蔽模式,D6D511时,允许特殊屏蔽方式 D6D5=10时,清除特殊屏蔽方式,恢复到正常屏蔽方式。,特殊屏蔽: 在一些特殊的场合,允许中断优先权低的中断请求得到服务,为了达到此目的,可用OCW1来对

42、当前中断级别的位置“1”,使当前中断受到屏蔽,为开放较低级别的中断请求提供可能,但由于此时中断服务寄存器ISR中对应本级中断的位为“1”,并将保持到中断服务程序发出结束命令后,才被清楚为“0”,所以在中断服务程序执行过程中,较底级别的中断请求仍被禁止。 解决的方法是用特殊屏蔽方式,在特殊屏蔽方式下,使用OCW1,就禁止在这一级上再次产生中断,同时使中断服务寄存器ISR中对应本级中断的位自动清“0”,这样不仅屏蔽了当前正在处理的本级中断,还真正开放了其它较低级别的中断请求。,D2决定8259A采用中断方式:查询或非查询方式 D2=1 查询方式 D2=0 非查询方式-即向量中断方式 D6=0时,这

43、一位不起作用 D1D0 位选择读8259内部寄存器的状态。 D1D0=10时,表示读IRR; D1D0=11时,表示读ISR,当OCW3命令字送给8259后,再对8259用输入指令读出,CPU便可得到相应寄存器的内容。 D4D3是OCW3的识别位=01,中断请求状态字各为的意义(查询命令),W2W1W0:为该片上IR0-7的那个线上有中断请求,与D7位配合判别,图6-17 8259A初始化命令字的顺序,5.7、8259应用设计,图6-18 8259在系统中的连接方式,D0,RD,WR,INTR,INTA,A1,A15,A2,M/IO,译,码,器,A0,INTA,INTR,WR,RD,D7,D0

44、,CS,IR0,IR1,中断源,中断请求,IR7,8259,+5V,SP/EN,红线框中的地址 可以是8位,用 A1A7做译码线,D7,中断源,中断源,中断程序设计过程举例 1、编写中断初始化程序 1)初始化8259 对8259的初始化一定要按规定的顺序进行,见图6-17所示。硬件电路如图6-18所示。 假定8259占用的I/O地址为FF00和FF02H: SET59A: MOV DX,0FF00H ;8259的地址A0=0 MOV AL,13H ;写ICW1,边沿触发,单片,需要ICW4 OUT DX,AL MOV DX,0FF02H ;8259地址A0=1 MOV AL,48H ;写ICW

45、2,设置中断类型码 OUT DX,AL ;中断向量为48H-4FH(IR0-IR7) 单片8259,不对ICW3设置,MOV AL,03H ;写ICW4,8086/88模式,自动中 ;断结束 (EOI),非缓冲,一般嵌套 OUT DX,AL MOV AL,0E0H ;写OCW1,屏蔽IR5、IR6、 IR7中 ;断源 OUT DX,AL ;(假定这3个中断输入未用),其 ; 它开中断,在将ICW2写入后就决定了IR0-IR7各中断源的类型号,同时可以计算出中断表的位置,然后将各中断服务程序的入口地址用程序送入相应的地址中。 如上例中,如由IR0引起的中断服务程序的入口地址为:CS=2000H,

46、偏移地址为3000H,则用下面的程序实现中断服务程序的入口地址的写入: MOV AX,0 MOV DS,AX MOV AX,3000H MOV (4*48H),AX MOV AX,2000H MOV (4*48H+2),AX,CPU对8259的IMR读出时,可利用I/O地址直接寻址,而要读出中断服务ISR寄存器、中段请求寄存器IRR或中断状态寄存器时,则需要先设置命令字OCW3。下面是CPU读出ISR内容的一段程序: MOV DX,0FF00H ;8259的地址A0=0 MOV AL,0BH OUT DX,AL ;写OCW3 IN AL,DX ;读出ISR内容放入AL中,例如,PC/AT机中8

47、259A的主片定义为:上升沿触发、在IR2级联从片、有ICW4、非AEOI方式、中断类型号08H0FH、一般的中断嵌套方式、端口地址是20H、21H;从片定义为:上升沿触发、级联到主片的IR2、有ICW4、非AEOI方式、中断类型号为70H78H、一般的中断嵌套方式、端口地址是A0H、A1H。初始化过程如下:,初始化主片 初始化从片 MOV AL,11H MOV AL,11H OUT 20H,AL OUT 0A0H,AL MOV AL,08H MOV AL,70H OUT 21H,AL OUT 0A1H,AL MOV AL,04H MOV AL,02H OUT 21H,AL OUT 0A1H,AL MOV AL,01H MOV AL,01H OUT 21H,AL OUT 0A1H,AL,2) 设置中断向量表 直接写中断向量表。利用写指令,直接将中断处理程序的首地址写入内存地址为4*n的区域中。程序如下: INTITB: MOV AX,0 MOV DS,AX;将内存段设置在最低端 MOV SI,012

温馨提示

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

评论

0/150

提交评论