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

下载本文档

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

文档简介

,本章内容, 掌握中断技术的基本概念, 了解8086中断系统及其对各种类型中断的响应流程, 了解8259A中涉及到的有关概念, 掌握8259A的编程应用,8.1 中断系统的基本概念,一、什么叫中断?,中断示意图,日常生活中类似“中断” 的例子:,例1:门铃响时,放下手中正在做的事情,跑去开门,招待客人;客人走后,接着做原来的事情。,例2:教师讲课过程中,同学遇有疑问,不同理解之处,随时向老师提问。,二、应用中断技术的优点,1.实现CPU 与外设的并行工作,提高了 CPU 的效率。,查询方式的数据输入,中断方式的数据输入,二、应用中断技术的优点,1. 实现CPU 与外设的并行工作,提高了 CPU 的效率。,2. 实现实时处理。,3. 实现故障处理。,三、中断源,引起中断的原因,产生中断请求的来源。,通常有以下几种:,1. 一般的I/O 设备,如键盘、打印机等。 2. 实时时钟。 3. 故障源。 4. 为了调试程序而设置的中断。 (例如设置断点,单步运行等),四、中断系统的功能,计算机系统中,用于实现中断功能的硬件和软件的集合,称为中断系统。,中断系统应解决如下问题:,1. 中断请求信号的产生 ( 中断源如何申请中断?),CPU如何响应?(如何知道有中断请求? 是否有求必应?响应后的处理过程?),3. 中断优先权问题,4. 中断的具体服务,5. 中断服务完毕,如何返回原程序?,五、实现中断优先权的方法,判断和确定中断源的中断优先权,可以采用软件和硬件两种方法。,当系统中有多个中断源存在时,若有几个中断源同时提出申请,CPU先响应谁? 当CPU正响应某一中断过程中,又有另外的中断源提出中断请求,CPU是否响应? 为此提出了中断优先权的概念。,1. 用软件确定中断优先权,优先权管理电路,1.用软件确定中断优先权,软件查询流程图,优先权管理电路, 采用软件查询方式的特点:, 询问的次序,即为优先权的次序。 硬件简单。 由查询转至相应的服务程序的时间长,尤其在中断源较多的情况。,2.硬件方式,2.硬件方式,1,六、8086CPU 响应外部中断的过程,CPU 在每一个指令周期的最后一个总线周期的最后一个T状态采样INTR 或NMI 信号线。,下面以INTR 为例,说明8086 CPU 响应中断的过程。,讨论:,1. 为什么要在中断服务程序中执行STI 指令? 2. STI 指令在中断服务程序中的不同位置时,对CPU 处理中断有何影响?,七、小结,1. 实现断点地址的保护与恢复。 2. 实现现状信息的保护。 3. 实现中断优先权的排队。 4. 实现中断的嵌套。,中断过程由计算机的中断系统,配合用户设计的中断服务程序来实现。中断应具备以下功能:,8.2 8086CPU的中断系统,一、中断类型,8086能处理256种中断,分为两大类:外部中断和内部中断。其中断分类如右图,8086的中断分类,1. 外部中断 (硬件中断),(1) 非屏蔽中断 NMI (类型号为2),(2) 可屏蔽的中断INTR,高有效,CPU 是否响应,取决于 FR 中IF 的状态。常用于各种外设的中断。,2. 内部中断 (软件中断),通常由三种情况引起:,(1) INT n 指令中断 (n 为中断类型号),(2) 处理CPU 某些错误的中断, 除法错中断 (中断类型号为0) 溢出中断 (INTO) (中断类型号为4),(3) 为调试程序设置的中断,a 单步中断,当FR 中TF = 1时,每执行一条指令,CPU 产生类型为1 的单步中断。,b 断点中断,设置断点实际上是把指令“INT 3” 插入到程序中,CPU 每执行到断点处的“INT 3” 指令,便产生类型为3 的中断。,二、中断优先级,8086 系统中,中断优先级的次序为:,三、中断向量表,CPU 响应中断后,如何得到中断服务程序的入口地址 (中断向量),转入到中断服务程序?8086CPU 通过建立中断向量表的方法解决。,中断向量 (中断服务程序入口地址) 在表中的地址 = 中断类型号 4,中断向量表,四、中断向量的装入,BIOS 负责01FH 共32个中断向量的装入。用户若想装入自己的中断向量到向量表中的,可用以下方法:,1. 用STOS 指令填空中断向量表,假设类型号为60H 的中断向量为, CLI CLD MOV AX, 0 MOV ES, AX MOV DI, 460H ; DI 指向表中对应位置 MOV AX, OFFSET_INTR ; 取偏移地址 STOSW ; ALDI, AHDI+1 ;DI+2DI MOV AX, SEG_INTR ; 取段基址 STOSW STI ,SEG_INTR: OFFSET_INTR。,2. 利用MOV 指令写入中断向量, CLI MOV AX, 00H MOV ES, AX MOV BX, 460H ; BX 指向表中对应位置 MOV AX, OFFSET_INTR MOV ES:BX, AX ; 装入编程地址 MOV AX, SEG_INTR MOV ES:BX+2, AX ; 装入段基址,方法1,2由用户直接操作中断向量表,因此,要熟悉中断向量表的具体组织。,3. 利用DOS 功能调用“ INT 21H ” 的AH = 25 H 装入中断向量,MOV AL, 60H ; 类型号AL MOV AH, 25H ;功能号25HAH MOV DX, SEG_INTR MOV DS, DX MOV DX, OFFSET_INTR ;DS:DX=中断向量 INT 21H,方法3由DOS功能调用具体实现,中断向量表对用户是透明的。,1. 取类型号; 2. 计算向量地址; 3. 根据向量地址查表,将偏移地址送IP,段基址送CS; 4. 转入中断服务程序,进行中断处理。,五、8086CPU 转入中断服务程序的过程,8086转入中断处理程序的过程,六、 8086CPU中断响应流程,内部中断?,NMI?,INTR?,TF0?,执行下条指令,完成当前指令,IF1?,标志进栈,保存TF,将IF、TF清0,断点地址进栈,查中断向量表,转中断服务程序,保护现场,中断服务,恢复现场,开中断,返回,中断响应流程,第一个中断响应周期 AD7 AD0 浮空 第二个响应周期,取中断类型码,Y,Y,Y,Y,N,N,N,N,Y,N,内部中断?,NMI?,INTR?,TF0?,执行下条指令,完成当前指令,IF1?,第一个中断响应周期 AD7 AD0 浮空 第二个响应周期,取中断类型码,A,Y,Y,Y,Y,Y,N,N,N,N,N,Y,Y,N,8.3 8259A 可编程中断控制器,在微机系统中,可以使用8259A 扩展外部中断,Intel 8259A 可编程中断控制器,主要有以下功能:,3. 在中断响应周期,8259A 可提供相应的中断类型号。,1. 1片8259A 能管理8级中断,通过级联用9片8259A可以构成64 级主从式中断系统。,2. 每一级中断可以屏蔽或允许。,4. 可编程使8259A 工作在多种不同的方式。,一、8259A 的内部结构与引脚信号,8259A内部逻辑框图,1. 数据总线缓冲器,8位、双向、三态,是8259A与 CPU 之间的数据接口。,D0D7直接与CPU 数据总线的低8位连结。,2. 读/写控制逻辑,A0:常常与地址信号线A0相连。,8259A的两 个端口地址,3. 中断请求寄存器 IRR,因此,IRR记录外中断源IRi的请求信息。,4. 中断服务寄存器 ISR,8位,当IRi得到响应时,对应位置“1”。ISR 记录正在处理的IRi,当中断嵌套时,可能多位置“1”。,因此,ISR记录CPU对IRi的响应情况。,5. 中断屏蔽寄存器 IMR,8位,某位置“ 1”,对应IRi 禁止产生中断。,因此,IMR控制是否对IRi进行屏蔽操作。,6. 优先权电路,实现优先权的判断与处理,采用编码器和比较器电路,如下图所示。,8259A中的中断优先权电路,7. 控制逻辑,(1)由IRR等情况,向8259A 其它部件发出控制信息。,(2)向CPU 发出INT 信号,接收CPU,信号。,8. 级联缓冲/比较器,可以实现8259A的级联,扩展外中断。,(1) CAS2、CAS1、CAS0 引脚, 主8259A: CAS2CAS0 输出,输出被 响应的从片的标志码。,问题:8259A级联时,如何确定主8259A的IRi接有从片,从片接入主8259A的IRi?,从片A标志码:011,从片B标志码:110, 当8259A 工作于非缓冲方式 (直接与CPU 的DB 相连),为输入,是主从芯片定义引脚。, 当8259A 工作于缓冲方式 (通过总线缓冲器与 CPU 的DB 相连),此时,主从芯片的定义由ICW4中的M/S实现。,8259A 的引脚图,二、8259A 的中断处理过程,下面以8259A单片使用为例,说明其中断处理过程。,1、当一条或多条中断请求线IR0 IR7变高时,设置相应的IRR位。,2、PR对中断优先权和中断屏蔽寄存器的状态进行判断之后,如某中断优先权最高且为允许中断状态,就向CPU发高电平信号INT,请求中断服务。,三、8259A 的工作方式,8259A有多种工作方式,这些工作方式可以通过初始化命令字(ICW1ICW4)和操作命令字(OCW1OCW3)来设置。,1. 引入中断请求的方式,边沿触发方式。以上跳沿向8259A请求中断,上跳沿后可一直维持高电平,不会再产生中断。,电平触发方式。以高电平申请中断,但在响应中断后必须及时清除高电平,以免引起第二次误中断。,中断查询方式。外设通过8259A申请中断,但8259A却不使用INT信号向CPU申请中断,CPU用软件查询确定中断源,并为其服务。,2. 连接系统总线的方式, 在大系统中,要求数据总线有总线缓冲器。8259A与这种带总线缓冲器的系统总线连接的方式称缓冲器方式。,在小系统中,则8259A不需要总线缓冲器而是将其直接接至数据总线。8259A与这种不需总线缓冲器而直接连到系统总线的方式称非缓冲器方式。,3. 屏蔽中断源的方式,普通屏蔽方式。利用操作命令字OCW1,使屏蔽寄存器IMR中的一位或几位置1来屏蔽一个或几个中断源的中断请求。若要开放某一个中断源的中断请求,则将IMR中相应的位置0。,特殊屏蔽方式。在某些场合,在执行某一个中断服务程序时,要求允许另一个优先级比它低的中断请求被响应,此时可采用特殊屏蔽方式。它可通过OCW3的D6D511来设定。,4. 优先级排队的方式,全嵌套方式。在此种方式下中断优先级按0 7顺序进行排队,只允许中断级别高的中断源去中断中断级别低的中断服务程序。,特殊全嵌套方式。它和全嵌套方式基本相同,所不同的是在特殊全嵌套方式下,当执行某一级中断服务程序时,可响应同级的中断请求,从而实现对同级中断请求的特殊嵌套(8259A级联使用时,某从片的8个中断源对主片来说,可以认为是同级的)。特殊全嵌套方式用于多片级联。,固定优先级方式。在这种方式下,优先级顺序是固定不变的。其优先级顺序规定为IR0,IR1,IR7。该方式在大多数系统中得到应用。,优先级自动循环方式。在这种方式下,优先级顺序不是固定不变的,一个设备得到中断服务后,其优先级自动降为最低。其初始的优先级顺序规定为IR0,IR1,IR7。该方式用在系统中多个中断源优先级相等的场合。,优先级特殊循环方式。这种方式与优先级自动循环方式唯一的区别是,其初始的优先级顺序不是固定IR0为最高,然后开始循环,而是由程序指定IR0 IR7中任意一个为最高优先级,然后再按顺序自动循环,决定优先级。,5. 结束中断的处理方式,自动中断结束方式。在中断服务程序中,中断返回之前,不需发中断结束命令就会自动清除该中断源所对应的ISR位(实际上在CPU发第二个信号时,8259即自动消除ISR中的对应位)。这种方式用在多个中断不会嵌套的系统中。,非自动中断结束方式。在中断服务程序返回之前,必须发中断结束命令才能使ISR中的当前服务位清除。,四、8259A 的初始化命令字,8259A 初始化编程时,有四个初始化命令字ICW(Initialiation Command Word),即ICW1ICW4 ;8259A工作期间,有三个操作命令字OCW(Operation Command Word),即OCW1OCW3。,8259A 只有两个端口地址,A0=,0 偶地址端口,1 奇地址端口,因此,对8259A读/写操作时,要注意控制字,写入的端口地址,写入的顺序,有关的标志位,1. ICW1,(IRi 触发方式,是否单片使用,是否写入ICW4), LTIM:规定IRi的触发方式,1 高电平触发,=, SNGL:是否单片使用,1 单片使用,0 级联使用,=, IC4:是否写入ICW4,1 后面写入ICW4,0 不写入ICW4,=,例:某8086微机系统中,使用单片8259A,中断请求信号为上升沿触发,需要设置ICW4,端口地址为20H,21H,则其初始化命令字ICW1应为:0001001113H,设置ICW1的指令为:,MOV AL,13H,OUT 20H,AL,2. ICW2,(中断类型号的高5位),(中断类型号的低3位由8259A 自动编码产生),例:某PC机中8个可屏蔽中断(IR0 IR7)的类型号为08H 0FH,A01,端口地址为21H,则ICW2为:08H,设置ICW2的指令为:,MOV AL,08H OUT 21H,AL,3. ICW3,(级联时,主从芯片的级联引脚),若ICW1 中SNGL=,1 不写入ICW3,0 写入ICW3,(1) 写给主片的ICW3,Si = 1, 表示主片IRi上接有从片。,(2) 写给从片的ICW3,例:某8086微机系统中,主片8259A的IR2,IR6引脚上分别接有从片8259A,则主、从片的ICW3初始化命令字设置如下:,主片初始化命令字:(口地址设为20H, 21H),MOV AL,44H ;44H为主片的ICW3,表示其IR6,IR2上接有从片,OUT 21H,AL ;将ICW3写入奇地址端口,从片1的初始化命令:(口地址为30H,31H),MOV AL,02H OUT 31H,AL,从片2的初始化命令:(口地址为40H,41H),MOV AL,06H OUT 41H,AL,4. ICW4,0 正常的完全嵌套方式,1 特殊的完全嵌套方式,(1) SFNM: 规定8259A中断的嵌套方式,(单片使用时,两种方式一样。),SFNM=, 正常的完全嵌套方式, 特殊的完全嵌套方式,注意:级联使用时,某一从片的IRi对主片来说是同级的(同级中断)。,此处,要理解同级中断的概念!,若主、从8259A工作于固定优先权方式,从片的优先级为IR0IR1 IR7。但对主片来说,从片的IR0 IR7 是同级的。,1 缓冲方式,0 非缓冲方式,(2) BUF,=,(3) M/S, 当8259A 工作于缓冲方式时 (BUF=1) , M/S用于定义主、从芯片。, AEOI = 1 自动中断结束方式,当CPU 发出第二个 后,ISR 中的相应位复位,此时,不适宜实现中断嵌套。, AEOI = 0 非自动中断结束方式,由程序发出EOI 命令 (由8259A 的OCW 实现),使ISR 中相应位复位。,五、8259A 的初始化编程逻辑,8259A的初始化流程,注意:级联使用时,主、从8259A都要作初始化操作。,例:PC/XT 系统中8259A的初始化编程,20H、21H为8259A的端口地址,,在BIOS 中,8259A的初始化程序段如下:,MOV AL, 13H ; ICW1=0001,0011B, 边沿触发,单片使用, ; 要 ICW4. OUT 20H, AL MOV AL, 08H ; ICW2=08H, IR0IR7对应的中断类型号 ; 为08H0FH OUT 21H, AL MOV AL, 09H ; ICW4=09H, 正常的嵌套方式, ; 非自动中断结束方式 OUT 21H,AL,六、8259A 的操作命令字,对8259A 进行初始化编程后,8259A作好了接收中断请求输入的准备,在8259A 工作期间可由操作命令字OCW1OCW3 规定其各种工作方式。,1. OCW1(中断屏蔽操作命令字),设置或清除IMR 的各个位。,Mi=1 表示IRi被屏蔽,例:设OCW106H,则表示IR1,IR2 两 个引脚上的中断申请被屏蔽,其他的中断申请 (IR0,IR3IR7)则得到允许。8259A编程指令为:,MOV AL,00000110B ;OCW1屏蔽字 OUT 21H,AL ;屏蔽字写入奇地址口 ;的 OCW1寄存器,2. OCW2 (优先权循环方式和中断结束方式操作命令字),有两个作用:,(1) 8259A 工作于非自动中断结束方式时,如何复位ISR 中的对应位?有两种方法: SFNM, 一般方法:令SL = 0, EOI =1,将OCW2写入8259A后,将刚刚被服务的IRi对应位复位。, 特殊方法:令 SL = 1, EOI = 1,写入OCW2后,使L2L1L0指定的位复位。,(2) 定义8259A 的优先权工作方法, R = 0 固定优先权方式,IR0 IR1 IR7, R = 1, SL = 0 优先权自动循环方式, R = 1, SL = 1 优先权特殊循环方式,此时,L2L1L0 规定循环开始时的最低优先权,此时,优先权为:,例:若使8086系统中8259A的优先级顺序为IR3, IR4, IR5, IR6 IR7, IR0 IR1, IR2,试编写一段程序实现该优先顺序,设8259A的偶地址为20H。,根据题意要求,为实现上述优先级顺序,应先确定OCW2,然后将它写入8259A的偶地址端口:,MOV AL,0C2H ;OCW2 OUT 20H,AL ;把OCW2写入8259A的偶地址端口。,例:试编一段程序,用以清除8086系统中8259A的ISR第6位(ISR6),8259A的偶地址为20H。,为实现题意要求,应先确定OCW2的内容,然后将OCW2写入8259A的偶地址端口。,OCW2:,MOV AL,66H ;OCW2 OUT 20H,AL ;把OCW2写入8259A的偶地址端口。,3. OCW3,(特殊屏蔽方式和中断查询方式操作命令字),有三个作用:,(1) 设置和撤消特殊屏蔽工作方式, 正常的屏蔽方式,由OCW1 设置IMR 实现, 特殊的屏蔽工作方式,因此,可以通过设置或撤消特殊的屏蔽工作方式,动态改变优先权的结构。,(2) 为CPU 读取8259A内部寄存器提供选择,IN AL, INTA1 ; IMR AL,8259A 中的IMR由OCW1设置,对应奇地址端口,可以写入,也可以读出。, 8259A 中IRR、ISR 只能读出,不能写入,都对应偶地址端口。此时,可先写入OCW3,OCW3中的RR、RIS 规定从偶地址端口读出的是IRR 或ISR 的值。,例:试编写一段程序,以实现将8086系统中8259A的IRR,ISR,IMR三寄存器的内容读出并送入存储器从0080H开始的数组中,设8259A的偶地址为20H,奇地址为21H。,MOV AL,0AH ;OCW3=0AH, 指出要读IRR OUT 20H,AL ;OCW3写入8259A的偶地址端口 IN AL,20H ;读回IRR的内容 MOV 080H,AL ;将IRR的内容存入从080H开始的单元中 MOV AL,0BH ;OCW30BH,指出要读ISR OUT 20H,AL IN AL,20H ;读回ISR的内容 MOV 081H ,AL ;将ISR的内容存入内容 IN AL,21H ;读回IMR MOV 082H,AL ;IMR内容存入内存,(3) 使8259A 和CPU 的通信方式由中断方式 查询方式,某些情况下,当IF设置为0时,用查询方式为中断源服务。,令OCW3 中的P = 1,写入OCW3后,若之前有IRi有效,8259A 把CPU 的下一个读信号看作 信号,使ISR 中最高优先权的某一位置位,同时送以下数据至DB。,MOV AL, OCW3 ; 其中 P=1 OUT INTA0, AL ; 发OCW3 IN AL, INTA0 ; 读偶地址端口,此时,AL 中的数据,例:假如8259A的IR2输入引脚上有中断申请,但此时8086CPU内部的中断允许标志IF0,8086CPU应如何知道其8259A的IR2输入引脚上有中断请求?,为使8086CPU知道其8259A IR2引脚上有中断申请,可用中断查询方式来解决(即CPU先发一个查询命令OCW3,然后接收8259A的查询字),其程序如下:,OCW3为:,MOV AL,0CH ;P1查命令OCW3 OUT 20H,AL ;输出查询命令,即OCW3 写入8259A的偶地址端口 IN AL,20H ;读8259A的查询字,七、8259A 对ICW、OCW的识别,8259A 只占两个端口,但ICW 有4个,OCW有3个。,1. A0 = 0 (偶地址端口) 写入的有:,2. A0 = 1 (奇地址端口) 写入的有:,ICW2 ICW3 ICW4 OCW1,注意:初始化过程中可能没有ICW3或ICW4,应根据具体情况确定。,八、8259A编程举例,例 9.1 设8259A应用于8088系统,中断类型号为08H0FH,它的偶地址为20H,奇地址为21H,设置单片8259A按如下方式工作:电平触发,普通全嵌套,普通EOI,非缓冲工作方式,试编写其初始化程序。 分析:根据8259A应用于8088系统,单片工作,电平触发,可得:ICW1=00011011B;根据中断类型号为08H0FH,可得:ICW2=00001000B;根据普通全嵌套,普通EOI,非缓冲工作方式,可得:ICW4=00000001B 。写入置此三字,即可完成初始化,程序如下:,MOV AL, 1BH ;00011011B,写入ICW1 OUT 20H, AL MOV AL, 08H ;00001000B,写入

温馨提示

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

评论

0/150

提交评论