《微机原理与应用教学资料》第七章中断.ppt
1,第七章:中断操作和中断系统,7-1 概述7-2中断处理过程7-3 中断优先级和中断嵌套7-4 可编程中断控制器8259A,电气学院学习部资料库,2,7-1 概述,实时操作 外设 CPU,再CPU 外设例:外设键盘,原为空闲状态,现开始工作,CPU如何知道键盘何时工作呢?两种方法:a.每隔一段时间采样b.中断请求 显然,中断请求的方法较合理中断定义:当有外部数据输入或内部异常时,发送请求给CPU,CPU暂时停止正在运行的程序,处理中断结束后,返回继续运行先前的程序。两个最重要的特点:可返回性,现场保护(断点保护),电气学院学习部资料库,3,一.中断概念1.中断源 引起程序中断的事件 内部中断 外部中断2.中断响应 对外部中断而言 INTA对INTR的响应3.中断向量,中断向量表 中断源i中断服务子程序i 中断向量:中断服务子程序的入口地址(逻辑地址)CS:IP 中断类型码:中断向量的编号。0-255,与中断向量是一一对应的 中断向量表:内存中开出的一定区域,用来存储中断向量4.中断优先级:当同时有多个中断请求,先响应优先级高的 当一个中断服务程序正在执行时,又一个中断源申请中断:高不睬低,停低转高 中断嵌套5.中断屏蔽,电气学院学习部资料库,4,二.中断分类1、内部中断(软件中断)中断指令 INT n n-中断类型码 n=0255由CPU的运算错误引起的:a.除法错中断:INT 0(除数为零或商超过范围,自动产生中断)b.溢出中断:INT 4(当OF=1,且在程序中有INTO指令,产生中断)由调试程序debug设置的中断 a.单步中断:INT 1(当TF=1,每执行完一条指令,产生中断)b.断点中断:INT 3(利用G命令设置断点,当程序执行到断点,产生中断),电气学院学习部资料库,5,特点:由指令产生,中断类型码包括在指令中,不需要取中断类型码是可预见性的,是人为预先安排,中断处理子程序与主程序间有数据的传送。而硬件中断,两者之间则是相互独立。2、外部中断(硬件中断)不可屏蔽中断NMI a.上升沿触发 图 b.CPU必须予以响应,不能用IF屏蔽 c.INT 2,中断类型码为2,中断向量固定存放于0000:0008H 0000:000BH d.用于发生重大故障时申请中断,电气学院学习部资料库,6,可屏蔽中断 INTR a.电平触发 图 b.是否响应,与IF有关;对INTR的响应INTA c.中断类型号由硬件连线决定 d.一般事件申请中断,电气学院学习部资料库,7,7-2 中断处理过程,CPU响应中断的过程P268 流程图CPU自动完成的工作,电气学院学习部资料库,8,由流程图可见,CPU内部规定的优先级别:内部中断(除法错,溢出,INT n)NMIINTRTF单步中断 高低内部中断、NMI中断、单步中断,均无须取中断类型码。事先由系统约定好了断点保护(可返回)由CPU自动完成;现场保护由编程完成 转入中断子程序和调用子程序不同处:多了标志(PSW)入栈 CPU自动关中断。若想在中断响应过程中,允许中断嵌套,必须在子程序中开中断(STI)。运行中断子程序中,仍可响应NMI注:流程图中CS、IP为被中断程序的下一条指令的地址,电气学院学习部资料库,9,二.中断向量表1.寻找中断源方法:查询中断 用程序依次查询,费时 例:图7-3 开头循环查询部分矢量中断 各个设备的中断服务子程序的入口地址集中在一个表(中断向量表)中,CPU响应中断后,根据中断源提供的中断类型号 i,*4在中断向量表查找对应的中断服务子程序 i 的入口地址,装入CS、IP,转而执行中断服务子程序 i中断向量表位置:内存中0段 00000H003FFH 1K字节 表7-41个中断向量必须用4个存储单元来存储(1个地址CS:IP)地址低高 IP:CS 如图,电气学院学习部资料库,10,例1:中断类型号 中断向量地址 4 10H13H 32H C8HCBH例2:中断类型号64D=40H,中断操作过程:中断向量地址64D*4=256D=0100H。若中断向量中内容如图 则CS:IP=1312:1110转向中断服务程序中断返回到INT 40H指令的下一条指令,n n+1 n+2 n+3,0100H 0101H 0102H 0103H,电气学院学习部资料库,11,2.中断向量的设置预置:AL=中断类型号 DS:DX=中断服务程序入口地址 AH=25H执行:INT21H 3.中断类型码的获取除法错、单步、NMI、断点中断、溢出:由CPU自动提供,分别为04软中断指令 INT n:n中断类型号,由指令提供外部中断INTR:中断类型号由可编程控制器8259A获得,电气学院学习部资料库,12,三.中断处理子程序结构如图开中断:响应中断时,CPU已自动关中断,为允许中断嵌套,需重开中断关中断:恢复现场时不允许被中断执行IRET指令:从堆栈中依次弹出程序断点,送到IP和CS寄存器中弹出PSW的内容(恢复标志、开中断);按CS:IP的值使CPU返回断点,继续执行原来被中断的程序。,电气学院学习部资料库,13,四.中断时序(对可屏蔽中断而言),电气学院学习部资料库,14,7-3 中断优先级和中断嵌套,一.可屏蔽中断INTR优先级的设定软件查询:在中断处理子程序中安排查询,查询程序的次序,决定了优先级的高低.见后页简单硬件:菊花链法,越靠前的优先级越高。图8-8专用硬件:8259A,可编程的二.中断嵌套 图7-10同时申请中断时,响应高优先级的,正在执行中断时,高不睬低,停低转高。中断程序在保护现场后,须开中断,才能实现嵌套。中断服务结束后,须用EOI指令清除8259A中ISR的对应位,使低级中断申请得以响应,然后紧接着须有IRET,返回断点。,电气学院学习部资料库,15,查询方式,INTR0,INTR1,INTR n,INTR0,CS,INTR0中断程序,电气学院学习部资料库,16,菊花链电路,电气学院学习部资料库,17,7-4中断优先级控制器8259A,8259A特点:一片8259A可管理8个中断源,通过级连,可用9片组成64级主从式中断管理系统。可编程,使用灵活每一个中断可通过编程单独屏蔽或允许中断可提供中断类型号给CPU,电气学院学习部资料库,18,一、8259A引腿信号CS:片选。通过译码电路与CPU高位地址总线相连,即与译码电路的输出端相连A0:片内选址。连CPU低位地址线,选择8259A的两个端口、:连CPU的、。(最小模式)连8288总线控制器(最大模式)D7D0:数据总线INT:连CPU的INTR端,向CPU发出中断请求信号:连CPU的(最小模式),CPU给8259A 的中断响应信号,两个负脉冲 响应中断 读取中断类型号 连8288总线控制器(最大模式)7.IR7-IR0:连外设的中断请求信号线,中断级联时,连从片INT端,电气学院学习部资料库,19,8.CAS2CAS0 级联 单片8259A时,接高电平 SP/EN 二、8259A编程结构及工作原理数据总线缓冲器:写入控制字,读出8259A状态,送出中断类型号,接D0-D7 请求IRR:锁存外部中断请求信号IR0IR7,有中断请求时,对应位置1,中断请求被响应时,对应位复位屏蔽IMR:设置是否屏蔽IRR中相应位的中断请求,置1则屏蔽优先级判别PR:管理、识别中断源的优先级别。完全嵌套方式下,IR0最高中断服务寄存器ISR:存放正在处理中的所有中断请求信号,中断嵌套时,多位被置1。为以后的中断优先级裁决提供依据。,电气学院学习部资料库,20,电气学院学习部资料库,21,控制电路控制全过程:根据IRR的置位情况和IMR的设置情况,通过PR判定优先级,选出需处理的中断请求信号,送入ISR向CPU发送INT中断申请 INTR。接收CPU发出的第一个响应INTA负脉冲,ISR相应位置1,IRR相应位清0第二个负脉冲时,向CPU送出中断类型码,使CPU转入中断程序。三、8259A中断管理方式1.优先级设置方式完全嵌套方式 默认特点:中断优先级次序固定。IR0最高,IR7最低中断嵌套时,允许优先处理更高级的中断,禁止同级或低级中断ICW4中,SFNM=0;OCW2中,R.SL=0 0,电气学院学习部资料库,22,特殊全嵌套工作方式特点:中断优先级次序固定。IR0最高,IR7最低中断嵌套时,允许优先处理更高级或同级的中断ICW4中,SFNM=1,OCW2中,R、SL=0 0专门用于多片8259A级联的系统优先级自动循环方式特点:优先级次序可以改变,初始次序为IR0最高,IR7最低,但当任何一级中断被处理完后,它的优先级变为最低,将最高优先级赋给原先比它低一级的中断请求。例:响应处理完IR3,则优先级次序为IR4、IR5、IR6、IR7、IR0、IR1、IR2、IR3OCW2中,R、SL=1 0适用在多个中断源优先级相等的场合优先级特殊循环方式特点:优先级次序可以改变,初始的优先级次序由程序决定OCW2中,R.SL=1 1,电气学院学习部资料库,23,3.中断结束方式(什么时刻使ISR中对应位置“0”,就产生不同的中断结束方式)ICW4,OCW2中断结束处理的必要性:中断优先裁决的依据(一)固定优先级方式*普通EOI结束方式:用中断结束命非自动EOI结束方式 令使ISR对应位置“0”*特殊EOI结束方式*自动AEOI结束方式:不执行结束命令(二)循环优先级方式*普通EOI循环方式非自动EOI循环方式*特殊EOI循环方式*自动EOI循环方式(1)自动EOI结束方式 建议避免使用,以免重复嵌套中断响应后,当8259A收到第二个脉冲后,即自动将ISR中正在服务的相应位置“0”ICW4中AEOI位置“1”,电气学院学习部资料库,24,(2)普通EOI结束方式一旦中断处理结束,CPU向8259A传送EOI结束命令字(即设置OCW2),EOI结束命令字必须放在中断服务子程序中的返回指令IRET前8259A收到EOI结束命令字后,将ISR中优先级别最高的置“1”位清“0”ICW4中AEOI位置“0”,OCW2中,R、SL、EOI=0 0 1(3)特殊EOI结束方式当中断处理结束,CPU向8259A送特殊EOI结束命令,指定清“0”ISR中的哪一位8259A收到特殊EOI结束命令后,将ISR中由L2L0指定的相应位清“0”ICW4中AEOI位置“0”。OCW2中R、SL、EOI=0 1 1,电气学院学习部资料库,25,4.循环优先级的循环方法 OCW2(1)自动EOI循环方式 小心使用中断响应后,当8259A收到第二个脉冲后,即自动将ISR中正在服务的相应位置“0。同1同时自动改变各级中断的优先级别 本级(ISR3)最低优先级 下一级(ISR4)最高优先级OCW2中,R、SL、EOI=1 0 0(2)普通EOI循环方式当中断处理结束,CPU向8259A传送普通EOI循环命令字(即设置OCW2),同28259A收到EOI结束命令字后,将ISR中优先级别最高的置“1”位清“0”,同2,同时自动改变中断优先级别OCW2中,R、SL、EOI=1 0 1例7-10 IR0最高,IR7最低,IR2、IR5 普通EOI循环,电气学院学习部资料库,26,(3)特殊EOI循环方式当中断处理结束,CPU向8259A送特殊EOI结束命令,同3。8259A收到特殊EOI结束命令后,将ISR中由L2L0指定的相应位清“0”,同3。同时自动改变优先级别 OCW2中,R、SL、EOI=1 1 1,电气学院学习部资料库,27,5.中断源屏蔽方式 OCW1(1)CLI关中断指令禁止所有的可屏蔽中断(以下两种是对中断请求单独屏蔽)(2)普通屏蔽方式将IMR的某一位置“1”,即可屏蔽对应位的中断请求设置中断屏蔽操作命令字OCW1。例:IR7、IR5、IR1被屏蔽。若此时IR3正被处理,则IR3及比IR3低的中断申请被屏蔽,只有IR0和IR3的中断源可以产生中断嵌套。,电气学院学习部资料库,28,(3)特殊屏蔽方式希望在中断处理子程序中,对本级中断进行屏蔽,而允许较高或较低优先级的中断进入先设置OCW3中ESMM.SMM=1 1,再设置OCW1,使IMR中本级中断对应位置“1”中断服务子程序结束后,取消特殊屏蔽方式,恢复原先优先级的控制(设置OCW1,使复位;再设置OCW3中ESMM.SMM=1 0),电气学院学习部资料库,29,6.中断请求引入方式(1)边沿触发方式(2)高电平触发方式 8259A CPU,第二 个 负脉冲,读中断类型号(3)中断查询方式外设发出中断请求,8259A 在ISR中相应位置1CPU使用软件查询来确定 中断源CPU执行的查询程序应包括如下过程:a、CPU关中断b、CPU 8259A 偶地址 OCW3:D7 D6 D5 D4 D3 D2 D1 D0,电气学院学习部资料库,30,c、CPU 8259A 偶地址查询字:D7 D2 D1 D0IR=1:有外设请求中断 W2、W1、0IRi 0:无外设请求中断 组成的代码表示当前中断请求的最高优先级例:优先级次序为IR3、IR4、IR5、IR1、IR2若有中断请求IR2、IR4,则W2 W1 W0=1 0 0四、8259A的中断级联1.8259A与系统总线相连的方式:由初始化命令字ICW4来设置缓冲方式8259A通过总线驱动器和数据总线相连,电气学院学习部资料库,31,编程/双向使能缓冲端SP/EN 为输出端,与总线驱动器允许端相连=0 控制 8259A CPU=1 8259ACPU非缓冲方式8259A直接与数据总线相连 SP/EN为输入端,用来决定本片8259A是主片还是从片 SP=1 主片 SP=0 从片2.CAS0CAS2 指出具体的从片。当主片检测到中断请求来自从片,将从片的级联地址从CAS0CAS2输出到所有从片,只有级联地址与CAS0CAS2相同的从片才能选通。,电气学院学习部资料库,32,五、硬件连接及初始化程序一、硬件连接 图7-14 1、两级级联:1片主片,2片从片 2、非缓冲方式:无数据总线驱动器 3、CAS0CAS2:主片从片 4、INT:主:接CPU的控制总线 从:接主片的IRi端 5、:主:输入=1,接Vcc+5V 从:输入=0,接地 6、D7D0:接数据总线低8位 7、,A0:接地址总线 A0CPU的A1 接LS138译码输出,决定 端口地址 8、:接控制总线,电气学院学习部资料库,33,CS A0 D7D0 INTA INT CAS0 从 8259A CAS1 CAS2SP/EN IR0 IR1.IR7,CS A0 D7D0 INTA INT CAS0 从 8259A CAS1 CAS2SP/EN IR0 IR1.IR7,CS A0 D7D0 INTA INTCAS0CAS1 主8259A CAS2SP/EN IR0 IR1.IR7,GND,GND,VCC,AB,CB,DB,图7-14,电气学院学习部资料库,34,六、8259A的编程方式(自学)两类命令字:初始化命令字ICW;操作命令字OCW初始化命令字ICW1ICW4:由初始化程序设置的 初始化命令字一旦设定,在系统工作过程中将不再改变 初始化命令字必须顺序填写 ICW1、ICW2必须预置,ICW3、ICW4不一定,是否设置体现在ICW1,电气学院学习部资料库,35,操作命令字OCW1OCW3由应用程序设定,用来对中断处理过程进行控制在系统运行过程中,操作命令字可以重新设置设置OCW,次序上没有严格要求(OCW2命令字定义中断方式时,通常放在中断服务子程序中)一、初始化命令字ICWICW1芯片控制初始化命令字 A0 D7 D4 D3 D2 D1 D0,标志位,1:电平触发 0:上升沿触发,1:单级使用 0:级联,1:需要设置ICW4 0:不需要设置ICW4,电气学院学习部资料库,36,A0:写入命令字的端口地址。A0=0,表示ICW1必须写入8259A的偶地址端口中,例20H 例1:系统中8259A为单片方式,电平触发,要求设置ICW4则初始化ICW1的指令为:MOV AL,1BH OUT 20H,ALICW2设置中断类型号初始化命令字 A0 D7 D4 D3 D2 D1 D0 中断类型的高5位 作用:用来设置中断类型号的基值,即IR0端对应的中断类型号例2:若T7T3=00001,IR0的类型号为08H,IR0IR7:08H0FH 则初始化ICW2的指令为:MOV AL,08H OUT 21H,ALICW3标识主片/从片初始化命令字(当ICW1中SNGL=0时才设置),电气学院学习部资料库,37,主片A0 D7 D0 Si=0:表示IRi端上未接有8259A从片 1:表示IRi端上接有8259A从片从片 A0 D7 D0 ID2ID0=000111 表示从片接在主片的哪个IRi端ICW4方式控制初始化命令字(当ICW1中IC4=1时才设置),电气学院学习部资料库,38,A0 D7 D4 D3 D2 D1 D0,1:8086/8088配置 0:8080/8085,1:自动EOI方式0:非自动EOI方式,0:非缓冲方式 1:缓冲方式,1:特殊全嵌套工作方式 0:完全嵌套工作方式,电气学院学习部资料库,39,二、操作命令字OCW1中断屏蔽操作命令字A0 D7 D0 Mi=1:屏蔽由IRi引入的中断请求 0:允许 例:系统要求屏蔽IR4、IR7 MOV AL,10010000B OUT 21H,ALOCW2优先权循环方式和中断结束方式操作字,电气学院学习部资料库,40,A0 D7 D4 D3 D2 D1 D0,000:IR0 001:IR1 111:IR7,001:普通EOI方式 011:特殊EOI方式101:普通EOI循环方式111:特殊EOI循环方式 000:自动EOI循环(复位)100:自动EOI循环(置位)110:置位优先权命令 010:无效,标志位,电气学院学习部资料库,41,A0 D7 D4 D3 D2 D1 D0,0X:无效 10:下次有效,读IRR 11:下次有效,读ISR,1:查询8259A状态 0:不查询,0X:无效 10:特殊屏蔽方式复位 11:特殊屏蔽方式置位,标志位,电气学院学习部资料库,42,三、例:图7-14 中断向量的形成:将中断入口地址写入中断向量表 MOV AX,1000H MOV DS,AX;功能量AH=25H的中断21H调用 MOV DX,5020H 设置中断向量 DS:DX=中断向量 MOV AL,50H AL:中断类型号 MOV AH,25H INT 21H;设置IR0,中断类型号50H MOV DX,6100H MOV AL,52H INT 21H;设置IR2:52H MOV DX,3250H MOV AL,54H INT 21H;设置IR4:54H,电气学院学习部资料库,43,初始化编程 MOV AL,13H OUT 20H,AL;设置ICW1,边沿触发,单级使用,需要设置ICW4 MOV AL,50H OUT 21H,AL;设置ICW2,中断类型号50H57H MOV AL,01H;OUT 21H,AL;设置ICW4,完全嵌套方式,非缓冲方式,非自动EOI结束方式 MOV AL,OEAH OUT 21H,AL;定义OCW1,允许IR0、IR2、IR4,其余屏蔽。11101010B MOV AL,20H OUT 20H,AL;定义OCW2,普通EOI结束,电气学院学习部资料库,44,谢谢大家!,作业:2,10,15,16(选做),电气学院学习部资料库,