微机原理 微型计算机中断系统_第1页
微机原理 微型计算机中断系统_第2页
微机原理 微型计算机中断系统_第3页
微机原理 微型计算机中断系统_第4页
微机原理 微型计算机中断系统_第5页
已阅读5页,还剩68页未读 继续免费阅读

下载本文档

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

文档简介

第九章微型计算机中断系统9-1概述9-2可屏蔽中断处理过程9-3中断优先级和中断嵌套9-4可编程中断控制器8259A教材第七章内容9-1概述

一、中断概念1、中断思想的提出CPU与外设数据传送时的矛盾:高速CPU与慢速外设;数据传送方式:无条件方式、查询方式

缺点:

外设有限制或处理器运行时间极大浪费,工作效率低。

解决办法:一方面设法提高外设的工作速度;另一方面提出设想:外设主动提出请求,CPU响应处理--中断思想2、使用中断的好处提高效率CPU在启动外设后与外设同时工作。当外设的数据准备好向CPU发中断请求,CPU响应处理。CPU可让多个外设同时工作,这将加快数据传送速度、提高CPU的效率。实现实时处理实时控制时,现场各种信息可随时发出中断请求故障自行处理将计算机在运行的过程中常遇到的意外情况,如:电源突跳,存储器出错,运算溢出等设计成中断,计算机可利用中断系统自行处理或告警。3、中断的定义CPU正常运行程序时,由于CPU的内部事件或外设请求,引起CPU暂时中断正在运行的程序,转去执行相应的外设(或内部事件)的服务程序,程序执行完后又返回到原先的程序继续执行,这一过程称为中断。中断流程如下页图所示4、与中断相关的基本概念中断源中断类型号中断请求中断响应中断服务程序中断返回中断向量中断向量表中断优先级中断嵌套中断屏蔽5、中断系统的基本功能(1)中断响应,中断服务,中断返回,中断屏蔽;(2)中断优先级排队;(3)中断嵌套。注意:这些功能是由软件与硬件共同构成的系统完成的。本章讨论与8086/8088CPU相配合的中断系统

二、中断的分类(中断源的分类)8086/8088可以处理256种不同的中断。两类:内部中断和外部中断。中断源示意图如下图:8259A可屏蔽中断请求中断逻辑INTO指令INTn指令除法出错单步(TF=1)非屏蔽中断请求8086/8088CPUNMIINTR内部中断外部中断可屏蔽中断非屏蔽中断1、外部中断(硬件中断)不可屏蔽中断NMI不能用软件屏蔽,CPU必须响应;上升沿触发;中断的类型号为2。可屏蔽中断INTRIF=1,CPU响应中断;IF=0,CPU不响应;高电平触发,高电平维持到CPU响应中断时结束;中断类型号由中断控制器8259A或硬件电路提供。2、内部中断(软件中断)由三种情况引起:由软中断指令INTn引起

INTn指令,类型号n(0-255)。由CPU运算错误引起除法出错中断:类型号0溢出中断:类型号4,由INTO指令引起的中断;2、内部中断(软件中断)(续)由调试程序debug设置的中断单步中断:类型号1,TF=1时产生(当前指令需执行完);Debug状态下的T命令执行时产生;断点中断:类型号3,INT3指令引起的中断,属于软件中断Debug状态下由G命令设置,相当于是在程序的某个位置设置了一条INT3。引脚

INTR、INTA#、NMI指令

INTn、INTO、IRET三、与中断有关的引脚和指令不同类型的中断处理过程略有不同,本节所介绍的内容主要针对可屏蔽中断的处理过程。可屏蔽中断处理过程步骤:中断请求中断响应保护现场转入执行中断服务子程序恢复现场中断返回9-2可屏蔽中断处理过程1、CPU响应可屏蔽中断的条件(1)外设提出中断申请;(2)本中断未被中断控制器屏蔽;(3)本中断优先级最高;(4)CPU允许中断;一、CPU响应可屏蔽中断过程2、CPU响应可屏蔽中断的过程CPU在每条指令的最后一个T周期,检测INTR,若为高电平,且IF=1,则CPU响应中断。响应过程中自动依次完成以下工作:CPU向外设发两个/INTA,外设收到第2个/INTA后,立即往数据线上给CPU送中断类型号。CPU从数据线上读取中断类型号;将PSW入栈;保护现行程序运行结果产生的状态和控制标志。CPU响应中断的过程关中断(清IF和TF)为了防止在进入中断处理,但并未执行中断程序这段时间内又响应新的中断。保护断点将当前指令的下一条指令的CS和IP压入堆栈,使中断处理完成后能正确的回到原程序继续执行。转入相应的中断服务子程序;中断返回从堆栈中弹出断点的地址和PSW的内容,返回主程序的断点处,继续执行主程序。CPU响应中断的过程确定中断源的方法:查询中断和矢量中断。查询中断:一种软件查询法,中断响应后,启动中断查询程序,依次查询哪个外设申请了中断,检测以后,转到此设备预先设置的中断服务程序处执行。这种中断处理过程称为查询中断。特点:速度慢,且后检测的设备服务机会少。矢量中断:中断响应后,外设中断接口电路将中断类型号送给CPU,CPU根据中断类型号找到对应的中断服务程序的入口地址送入CS或IP,然后转入相应的中断服务程序处执行。这种中断处理过程称为矢量中断,也叫向量中断。特点:速度快。二、中断向量表中断类型号n与中断向量的地址关系:n×4=中断向量地址(4n和4n+1)→IP

(4n+2和4n+3)→CS1、中断向量表(又称:中断服务程序的入口地址表)3FC【例】某中断的类型号为68H,中断的操作过程如下:步骤分析:取中断类型号68H;计算中断向量地址68H*4=1A0H;取中断入口地址的偏移地址送入IP,段地址送入CS;转向中断服务程序;中断返回到INT68H指令的下一条指令。类型69H中断向量A0002050类型67H中断向量中断处理程序STIPUSHDS…..….IRET2050INT68HMOVAX,00:19C0:1A00:1A20:1A4A000IPCSA000:2050向量地址=68H×4=1A0H①②③④⑤中断操作过程图示2、中断向量(中断入口地址)的设置IBMPC对256种中断类型已经进行地址分配,附录D中给出中断向量表。概念:将中断服务程序的入口地址置入中断类型号所对应的中断向量表中。两种方法:用指令设置;用DOS功能调用设置。用指令设置中断服务程序的入口地址表MOVAX,0MOVES,AXMOVBX,N*4MOVAX,OFFSETINTRADMOVES:[BX],AXMOVAX,SEGINTRADMOVES:[BX+2],AXSTI

…..INTRAD:PUSHAX

…..IRETPUSHDSMOVAX,0MOVDS,AXMOVBX,N*4MOVAX,OFFSETINTRADMOV[BX],AXMOVAX,SEGINTRADMOV[BX+2],AXPOPDSSTI

…..INTRAD:PUSHAX

…..IRET利用DOS功能调用设置中断服务程序的入口地址表

……

PUSHDSMOVAX,SEGINTRAD;

MOVDS,AXMOVDX,OFFSETINTRADMOVAL,NMOVAH,25HINT21H

POPDS

……利用DOS功能调用设置中断服务程序的入口地址表3、中断类型号的获取矢量中断中,中断入口地址依赖中断类型号,中断型号获取方法:对于专用中断:除法出错、单步中断、不可屏蔽中断、断点中断和溢出中断,由CPU分别提供中断类型号0~4;对于用户自己确定的软件中断INTn,类型号由n决定;对于INTR引脚上的中断:由硬件电路设计产生中断类型号。可用8259A获取中断类型号。三、中断服务子程序1、中断服务子程序特点为”远”过程(类型为FAR)要用IRET指令返回2、中断服务子程序一般结构形式保护现场(PUSHreg’s)

开中断(STI)

进行中断处理

关中断(CLI)

恢复现场(POPreg’s)

中断返回(IRET)

【总结】中断处理过程中软件及硬件各自完成的功能归纳1.主程序中的初始化(1)设置中断向量;(2)设置8259的中断屏蔽寄存器的中断屏蔽位;(3)设置CPU中断允许标志位IF(开中断STI);2.中断服务子程序

3.硬件(外设接口)和CPU自动完成(1)外设向CPUINTR端发出请求;(2)CPU发两个/INTA给外设;(3)CPU取中断类型号n;(4)CPU自动将PSW,CS,IP内容压入堆栈;(5)清除IF,TF,禁止外部中断和单步中断;(6)从中断向量表中取(4n)地址中内容→IP,取(4n+2)地址中内容→CS;(7)转向中断服务子程序。设计一个能接收一个中断源的中断系统,用8088CPU。【例】

主程序初始化将中断服务程序的入口地址装入中断向量表

……

PUSHDSMOVDX,OFFSETINTER1

MOVAX,SEG

INTER1

MOVDS,AXMOVAL,80HMOVAH,25HINT21HPOPDSSTI……可屏蔽中断处理程序INTER1PROCFARPUSHAX;保护现场STI;开中断以便允许;多重中断...;中断处理CLI;关中断POPAX;恢复现场IRET;返回主程序INTER1ENDP

实际系统还有两个问题需要解决:多个中断源同时向CPU请求中断,CPU应该响应哪个中断源的请求呢?当CPU正在处理某个中断,且IF=1,这时若有新的中断请求产生,CPU要不要响应呢?以什么原则去响应?9-3中断优先级和中断嵌套1、不同级别中断优先级顺序IBMPC机中,优先级从高到低的顺序如下:(1)内部中断(除法错,INTO,INTn)(2)NMI(3)INTR(4)单步中断一、中断优先级一般原则:级别不同的中断同时发生时,由高到低依次处理。级别相同的中断同时发生时,按事先设定的次序处理2、可屏蔽中断的优先级设定方法软件查询中断优先级查询程序的次序,决定了外设优先级别的高低,先测试的中断源优先级别最高,依次下降。硬件查询优先方式——菊花链法矢量中断优先级一般是采用中断优先级控制器(如8259A)。可屏蔽中断的优先级设定--软件查询中断优先级中断请求寄存器PORTINTR0INTR1INTR2INTR3INTR4INTR5INTR6INTR7CPUINTR缓冲器.....D7~D0译码≥1软件查询中断优先级0号申请中断1号申请中断保护现场中断处理程序...恢复现场中断返回0号外设服务程序1号外设服务程序YYNN中断服务子程序处理流程移位法INAL,PORT

RCRAL,1

JCINTR0

RCRAL,1JCINTR1

……INTR0:……

……INTR1:……软件查询中断优先级中断服务子程序片断测试法INAL,PORT

TESTAL,01H

JNZINTR0

TESTAL,02H

JNZINTR1

……INTR0:……

……INTR1:……可屏蔽中断的优先级设定--硬件查询优先方式(菊花链法)矢量中断优先权控制器的原理图可屏蔽中断的优先级设定--矢量中断优先级中断服务寄存器中断类型寄存器优先级管理逻辑中断请求寄存器中断屏蔽寄存器由中断请求决定IR0IR1IR2IR7中断嵌套:当CPU正在处理中断时,有更高优先级别的中断请求,并且IF=1,CPU能响应更高级别的中断请求,而屏蔽掉低级的中断请求以8259A为例介绍,8259A在完全嵌套优先级工作方式下,中断优先级的顺序为:IR0、IR1……IR7。二、中断嵌套下面是一个中断嵌套的例子【说明】主程序必须有开中断指令,使IF=1,才能响应中断。进入中断处理程序时,系统自动关中断,在中断服务程序中必须有STI开中断指令,这样才可以允许其它中断进入实现中断嵌套。中断结束返回前要有EOI中断结束命令,用来清除中断服务寄存器中的对应位,允许低级中断进入。最后有中断返回指令IRET,使程序返回到被中断的程序的断点处。中断处理程序中如果没有STI指令,中断处理中不会受其它中断影响,在执行IRET指令后,因为自动返回中断断点及中断标志寄存器PSW的内容,当IF的值为1,系统便能开放中断。一个正在执行的中断处理程序,中断服务寄存器相应位置“1”,在开中断(IF=1)的情况下,能够被优先级高于它的中断源中断。但如果中断处理中提前发出了EOI命令,则清除了正在执行的中断服务,中断服务寄存器置“1”位被清0,允许响应同级或低级的中断申请。但这种情况要尽量避免,防止重复嵌套,使优先级高的中断不能及时服务,因此一般EOI结束命令放在中断返回指令IRET前面。设系统有两个外部中断源,类型号分别是40H、41H。试用链式结构实现8088中断系统的扩展。要求:a.画出实际电路。b.编写程序,实现不同的中断能转入相应的服务程序入口处。【例】解:a.画出实际电路...MOVDX,0FFSETINTER1MOVAX,SEGINTER1

MOVDS,AXMOVAL,40H

MOVAH,25H

INT21H...b.主程序

MOVDX,0FFSETINTER2MOVAX,SEGINTER2

MOVDS,AXMOVAL,41H

MOVAH,25H

INT21H中断服务程序INTER1PROCFARPUSHAX;保护现场

STI

;开中断,以实现多重中断....POPAX;恢复现场IRETINTER1ENDPINTER2PROCFARPUSHAX;保护现场

STI

;开中断,以实现多重中断....POPAX;恢复现场IRETINTER2ENDP主要内容:引脚和功能内部结构8259A的中断管理方式8259A的编程方式8259A的中断级联及举例9-4可编程中断控制器8259A1、引脚一、引脚和功能(2)每一级中断可由程序单独屏蔽或允许;(3)可提供中断类型号传送给CPU;(4)可以通过编程选择多种不同工作方式。2、主要功能(1)具有8级优先级控制,通过级联可以扩展到64级优先级控制;二、内部结构级联缓冲器/比较器控制电路数据总线缓冲器读/写控制电路中断服务寄存器(ISR)优先级管理逻辑(PR)中断请求寄存器(IRR)中断屏蔽寄存器(IMR)IR0IR1IR7RDINTWRSP/ENCSA0D7~D0CAS0CAS1CAS2INTA8259A的读写功能1、中断嵌套方式普通全嵌套方式特殊全嵌套方式固定优先级方式自动循环优先级方式特殊循环优先级方式2、中断优先级循环方式3、中断屏蔽方式普通屏蔽方式特殊屏蔽方式自动EOI方式普通EOI方式特殊EOI方式4、中断结束方式边沿触发方式电平触发方式中断查询方式5、中断请求的引入方式6、连接系统总线方式缓冲方式非缓冲方式三、8259A的中断管理方式1、中断嵌套方式2、中断优先级循环方式3、中断屏蔽方式4、中断结束方式5、中断请求的引入方式6、连接系统总线方式7、级联方式CAS2CAS1CAS0INTD7~D0RDWRINTAA0CS8259A(主片)VCCSP/ENGND+5VCAS2CAS1CAS0INTD7~D0RDWRINTAA0CS8259A(从片)VCCSP/ENGND+5VINTRDBIORIOWINTAA08086译码电路输出译码电路输出IR0IR1IR2IR3IR4IR5IR6IR7IR0IR1IR2IR3IR4IR5IR6IR7三、8259A的中断管理方式四、8259A的编程分为两步:初始化编程:即设定初始化命令字ICW1~ICW4。在8259A开始正常工作前写入,只能设定1次。操作命令编程:

即设定操作命令字OCW1~OCW3。在8259A初始化后系统运行过程中,根据中断处理的需要,在程序的任何地方多次写入。1、初始化命令字(1)ICW1

——芯片控制初始化命令字IC4SNGL0LTIM1A5A6A70D0D1D2D3D4D5D6D7A0ICW1的地址

1:需要ICW40:不设ICW4

1:8259A单片方式

0:8259A级联方式ICW1

的标志位8080/8085用触发方式1:高电平触发

0:上跳沿触发(2)ICW2——设置中断类型号初始化命令字中断类型号基值,即IR0的类型号。其中低3位初始时为0,高5位由用户设定。工作过程中,低3位值由IR0~IR7中响应哪级中断(对应000~111)来确定。000T3T4T5T6T71D0D1D2D3D4D5D6D7A0中断类型的高5位(3)ICW3——标识主片/从片初始化命令字8259A主片格式:S0S1S2S3S4S5S6S71D0D1D2D3D4D5D6D7A00:表示IRi端上未接8259A从片1:表示IRi端上接有8259A从片Si=ID0ID1ID2000001D0D1D2D3D4D5D6D7A08259A从片格式:从片8259A的识别地址8259A→CPU00----从片CPU→8259A1EN输出1----主片1从片0主片1SP输入×0SP/ENM/SBUF1:8086/8088方式0:8080/8085方式1:中断自动结束0:非自动结束1:特殊全嵌套方式0:完全嵌套方式

PMAEOIM/SBUFSFNM0001D0D1D2D3D4D5D6D7A0非缓冲方式0缓冲方式/从片10缓冲方式/主片11(4)ICW4——方式控制初始化命令字ICW设置的顺序:写ICW1写ICW2SNGL=1?写ICW3IC4=1?写ICW4YNNY地址A0=0A0=1A0=1A0=1ICW功能:设定触发形式:电平、上升沿;设定工作方式:单片、级联;设定中断类型号基值;设定优先级方式;设定中断结束方式。【例】某系统要求使用一片8259A,中断请求为边沿触发,其8个中断源的中断类型号为80~87H,其端口地址为0920H、0921H分析:ICW1=00010011B

=13H

ICW2=10000000B

=80H

ICW4=00000001B

=01H

编程:MOV AL, 13H MOV DX, 0920H OUT DX, AL MOV AL, 80H MOV DX, 0921H OUT DX, AL MOV AL, 01H OUT DX, AL 初始化编程举例2、8259A的操作命令字及编程(1)OCW1——中断屏蔽操作命令字M0M1M2M3M4M5M6M71D0D1D2D3D4D5D6D7A01:屏蔽由IRi引入的中断请求0:允许IRi端中断请求引入Mi=【例】设某中断系统要求屏蔽IR3,IR5,8259A端口地址为20H、21H,编程指令为:MOVAL,00101000BOUT21H,ALRSLEOI操作功能001一般EOI结束命令011特殊EOI结束命令101自动循环优先级的一般结束命令100设置优先级自动循环方式命令000结束优先级自动循环方式的命令111设置特殊优先级循环的EOI结束命令110设置特殊优先级循环方式命令010无效优先级固定0优先级循环1不发结束命令0发结束命令1L2L1L0无效0L2L1L0有效1L1L0L200EOISLRA00标志位111IR7110IR6101IR5100IR4011IR3010IR2001IR1000IR0L2L1L0最低优先级编码(2)OCW2设置8259A的优先权循环方式和中断结束方式。(3)OCW3——特殊屏蔽方式和查询方式命令字

设定特殊屏蔽方式和中断查询的工作方式;设置读取8259A的IRR和ISR寄存器的内容。3、编程小结ICW在程序初始化时写入,要按顺序且只能设定1次OCW在初始化命令字之后,可根据需要在程序的任何位置去设置,可设置多次。ICW1、OCW2、OCW3写入8259A偶地址端口,用D4D3位区分;ICW2、ICW3、ICW4和OCW1写入8259A奇地址端口,用顺序区分。五、8259A的中断级联及举例一片8259A管理8级中断,当申请中断的外设多于8级时,可以将8259A级联使用,图7-14给出了两级级联的例子,第一级为8259A主片,第二级为8259A从片,主片可接1~8片从片,这样最多可以管理64级中断源。(工作过程见教材295页)外部中断请求+5VCAS2CAS0CAS1A0RDSP/NEIR7IR6IR5IR4IR3IR2IR1IR0INTWRINTAD0~D7CS从8259ACAS2CAS0CAS1A0RDSP/NEIR7IR6IR5IR4IR3IR2IR1IR0INTWRINTAD0~D7CS主8259A外部中断请求【例】

某系统中两片8259A采用中断级联方式组成中断系统,从片的INT端连主片的IR3端,若当前主片从IR1,IR5端引入两个中断请求,中断类型号为31H,35H。中断服务程序的段基址为1000H,偏移地址分别为2000H及3000H。从片IR4,IR5端引入中断请求,类型号为44H和45H。中断服务程序基址2000H,偏移地址为3600H和4500H。8259A级联编程举例(1)设置中断向量将4个中断源的入口地址写入中断向量表

MOVAX,1000H ;送段地址

MOVDS,AXMOVDX,2000H ;送偏移地址

MOVAL,31H ;中断类型号

MOVAH,25HINT21H

MOVDX,3000H ;送偏移地址

MOVAL,35H ;中断类型号

INT21H

MOVAX,2000H ;送段地址

MOVDS,AXMOVDX,3600H ;送偏移地址

MOVAL,44H ;中断类型号

MOVAH,25HINT21HMOVDX,4500H ;送偏移地址

MOVAL,45H ;中断类型号

INT21H(2)主片8259A初始化编程

8259A主片端口地址为FFC8H和FFC9H

MOVAL,11H;定义ICW1,主片级联使用,边沿触发;要设ICW4

MOVDX,0FFC8H

温馨提示

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

评论

0/150

提交评论