微机原理 第七章.ppt_第1页
微机原理 第七章.ppt_第2页
微机原理 第七章.ppt_第3页
微机原理 第七章.ppt_第4页
微机原理 第七章.ppt_第5页
已阅读5页,还剩114页未读 继续免费阅读

下载本文档

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

文档简介

1、第7章 中断系统和中断控制器8259A,一、中断的基本概念 二、8086/8088的中断系统 三、中断控制器8259A,一、中断的基本概念,1、中断及中断源 2、中断处理过程 3、中断优先权管理,1、中断及中断源,中断:是一种让CPU挂起正在执行的程序而转去处理特殊事件的操作。 中断过程 :CPU暂时停止执行原来的程序而转去中断处理,处理好中断服务后再返回继续执行原来的程序,这样一个过程就是一个中断过程 。 中断源:能够引起CPU中断的事件称为中断源 。,中断源及分类,根据中断与CPU的相对关系,中断分为内部中断和外部中断。 外部中断(硬中断)则是由直接连到CPU引脚上的信号引起的中断,如外部

2、设备请求服务中断,实时时钟定时到中断,电源掉电等等。 内部中断(软中断)可以是中断指令设置的中断,调试程序时设置的中断,或是程序运行过程中发生的非预期情况而产生的中断;,可屏蔽中断 不可屏蔽中断,外部中断 (硬中断) 内部中断 (软中断),(因执行指令而引起),2、中断处理过程,一个中断过程应该包含以下五个过程: (1)中断请求 (2)中断排队 (3)中断响应-中断处理-中断返回,(1)中断请求,当中断源需要CPU为其服务时,首先送出中断请求信号。 中断信号可以由中断指令或是某些特定条件产生,也可以是通过CPU引脚向CPU发出中断请求信号而产生。 实际系统中一般都有多个中断源, 为了增加控制的

3、灵活性,每个中断源接口电路中,设置一个中断请求触发器和一个中断屏蔽触发器。,(1)中断请求,当中断源有请求时,将中断请求触发器置1: * 若中断屏蔽触发器为“0”状态,表示允许该中断源向CPU发出中断请求“信号”; * 若中断屏蔽触发器为“1”状态,表示禁止该中断源向CPU发出中断请求“信号”。尽管该中断源有中断请求,也不能被送出,该中断请求被屏蔽了。,(2)中断排队,中断排队是确定当前所有中断请求中优先级最高的那个中断源。 因为CPU一次只能响应一个中断,所以必须首先处理最紧急最重要的中断。 根据中断源的轻重缓急给予一个中断优先权级别,优先权级别最高的中断源将首先得到响应。 中断一般划分为四

4、级,以0级为最高,依次降低: 0级-1级-2级-3级,(3)中断响应-中断处理-中断返回,CPU通过中断排队确定了要响应的中断源后,进入中断响应,完成以下步骤: (1)关中断并保护断点。这一步为隐操作。 (2)标志寄存器FR自动入栈。 (3)中断处理。形成中断服务程序入口地址,执行中断服务程序。 保护现场。在中断服务程序中可能要用到某些寄存器,而这些寄存器在主程序被中断打断时存放着有用的信息,为了不破坏主程序在断点处的信息,应将这些要用到的寄存器的内容压栈,这个过程称为现场保护。 开中断(STI指令)。由于CPU响应中断时会自动关闭中断,因此为了响应更高级别的中断请求,往往要根据中断系统的实际

5、情况,在中断服务程序的适当位置要开中断。 中断服务程序 关中断。为了安全起见,在保护现场和恢复现场时都应关中断。 恢复现场。 用一系列的出栈指令使保护现场时被保护的那些寄存器的内容还原。 (4)中断返回(IRET指令)。从堆栈弹出断点,返回主程序。,3、中断优先权管理,中断优先权是事先根据中断源的重要性给每个中断源确定一个中断优先级别优先权。 中断优先权管理就是判别和确定各个中断源的中断优先权。 中断优先权判别方法有软件和硬件两种方法。,(1)软件确定中断优先权 软件法是在CPU响应中断后,用软件查询确定哪个中断源申请中断,先被查询的先响应。 查询次序决定了中断优先权次序,最先被查询的中断源具

6、有最高的优先权。,如图,8个外设只要有中断请求,CPU检测到中断请求信号,响应中断;,读入端口80H的内容,逐位判别确定当前申请中断的优先权最高的中断源,从而进入相应的中断服务程序。,3、中断优先权管理,(1)软件确定中断优先权,软件查询流程图,软件查询程序: IN AL,80H ;端口读入状态 TEST AL,80H; JNZ SERVE_A TEST AL,40H JNZ SERVE_B TEST AL,01H JNZ SERVE_H HLT,* 软件查询次序就是优先权高低的次序; * 软件确定中断优先权不需复杂的硬件电路,简单易实现; * 中断源较多时,查询时间较长,中断响应较慢。,3、

7、中断优先权管理,(2)硬件确定中断优先权 由硬件实现中断优先权的判别。 * 常用的硬件电路有:中断优先权编码电路,链式优先权排队电路及专用硬件电路等。,链式优先权排队电路,专用硬件方式,采用可编程的中断控制器芯片,如Intel 8259A,中断控制器的系统连接,* 利用中断控制器8259A,它具有8个优先权控制,可以通过级联,扩展至64级优先权控制,且每级中断都可设置为允许或屏蔽 。,二、8086/8088的中断系统,8086/8088CPU具有一个功能很强、管理高效且简便灵活的中断系统,可以处理多达256种中断源。 8086/8088CPU有两类中断: * 内部中断 由执行中断指令或特殊事件

8、引起; * 外部中断 由外围设备接口向CPU的中断请求引脚INTR和NMI发出中断请求信号而引起的。,二、8086/8088的中断系统,1、 8086/8088的中断分类 2、8086/8088的中断指令 3、 中断向量表 4、 8086/8088中断处理过程,1、8086/8088的中断分类,8086/8088的中断系统可以处理256种不同的中断。 所有可能产生的中断源有:可屏蔽中断INTR、非屏蔽中断NMI、指令中断INT n和特定条件下的中断,分为两类:,内部中断,外部中断,1、8086/8088的中断分类,内部中断 CPU不是通过外部中断请求而是通过内部逻辑进入中断,调用相应的中断服务

9、程序,是CPU自启动的中断。 除单步中断外,所有内部中断为非屏蔽型的。 内部中断主要用于解决程序运行中发生的一些意外情况、程序调试、用户定义的中断或者调用系统提供的一些标准中断服务程序。 (1)除法出错中断 (类型0) ; (2)单步中断(类型1); (3)断点中断(类型3); (4)溢出中断(类型4); (5)指令中断,1、8086/8088的中断分类,内部中断,(1)除法出错中断 (类型0) CPU在执行除法指令DIV和IDIV时,若发现除数为0,或商超过了寄存器所能表达的范围,就立即产生一个类型为0的内部中断,CPU转入除法错误中断处理程序。 注意:此中断是由CPU自身产生,并没有对应的

10、中断指令。,1、8086/8088的中断分类,内部中断,(2)单步中断 (类型1) 此中断也是由CPU自身产生,没有对应的中断指令,它是由CPU对状态标志寄存器中的陷阱标志TF的测试而引起的。 TF1,自动单步中断,用于程序调试。,1、8086/8088的中断分类,内部中断,(3)断点中断 (类型3) 用DEBUG调试程序时,可G命令设置断点。当CPU执行到断点时便产生中断,同时显示相关内容 。 和单步中断类似,用于程序调试。,1、8086/8088的中断分类,内部中断,(4)溢出中断 (类型4) 溢出中断是由CPU执行一条INTO指令实现的: 当OF1时,执行INTO就会进入类型码为4的内部

11、中断; 否则,按顺序执行。,1、8086/8088的中断分类,内部中断,(5)指令中断 当执行INT n指令时,形成中断,类型码由指令提供。 从功能上来说,类似于调用子程序,但入口地址在中断向量表里。,1、8086/8088的中断分类,外部中断 通过外部的硬件产生,由送至CPU引脚NMI和INTR上的信号引起中断。 分为两类: (1)非屏蔽中断(n=2) 一旦在NMI引脚有中断请求,CPU立即响应。,1、8086/8088的中断分类,(2)可屏蔽中断, 从INTR脚引入,必须满足IF=1,且没有非屏蔽中断,CPU可以响应中断。 中断请求信号是由电平触发,必须保存到CPU响应中断请求后才能撤除。

12、 中断允许标志IF的标志,可由指令设置: STI 开中断,将IF置1; CLI 关中断,将IF置0 。 当系统复位,或CPU响应中断后,都使IF置0。,2、8086/8088的中断指令,(1)中断指令 指令格式: INT n ;n=0255,中断类型码 指令操作: SP2 SP(修改堆栈指针), FR入栈, IF=0(中断标志置0,关中断,CPU不响应可屏蔽中断) , TF=0(陷阱标志,TF0,CPU正常执行程序) , SP2 SP (修改堆栈指针), CS入栈 SP2 SP (修改堆栈指针),IP入栈 n4 IP n4+2 CS,2、8086/8088的中断指令,中断向量就是中断服务程序的

13、入口地址; 中断类型码 n4 即为该中断向量的存放地址; 中断向量占用4个单元: 低字是IP,高字是CS,CPU取出CS和IP,转去执行中断服务程序。 INT n 指令除了使IF0和TF0,对其他标志位没有影响; INT 与INT 3等同,称为断点中断指令,用于软件调试。,2、8086/8088的中断指令,(2)溢出中断指令 指令格式:INTO;与INT 4等价 指令操作: 溢出中断指令用于带符号数加减法运算后,由于运算溢出而产生中断。 通常,写在一条算术运算指令后: 若运算结果使OF=1,进入中断类型码为4的中断; 否则,按顺序执行下一条指令。,n4 0010H,中断向量存放地址为:,2、8

14、086/8088的中断指令,(3)中断返回指令 指令格式:IRET 指令操作:IP,CS,FR依此出栈,SP+6SP 所有中断服务程序,无论是软件中断,还是硬件中断,最后执行的指令一定是IRET,用以退出中断,返回断点。,3、中断向量表,中断向量即中断服务程序的入口地址,用两个字表示,低字是IP,高字是CS。 将所有中断源的中断向量集中存储在内存的指定空间内,这样一个指定的存储区称为中断向量表; 8086/8088的中断类型码用8位二进制表示,共有从n=00HFFH, 256个中断向量; 中断向量表建立在内存空间最低1K地址; 地址范围:00000H 003FFH。 注意:中断类型码只能决定存

15、放中断向量的地址,并不能决定中断向量本身和中断服务程序的功能。,中断向量和中断向量表,3、中断向量表,向中断向量表中写入中断向量,就是中断向量表的设置。 (1)使用INT 21H (2)用传送指令,(1)使用INT 21H,设置中断向量,操作: AL中预置要设置的中断类型码; DS:DX中预置中断服务程序的入口地址; (DS内是段地址,DX内是偏移地址) MOV AH, 25H ;送功能号 INT 21H ;系统功能调用,使用INT 21H,设置中断向量,设中断服务程序的入口地址标号为INTSUB,中断类型码为40H, 编写程序段设置中断向量。 解: PUSH DS ;将DS入栈,保存DS M

16、OV DX, OFFSET INTSUB;取INTSUB的偏移地址 MOV AX,SEG INTSUB ;取INTSUB的段基址 MOV DS,AX ;段基址送DS MOV AL, 40H ;送中断类型码 MOV AH, 25H ;送功能号 INT 21H ;系统功能调用 POP DS ;恢复DS ,(2)用传送指令设置中断向量,设中断服务程序的入口地址标号为INTSUB,中断类型码为40H, 编写程序段设置中断向量。 解: 数据段 DATA SEGMENT AT 0000 ;设置数据段DATA段 ;从最低内存开始 ORG 100H ;确定中断向量的位置;在40H4=100H NT_SUB D

17、W 2DUP(?) ;预留两字内存 DATA ENDS,用传送指令设置中断向量代码段,CODE SEGMENT CLI ;设置IF=0, 关中断 PUSH DS ;DS入栈 MOV AX, DATA MOV DS, AX ;取DATA的段基址 MOV INT_SUB ,OFFSET INTSUB ;取INTSUB的偏移 ;地址送到INT_SUB MOV INT_SUB+2,SEG INTSUB ;取INTSUB的段基址 ;送到INT_SUB+2 POP DS ;恢复DS STI ;设置IF=1, 开中断 CODE ENDS,4、8086/8088的中断处理过程,8086/8088中断处理过程包

18、含: 中断请求、中断排队、中断响应、中断服务和中断返回。,(1)中断响应条件,任何一种中断,都要待CPU执行完当前指令后方能响应中断。 当CPU执行LOCK(总线锁定指令)时,要等后面的指令完成后才能响应中断; 设置段寄存器内容的指令和下条指令之间不允许中断; 在等待指令和重复串操作指令执行过程中,可响应中断,但必须在一个基本操作完成以后。 当上述情况满足后,有内部中断、NMI、INTR(且IF1),CPU将暂时终止现行程序,进入中断响应。,(2)中断处理顺序,中断处理顺序即按中断优先权从高到低的排队顺序对中断源进行响应。 8086/8088系统的中断处理次序如下: 除法错误中断、溢出中断、I

19、NT n; NMI(非屏蔽中断); INTR(可屏蔽中断,需判断IF1?); 单步中断。,说明:,当CPU进入中断响应时,保护FR,然后清除IF和TF,以保护本中断服务不被可屏蔽中断打断;中断返回时,FR恢复,IF和TF 恢复; NMI的请求拥有最高优先权,需要立即处理; 一个中断被响应,CPU进入中断服务程序; 在中断服务程序中,设置了开中断,即设置IF1,则不但可以响应NMI,也可响应优先权更高的INTR; 多个中断同时发生,按优先权从高到低响应。,(3)中断类型码的获取,8086/8088的中断系统是根据中断类型码从中断向量表中取得中断服务程序的入口地址的。 除法错误、单步中断、非屏蔽中

20、断、断点中断和溢出中断由硬件逻辑电路自动提供中断类型码0 4; INT n指令的第二字节为中断类型码,因而指令中断是从指令中直接获得; 外部可屏蔽中断由外部硬件电路在中断响应时向CPU提供中断类型码。,(4)中断响应过程,硬件中断响应过程:,(4)中断响应过程,INTR被响应时,CPU实际执行的过程如下: CPU取得中断类型码后,左移两位(4),存入内部暂存器; FR入栈; IF置零,TF置零; CS入栈; IP入栈; 中断向量低字送IP; 中断向量高字送CS。,说明: 1、非屏蔽中断和软件中断不需要从数据线上取类型码,中断响应过程从第二步开始。 2、非屏蔽中断可打断可屏蔽中断。打断点:可屏蔽

21、中断执行中断处理程序前再次检测是否有NMI中断请求,如果有请求,进入NMI响应周期,否则,执行中断处理程序 。 3、中断程序执行后执行:IP、 CS出栈-标志寄存器出栈,然后返回断点继续执行原来程序。,三、中断控制器8259A对外部中断进行控制与管理的芯片,1、 8259A主要功能 2、 8259A基本构成与引脚信号 3、 8259A工作过程 4、 8259A的工作方式 5、 8259A编程方法,三、中断控制器8259A1、 8259A主要功能,(1)接受外部的中断请求;,(2)管理外部的中断请求(排队、判优、屏蔽、嵌套);,(3)向CPU产生中断请求INTR及提供中断类型号;,(4)进行中断

22、结束处理;,(5)接受CPU命令。,2、8259A基本构成与引脚信号,CPU侧:,DB0DB7;,外设侧:,IR0IR7;,级联:,8259A的基本构成,中断请求寄存器IRR:是一个8位寄存器,用于锁存所有从IRi引脚输入的中断请求信号。 输入线IR7IR0 分别连接8个中断源的中断请求信号,当中断源有中断请求时,在相应的IR引脚上送入有效信号,IRR中相应的位就置位,以锁存该中断请求信号。,中断源,8259A的基本构成,中断屏蔽寄存器IMR:也是8位寄存器,用于存放对中断请求的屏蔽信息,其内容可编程设定。 IMR中的8个位对应IR7IR0这8个中断请求,当IMR中某位被置位,对应的中断请求就

23、被屏蔽,即IRR对应的位虽被置位,但不能送出它的中断请求信号给CPU,由此实现对各中断有选择的屏蔽。,8259A的基本构成,优先权判别器PR:用于识别各中断请求的优先权级别,并进行优先权管理。 各中断请求的优先权级别可以由CPU定义或修改。 若IRR有几位被置位,且未被屏蔽,表明有多个中断源同时申请中断。则由PR经过判断确定最高优先权的中断请求,并在CPU响应周期内,将它送入ISR中相应的位。,中断源,优先权 判别器PR,8259A的基本构成,中断服务寄存器ISR:为8位寄存器,用于记录已被CPU响应的中断。 在中断响应周期里,由PR根据IRR和IMR的状态,确定先被响应的中断请求,送至ISR

24、,使相应的位被置位。,若ISR中有多个位被置位,是什么原因?,8259A的基本构成,数据总线缓冲器:为8位双向三态缓冲器,是8259A与CPU间数据传输的通道。 CPU通过数据总线缓冲器向8259A送初始化命令和操作命令字,或是读取状态信息。 在中断响应周期,8259A通过数据总线缓冲器向CPU送出中断类型码。,8259A 基本构成,读/写控制电路:其逻辑功能就是负责接收CPU发来的控制信号,完成规定的写入命令操作以及读IRR、ISR和IMR的操作。该片8259A的操作过程中,片选CS必须有效。,8259A的基本构成,级联缓冲/比较器:用于实现8259A的级联,构成主从式中断管理系统,使中断源

25、由8级扩展到64级。,8259A 的基本构成,控制电路逻辑: 根据CPU编程设定的工作方式产生片内控制信号,控制片内的工作; 根据IRR、IMR的内容和PR判断结果,向CPU发出中断请求; 接受来自CPU的中断响应信号。,引脚功能,中断请求输入线IR7IR0接受来自外设或8259A从片的中断请求信号。 可设置为上升沿触发或高电平触发。,引脚功能,双向三态数据线D7D0 可与系统数据总线直接相连,称为非缓冲方式工作; 也可通过总线缓冲器与系统数据总线相连,称为缓冲方式工作。,引脚功能,中断请求线INT,输出信号,通常与CPU的可屏蔽中断输入端INTR相连,向CPU发送中断请求信号。,引脚功能,接

26、收CPU在中断响应周期发来的中断响应信号,8259A接到此信号后,送上中断类型码; 中断类型码由编程设定。,中断响应线,引脚功能,由CPU的高位地址线控制,低电平时,表示8259A被选中,允许CPU对8259A进行读或写操作; 高电平时,表示未选中该片。,片选线,引脚功能,地址线A0用以选择8259A内部不同寄存器。,引脚功能,当读信号低电平时,允许8259A将中断请求寄存器IRR、中断服务寄存器ISR、中断屏蔽寄存器IMR的内容送上数据总线,供CPU读取。,读信号,引脚功能,写信号低电平时,允许CPU将命令字写入8259A。,写信号,引脚功能,级联线CAS2CAS0 在主从式中断管理系统中,

27、全部8259A的CAS2CAS0与对应端相连。 作为主片的8259A,其CAS2CAS0为输出线,在CPU响应中断时,用来输出级联设备编码,选中对应的从片; 作为从片的8259A,其CAS2CAS0为输入线,接收来自主片的设备编码。,引脚功能,非缓冲方式工作时,作为输入线, *高电平时,表示该8259A为主片; *低电平时,表示该8259A为从片。 缓冲方式下工作时,作为输出线,用于控制缓冲器接收和发送。,3、8259A工作过程,当有外部中断请求时,8259A处理过程: (1)中断请求寄存器IRR接受外部中断请求并锁存,当中断屏蔽寄存器IMR为0时,则中断请求进入优先权判别器PR,由PR判断是

28、否当前优先权最高? 如果是,则8259A的INT为1,向CPU的INTR发出中断请求;,3、8259A工作过程,8259A使中断服务寄存器ISR的相应位置1,并将中断请求寄存器IRR的相应位清零,再送出中断类型码到数据总线供CPU读取,CPU读取中断类型号,转移到到相应的中断处理程序;,2)当CPU的中断允许标志IF=1,CPU响应中断, 发回中断响应信号;,3、8259A工作过程,(3)若允许中断嵌套,则由8259A的优先权判别器PR依据中断服务寄存器ISR中的状态,判断新的中断请求优先权是否高于正在服务的中断。 若是,则送出INT=1,向CPU的INTR发中断请求信号,从而实现中断嵌套。

29、(4)当中断服务结束时,中断处理程序向8259A送出中断结束命令,使8259A清除ISR的相应位,从而结束一个中断服务。,4、8259A的工作方式,8259A具有十分灵活的运行方式,可以通过编程设定工作方式,满足用户对中断管理的不同要求。 主要工作方式: (1)中断请求触发方式 (2)屏蔽中断源方式 (3)中断优先权设置方式 (4)中断结束(EOI)方式 (5)连接系统总线方式 (6)中断查询方式 (7)级联方式,(1)中断请求触发方式,电平触发 边沿触发,电平触发,8259A将中断请求输入线上出现高电平作为有效的中断请求信号。 注意:当中断请求输入端出现一个高电平并得到CPU响应时,应及时撤

30、消信号。 否则,在CPU进入中断处理过程,开放中断后,会引起错误的第二次中断。,边沿触发,8259A将中断请求输入线出现的上升沿作为中断请求信号。上升沿触发后,可一直保持高电平,而不会产生重复触发。,(2)屏蔽中断源方式,普通屏蔽方式 特殊屏蔽方式,普通屏蔽方式,CPU对8259A的中断屏蔽寄存器IMR写入命令字OCW1,使IMR中的某个位或几个位置1,对应的中断请求就被屏蔽,从而不能被8259A送到CPU。 而IMR中被置0的那些位对应的中断请求允许从8259A送到CPU。 对中断屏蔽可以随时修改,即通过对命令字OCW1的重新设置,实现对某些中断的屏蔽。,特殊屏蔽方式,在中断服务程序中,用命

31、令字OCW1对中断屏蔽寄存器IMR中相应的位置1(对应CPU相应的中断源位),且清除当前中断服务寄存器ISR对应的位,屏蔽了本级中断,从而开放低优先权的中断请求。 该方式在中断服务程序中使用,用于中断嵌套,实现在高优先权的中断服务程序中开放低优先权的中断请求。,(3)中断优先权设置方式,固定优先级: 普通全嵌套方式 特殊全嵌套方式 循环优先级: 优先权自动循环方式 优先权特殊循环方式,固定优先级: 普通全嵌套方式,这是8259A最基本、最常用的工作方式,若对8259A初始化后没有设置其它优先权方式,则默认为此方式。 普通全嵌套方式中,8259A的8个中断源请求的优先权级别,按照IR0优先权最高

32、、IR7优先权最低的固定优先权顺序。 当一个中断被响应后,只有比它高优先权的中断请求才会被响应。,固定优先级:特殊全嵌套方式,与普通全嵌套方式基本相同:优先权顺序按照IR0优先权最高、IR7优先权最低的固定顺序。 唯一不同在于:若CPU正在处理某一级中断时,如果有同级的中断请求,8259A也会送出中断请求给CPU。 特殊全嵌套方式是对同级中断的一种中断嵌套。 一般用在8259A级联的系统中,设定主片为特殊全嵌套方式。当从片的某中断请求正在被处理时,如果同一从片又进入更高优先级的中断请求,主片仍然响应。 既开放主片上其他优先权高的中断请求,同时也开放了同一从片上的较高优先权的中断请求。,循环优先

33、级:优先权自动循环方式,一个系统的几个中断源的重要性差别不大,因而希望它的优先权不是固定不变的。 优先权自动循环方式下,优先权顺序是在变化的: 初始时,IR0为最高优先权,IR7为最低优先权; 当一个中断被CPU响应后,它的优先权自动降为最低的; 原在其下一级的中断升为最高优先权,其余循环类推。 假设,初始时有IR3中断请求,且被CPU响应,当IR3的中断服务结束后,IR3降为最低优先权。 此时的优先权顺序变为:IR4、IR5、IR6、IR7、IR0、IRl、IR2、IR3。,循环优先级:优先权特殊循环方式,与优先权自动循环方式相似:优先权的顺序是变化的,当一个中断被CPU响应,它的优先权自动

34、降为最低。 优先权特殊循环方式中,初始最低优先权是由编程设定的。 设编程时设定IR4为最低,则初始优先权顺序由高至低为:IR5、IR6、IR7、IR0、IRl、IR2、IR3、IR4。,(4)中断结束方式(EOI,End of Interrupt ),当一个中断请求被响应,8259A在中断服务寄存器ISR的相应位置1。 当中断服务结束时,必须将ISR中相应的位清0,进行中断结束操作。 自动中断结束方式(AEOI) 非自动结束方式(EOI): 普通中断结束方式 特殊中断结束方式,自动中断结束方式,CPU一旦进入中断响应周期,8259A就自动将当前中断服务寄存器ISR中相应的位清0。 自动中断结束

35、方式通常用在无中断嵌套的场合。这时,尽管CPU正在为某个中断源服务,但在8259A的ISR中没有对应位置1,就会出现低优先权中断打断高优先权中断的情况。,非自动结束方式(EOI):普通中断结束方式,普通中断结束方式用在普通全嵌套情况下。 在中断服务结束时,必须由CPU用OUT指令发来一个普通EOI命令,8259A收到后,将当前中断服务寄存器ISR中的已置1的最高优先权的位复位。,非自动结束方式(EOI):特殊中断结束方式,特殊中断结束方式多用于优先权循环情况下。 由CPU在中断服务结束时,发出一条特殊EOI命令,指明要清除ISR中的哪一位。 注意:在级联方式下,一般不用自动EOI方式,而用普通

36、中断结束或特殊中断结束方式。,(5)连接系统总线方式,非缓冲方式用于一片或几片较小系统,缓冲方式用于多片级联大系统。,(6)中断查询方式,8259A提供了中断查询方式。 这种方式下,外设仍然靠中断请求要求服务,但CPU不是通过对中断请求的响应,而是靠主动查询实现对外设的服务。 在CPU为关中断情况下,外设的中断请求信号不被响应,但CPU可以通过查询方式检查请求中断的外设,获取中断请求信号,从而进入中断服务。,查询过程:用输出指令把“查询方式命令字”送到8259A,然后对8259A执行一条输入指令,8259A便将一个8位查询字送到数据总线上。CPU读取查询字,利用程序判断有无中断请求。若有,便根

37、据查询字低三位数据值转移到对应的中断服务程序去。 查询字格式:IW2W1W0 I=1表示有中断请求,I=0表示有无中断请求。 W2W1W0表示8259A请求服务的最高优先级编码。,(7)级联方式,8259A可以级联使用,一个主8259A可以最多带8个从8259A,将中断源扩展到64级。,5、8259A编程方法,8259A为可编程的中断控制器,它的工作状态和操作方式是由接收CPU的命令而确定的。,命令有两类:,初始化命令字: 8259A的启动必须先通过编程(初始化程序)写入初始化命令字,使它处于工作起始状态;初始化命令字设定后,在整个系统工作过程中保持不变;,操作命令字用来控制8259A执行不同

38、的操作方式。由应用程序设定的,用来对中断处理过程实现动态控制。在8259A工作期间的任何时刻都可设置操作命令字,允许重置操作命令字动态地改变8259A的操作方式。,8259A 有两个端口地址, 是2个连续端口地址,其中一个奇地址,一个偶地址,且偶地址较低,奇地址较高。 A0为端口选择引脚,用于指示8259A的哪个端口被访问。,I,A,初始化命令字,8259A在使用前首先必须对它进行初始化,使其处于预定的初始状态, 初始化过程:按照固定的顺序进行。ICW1、ICW2必须写,ICW3、ICW4视具体情况而定。,ICW1写入8259A的偶地址中(A0=0)。,ICW2 ICW4写入8259A的奇地址

39、中(A0=1)。,ICW1格式:芯片控制初始化,D41特征位,表示设置的是ICW1 A00,表示输入8259A低地址端口;,ICW2格式:设置中断类型号基值,ICW2用于设置中断类型码。 A01,表示输入8259A高地址端口。,例: ICW2写入20H,中断类型码为20H27H; ICW2写入40H,中断类型码为40H47H; ICW2 写入45H,中断类型码仍为40H47H.,中断类型码=(T7T3)+ 中断源引入管脚编号,ICW3格式:主从片标志(级联方式结构设置),需要分别对主片和从片进行设置。,主片:S7S0分别对应相应的IR号的引脚,为1的位对应的引脚接有从片;,从片:ID2ID1的

40、编号是该从片接到主片的IR引脚的IR号。,当ICW1中D11,单片使用,不需要ICW3; 当ICW1中D10 ,表示8259A工作于级联方式,必须设置ICW3。,级联方式结构:,8259主从级联,主 片ICW3:14H,从片1 ICW3 :04H,从片2 ICW3 :02H,ICW4格式:方式控制,当ICW1的D0 =1,需要设置ICW4。,D3:BUF,若BUF1,则8259A在缓冲方式下工作;若BUF 0,则8259A在非缓冲方式工作下。D2:M/S,当BUF1,且M/S1时,此8259为主片;当BUF 1,但M/S0时,此8259为从片。若BUF0, M/S 无效。,初始化命令字(总结)

41、,ICW1必须写入8259A的偶地址端口; ICW2ICW4必须写入8259A的奇地址端口; ICW1ICW4的初始化顺序是固定的,不可颠倒; ICW1和ICW2对每个8259A是必须设置的,而ICW3和ICW4是可选的,由ICW1预先指明;,在级联情况下,不管是主片还是从片,都需设置ICW3。,主片的ICW3每一位指明IR0IR7管脚的连接情况; 从片的ICW3高五位为“0”,低三位是该从片的标示码。,例题,单片8259A的端口地址是80H和81H,采用边沿触发,普通嵌套方式,缓冲方式,非自动中断结束方式,需要ICW4,中断类型码是18H1FH,请对8259A进行初始化。,例题,解:其初始化

42、程序如下: MOV AL,13H;设置ICW1=0001 0011,即采用边沿 ;触发,单片,需要ICW4 OUT 80H,AL;ICW1写入地址A0=0 MOV AL,18H;ICW2=0001 1000,确定ICW2的高5位 OUT 81H,AL;ICW2写入地址A0 =1 MOV AL,0DH;ICW4=0000 1101,即普通嵌套方式, ;缓冲方式,非自动中断结束方式,用 ;于8086/8088 OUT 81H,AL;ICW4写入地址A0 =1 ,单片8259A的端口地址是80H和81H,采用边沿触发,普通嵌套方式,缓冲方式,非自动中断结束方式,需要ICW4,中断类型码是18H1FH

43、,请对8259A进行初始化。,单片不需ICW3,需要ICW4,操作命令字,向8259A写入初始化命令字后,8259A就处于设定的工作状态,随时准备接受中断请求信号,按要求管理中断。并自动进入操作命令状态,在任何时刻都可以设置操作命令字,选择其不同的操作方式; 操作命令字用于规定中断屏蔽、中断结束、优先权循环和中断状态的读出和查询等等。 操作命令字有三个,根据需要输入,无需按顺序,但是对端口地址有严格要求,即OCW1必须写入8259的奇地址端口,OCW2和OCW3必须写入8259的偶地址端口。 OCW1 OCW2 OCW3,OCW1:设置和清除中断屏蔽寄存器,OCW1的功能用来动态地设置中断源的屏蔽状态。,假设,OCW133H, 表示IR5、 IR4、 IR1、 IR0引脚上的中断被屏蔽,其余中断请求允许;,OCW2:设置优先级循环方式和中断结束方式,A0=0,表示必须写入的偶地址。 D4D3=00是OCW2特征位。,R、S

温馨提示

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

评论

0/150

提交评论