《微型计算机的中断系统.ppt》由会员分享,可在线阅读,更多相关《微型计算机的中断系统.ppt(44页珍藏版)》请在三一办公上搜索。
1、第九章 微型计算机的中断系统,9.1 中断的基本概念9.2 8086微处理器的中断方式9.3 可编程中断控制器8259A,9.1 中断的基本概念,一、中断与异常 1、中断 在CPU正常运行程序时,由于内部或外部某个非预料事件的发生,使CPU暂停正在运行的程序,而转去执行处理引起中断事件的程序,然后再返回被中断了的程序,继续执行。这个过程就是中断。,早期中断概念的引入,是为解决CPU与外设间的速度匹配问题,提高CPU 的工作效率。中断源主要是由外部硬件产生。当今的中断技术,不再限于外部硬件产生中断(称硬件中断或外中断),还可由CPU内部产生。2、异常(软件中断或内中断)因内部意外条件而改变程序执
2、行流程以报告出错情况和非正常状态的过程或者由程序预先安排,即由指令INT n调用中断服务程序产生的中断。(286以上称内中断为异常)可分为失效、陷阱和终止。,二、中断原理(外中断)1、中断过程 1)中断请求 2)中断判优 3)中断响应 响应条件:无总线请求和非屏蔽中断请求;中断允许控制位IF=1;CPU执行完当前指令;当前中断级别最高。响应时自动完成以下工作:发送两个INTA负脉冲,取中断类型号N;将FLAGS入栈,关中断,即IF=0、TF=0;保护断点,将CS、IP入栈;根据中断类型号N取得中断向量送入IP、CS;进入中断服务子程序。,4)中断处理 保护现场;开中断,以允许嵌套,也可不开中断
3、;中断服务;关中断,保证无干扰恢复现场;恢复现场。5)中断返回 开中断;中断返回。,2、中断优先级的识别 当有多个中断源同时提出中断申请时,究竟应该先响应哪个中断源的申请;当CPU正在执行中断服务程序时,又接收到新的中断申请,是否应该响应这个中断请求,这些问题都应当通过设置与判断中断的优先级来得以解决。1)软件查询法 2)硬件处理法,3、中断嵌套 指当CPU因响应某一中断源的中断请求而正在执行其中断服务程序时,若此时中断是开放的,那必然可以把正在执行的中断服务程序暂停下来转而响应和处理中断优先级更高的中断请求,等到处理完后再转回来继续执行原来的中断服务程序。,一、中断分类 从8086/8088
4、到以上系统中,可以处理256个不同类型的中断,其编号从00H0FFH,称为中断类型号。内部中断:除法出错 类型号0 自动产生 单步中断 类型号1 DEBUG执行T命令 断点中断 类型号3 DEBUG执行G命令 溢出中断 类型号4 执行INTO INT n 类型号n(05H 0FFH),9.2 8086微处理器的中断方式,外部中断:不可屏蔽中断 类型号2 自动产生可屏蔽中断 类型号(32 255)由8259管理,当有多个中断源同时产生中断申请时,CPU先响应优先权最高的中断源,再响应优先级较低的中断源。,二、8086(8088)CPU的中断优先级,优先级 高 低内部中断(除法出错,INT 指令,
5、断点,INTO指令)非屏蔽中断 可屏蔽中断低 内部中断(单步),三、中断向量与中断向量表,中断向量:中断服务程序入口地址。中断向量表:用于存放256个中断向量的存储区域,共占1KB存储空间。中断向量指针:在向量表中存放每个中断向量的地址。,例:NMI中断,为2号中断 中断向量存于 IP 0000H:0008H 0000H:0009H CS 0000H:000AH 0000H:000BH 中断响应后CPU根据CS和IP内容进入中断子程序。例:中断类型号30H(30H4=C0H)中断向量存于IP 0000H:00C0H 10H 0000H:00C1H 20H CS 0000H:00C2H 30H
6、0000H:00C3H 40H 则中断所对应的中断向量为4030H:2010H,也即该中断服务程序的入口地址。,四、设置中断向量,前面提到8086/8088利用向量中断的方法,一旦响应中断便可方便地找到中断服务程序的入口地址。它是在规定的内存区域中,每4个连续字节存放一个中断向量,可建立一个1KB大小的中断向量表。尽管表规定了内存区域,但表中的内容,除已被系统定义的中断类型的中断向量以外,其他新增加的中断类型要在中断向量表中由用户建立相应的中断向量。为了让CPU响应中断后正确转入中断服务程序,中断向量表的建立是非常重要的。,1、直接装入法 PUSH DS XOR AX,AX MOV DS,AX
7、 MOV BX,N*4 MOV AX,OFFSET NEWINT MOV WORD PTRBX,AX MOV AX,SEG NEWINT MOV WORD PTRBX+2,AX POP DS NEWINT PROC IRETNEWINT ENDP,2、使用串送存指令装入法 MOV AX,0 MOV ES,AX MOV DI,N*4 MOV AX,OFFSET NEWINT CLD STOSW MOV AX,SEG NEWINT STOSW,3、使用DOS功能调用设置中断向量预置:AH=25H 功能号 AL=N 中断类型号 DS:DX=中断向量执行:INT 21H例如:PUSH DS MOV A
8、X,SEG NEWINT MOV DS,AX MOV DX,OFFSET NEWINT MOV AL,N MOV AH,25H INT 21H POP DS,9.3 可编程中断控制器8259A,1.具有8级优先级控制,通过级联可扩充到64级;2.每一级中断可由程序单独屏蔽或允许;3.可提供中断类型号传送给CPU;4.可通过编程选择多种不同的工作方式。,D7D0 RD WR A0 CS CAS0 CAS1 CAS2 SP/EN,数据缓冲器,读写逻辑,级联比较/缓冲,控制逻辑,中断屏蔽寄存器IMR,ISR,PR,IRR,INTINTAIR0IR7VccGND,一、8259A的结构及引脚功能 1、内
9、部结构,级联比较/缓冲器CAS0CAS2是级联信号SP/EN控制电路 是8259A的内部控制器 根据IRR的置位情况和IMR的设置情况,通过PR判定优先级,向8259A内部及其它部件发控制信号和INT,接收INTA使ISR相应位置1,并使IRR相应位置0,同时送中断类型号。,主片 输出从片 输入,非缓冲方式缓冲方式 控制数据缓冲器 输出,单片结构 输入接“1”少量级联结构 输入,主片 接“1”从片 接地,数据缓冲器 双向8位三态缓冲器与系统数据总线接口 与CPU交换的信息包括注:通常连接低8位数据总线读写逻辑 控制数据传送方向及选择数据端口,写入8259A的编程控制字8259A状态信息的读出中
10、断响应时送出的中断类型号,IRR 中断请求寄存器 用来存放由外部输入的中断请求信号IR0IR7,允许多位置1。ISR 中断服务寄存器 保存、记录正在处理中的中断请求,当任何一级中断被响应,CPU正在执行它的中断服务程序时,ISR相应位置1。PR 优先级判别器 对保存在IRR中的中断请求进行优先级识别,送出最高级别中断请求到ISR中;当出现多重中断时,PR判定是否允许所出现的中断去打断正在处理的中断。IMR 中断屏蔽寄存器 实现对各级中断的有选择的屏蔽,当某位为1,表示禁止这一级中断请求进入系统,2、引脚功能及与CPU连接,8259A,WR,A0,CS,A0,数 据 线,RD,RD,WR,IR0
11、IR1IR2IR3IR4IR5IR6IR7,A5A4A3A2A1,D0D7,D0D7,Vcc,SP/ENCA0CA1CA2GND,+5V,用于多片8259A级连情况,INTA,INT,INTA,INTR,8088最小模式,+5V,M/IO,GG2AG2BCBA,Y2,多片8259A连接,主片8259A端口地址 20H 22H从片1端口地址 24H 26H从片2端口地址 28H 2AH,D0 D7,A1,G1G2A Y2G2B Y1 C Y0 B A,A0 M/IO,A6A5A4 A3 A2,8086最小模式,RD,INTA,WR,INT,主片8259A,从片1,从片2,A0 CS,INT IR
12、7 IR0,IR7 IR2 IR1IR0,INT IR7 IR0,+5V,1,二、8259A的工作方式,1、中断优先级方式全嵌套方式 这是8259A的默认方式,也是最基本最常用的工作方式。该方式下8259A的中断优先级是从IR0IR7,优先级依次降低。自动循环方式 该方式下中断的优先级队列随时发生变化,当某个外设的中断请求得到CPU响应后,其中断的优先级自动降为最低。(初始的优先级队列规定为IR0 IR7)特殊循环方式 与自动循环方式不同之处是:特殊循环方式下的初始优先级队列可由编程决定。,特殊全嵌套方式 中断正被处理时,允许同级或更高优先级的事件可以打断当前的中断处理过程而被服务。注:特殊全
13、嵌套仅用于多个8259A级连时的主8259A,而不能用于从属8259A或单8259A系统。2、中断结束的管理方式(固定优先级的中断结束)中断结束的管理就是用不同的方式使ISR中相应位清零。普通结束方式EOI 8259A每得到一次EOI命令,就将ISR中已置位的各位中优先级最高的位复位。,特殊结束方式SEOI 该方式的特殊性在于,除了普通EOI方式的功能外,将明确指明本次复位的ISR位。自动结束方式AEOI 自动EOI方式是利用响应中断时最后一个响应脉冲的后沿执行一次普通EOI,而不需要CPU发送EOI指令。3、循环优先级的循环方法 在循环优先级方式中,与中断结束方式联合,有三种循环结束,结束时
14、并确定下面的优先权排队。普通EOI循环方式特殊EOI循环方式自动EOI循环方式,4、中断源屏蔽方式,普通屏蔽方式 中断屏蔽寄存器IMR的8个位与中断请求IR0IR7一一对应。对IMR编程,指定某些位为1,则屏蔽掉相应的中断请求。,特殊屏蔽方式提供了允许较低优先级的中断能够得到响应的特殊手段。原理:假定当前正在处理IR6,先进入特殊屏蔽方式,然后设置IM6=1。这时,除IR6外的所有中断请求均能得到响应。特殊屏蔽方式中只能用SEOI命令结束中断。,5、中断请求引入方式,电平触发方式 8259A依靠IR引脚上的有效高电平信号来触发,而与有效电平出现的方式和时间无关。,边沿触发方式 利用IR输入信号
15、由低电平跳向高电平时触发。当IR产生上升沿后,应保持高电平直到中断被相应为止。,查询方式 允许8259A不工作于中断方式,而是以查询方式工作。因为CPU中的IF=0,CPU要使用软件查询来确定中断源,才能实现对外设的中断服务。因此即有中断的特点,又有查询的特点。,6、连接系统总线方式,缓冲方式 多片级连时,8259A通过8288与系统总线相连。,非缓冲方式 单片或少量级连时,一般将它直接与系统总线连接。,四、8259A的编程,初始化命令字ICW,操作命令字OCW;系统复位后,应初始化编程,按次序只写一次;设定触发方式、缓冲方式、中断类型号基值、优先级、结束方式初始化后,在任何位置可操作编程,没
16、有严格的顺序,允许重置,以动态改变8259A的操作与控制。,8259A初始化流程图,1、初始化编程,ICW1,ICW2,ICW4,ICW3,2、操作命令编程,OCW1,OCW2,OCW3,8259A的操作编程并没有固定顺序,各命令字之间用地址信号A0及特征位加以区分。,说 明,1、查询方式 OCW3中D2位P=1,关闭中断,即可通过查询方式响应外设的服务请求:从数据总线上读取一个字节,内容为:其中I=1表示该8259A芯片有外设服务请求,W2W0表明了请求服务的最高优先权编码。I=0则表示无请求。,2、读8259A 读IMR:地址信号A0为1时读8259A,可取得中断屏蔽寄存器IMR的状态。读
17、IRR:地址信号A0为0,且当OCW3的D1位RR、D0位RIS被置为10时,可在下一个读脉冲期间读得中断请求寄存器IRR的状态。读ISR:地址信号A0为0,且当OCW3的RR、RIS位被置为11时,可在下一个读脉冲期间读得中断服务寄存器ISR的状态。,四、8259A的应用举例,例1:8086最小模式与8259A接口如下,外设中断请求分别从IR2、IR4、IR7引入,中断类型号从0C0H0C7H,采用上升沿触发,写出8259A初始化程序。,端口地址:10000100B 84H10000110B 86H,CLI;关中断MOVAL,13H;ICW1:00010011B边沿触发,单片,需要ICW4O
18、UT84H,ALMOVAL,0C0H;ICW2:中断类型码的D7D3位为11000OUT86H,ALMOVAL,01H;ICW4:00000001B 全嵌套,非缓冲,非自动EOI,80X86OUT86H,ALMOVAL,6BH;OCW1:01101011B屏蔽IROUT86H,ALSTI;开中断,若要读IRR的内容,MOV AL,0AH;OCW3:00001010BOUT 84H,ALNOPIN AL,84H,若要读ISR的内容,MOV AL,0BH;OCW3:00001011BOUT 84H,ALNOPIN AL,84H,若要读IMR的内容,可直接从高地址读入,IN AL,86H,若中断是关
19、闭的,可采用查询方式,看是否有中断,NEXT:MOV AL,0CH;OCW3:00001100B OUT 84H,AL NOP IN AL,84H TEST AL,80H JZ NEXT,例2:某8086系统中有两片8259A,从片接主片的IR4,主片IR2、IR5有外部中断引入,类型号分别为62H、65H;从片IR0、IR3有外部中断引入,类型号分别为40H、43H。设主片的一个端口地址为82H,从片的一个端口地址为84H,分别进行初始化编程。,分析端口地址:主片 10000010 82H 10000000 80H从片 10000100 84H 10000110 86H类型号基值:主片 60
20、H从片 40H,主片初始化程序,MOV AL,11H;00010001B 边沿触发 级连OUT 80H,AL;MOV AL,60H;类型号基值OUT 82H,AL;MOV AL,00010000B;OUT 82H,AL;MOV AL,11H;00010001B 特殊嵌套 非缓冲 非自动 80X86OUT 82H,AL;MOV AL,11001011B;OUT 82H,AL;,从片初始化程序,MOV AL,11H;00010001B 边沿触发 级连OUT 84H,AL;MOV AL,40H;类型号基值OUT 86H,AL;MOV AL,00000100B;OUT 86H,AL;MOV AL,11H;00000001B 完全嵌套 非缓冲 非自动 80X86OUT 86H,AL;MOV AL,11110110B;OUT 86H,AL;,中断服务程序,主片:INT2 PROC MOV AL,00100000BOUT 80H,AL;中断结束STI IRETINT2 ENDP从片:INT0 PROCMOV AL,00100000BOUT 80H,ALOUT 84H,AL;中断结束STI IRETINT0 ENDP,