第5章 中断技术_第1页
第5章 中断技术_第2页
第5章 中断技术_第3页
第5章 中断技术_第4页
第5章 中断技术_第5页
已阅读5页,还剩133页未读 继续免费阅读

下载本文档

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

文档简介

浙江工业大学计算机学院1内容回顾DMA传输基本概念DMA的传送过程、传送方式和操作类型。DMA控制器8237A8237A的内部结构和外部引脚。8237A的内部寄存器(10种)及其地址分配。8237A的编程步骤和工作时序。PC中的DMA应用DMA系统的组成。单片DMA系统和双片DMA系统。DMA系统的应用实例。23第五章中断技术8259A的应用举例48086/8088微机中断系统28259A可编程中断控制器3PC机中的中断应用5中断技术概述1中断方式下,CPU无需完全服务于某个外设,效率高。当出现某些异常或某外设有请求时,CPU暂停正在执行的程序,转去执行某一特定的程序,执行完后再返回原来的程序处继续执行。

5.1中断技术概述4中断指CPU正在执行某程序的过程中,由于出现了某些异常或外设提出了某种请求,CPU暂停当前程序,转去处理异常或外设请求的程序,执行完后再返回原来被终止的程序处继续执行。该过程称为中断。主程序未发生中断时,CPU正在执行的程序称为主程序。5

(1)中断的常用术语中断服务程序ISR处理中断事件的程序,又称中断子程序。不同的中断对应不同的ISR。断点中断时,主程序中被终止指令的下一条指令的地址。CPU转去执行ISR时,断点被压入栈中进行保护;ISR执行完毕后,CPU通过出栈操作从栈顶获得中断断点,确保能返回到主程序处继续执行。6中断源引起中断的事件或设备。内部中断:在CPU的内部产生。例:CPU执行程序时遇到的特殊情况,如:除法错。外部中断:在CPU的外部产生。例:外设提出的中断,如电源故障。中断类型号微机系统中有多个中断源。为便于区分,为每个中断源分配一个编号,即中断类型号。7中断接口当中断源向CPU发中断请求时,需由一个电路来进行管理,如:接收中断请求、屏蔽/打开中断请求、中断优先级排队、中断嵌套和中断结束等。实现中断管理的逻辑电路称为中断接口。本章使用8259A可编程中断控制器对系统的中断进行管理。8中断识别指CPU确定哪一个中断源发出中断请求的过程。目的:最终形成该中断源所对应的中断服务程序的入口地址,实现程序的转移。中断识别的2种方法:查询法:采用软件或硬件查询技术来确定发出中断请求的中断源。硬件法:由可编程中断控制器来提供中断类型号。9中断向量和中断向量表中断向量:指中断服务程序的入口地址。每个ISR都有一个确定的入口地址。入口地址=段基址CS:

偏移地址IP,共4个字节。中断向量表:将系统中所有的中断向量集中起来,按中断类型号从小到大的顺序存放在内存某区域。该存储区域称为中断向量表。PC机中共有256个中断(0~255),每个中断向量占4个字节,共占1KB的存储区域。用0000~03FFH的内存单元存储中断向量表。1011

从中断源请求中断到完成ISR后返回主程序的过程,称为中断过程。包含4个阶段。中断源请求中断外设发出中断请求时,中断接口电路需设置中断请求触发器,保持外设的中断请求信号,直到CPU响应该中断后才清除它。中断接口电路应设置中断屏蔽寄存器,CPU可通过对其进行设置,使得某些中断源的中断请求不能提交到CPU。12

(2)中断过程中断判优由于同一时刻可能会有多个中断源同时请求中断服务,因此接口电路需对这些中断源进行优先级判别和优先级排队。这个过程称为中断判优。CPU按照优先级的高低顺序来响应中断。13中断响应收到中断请求后,若CPU满足响应条件,则进入中断响应周期。CPU响应中断的条件:CPU当前指令执行结束。没有更高级的中断请求在执行。CPU处于开中断状态(IF=1)。可用指令改变IF的状态:STI开中断;CLI关中断。1415中断响应及处理过程示意图中断响应周期需完成的操作(CPU硬件自动完成)清IF和TF单步陷阱标志,以免在响应过程中被新的中断源中断,破坏了当前中断处理的现场。将标志寄存器FLGAS和中断断点(CS:IP)压栈保存。查找中断向量表,获得ISR的入口地址,转去执行ISR。中断服务CPU转入ISR后,需做以下几件事情:保护现场:ISR将要用到的寄存器压栈,以免其数据破坏。开中断:以便在执行ISR时,能响应更高级的中断请求。中断处理:处理中断请求所要求的操作。关中断:保证在恢复现场时不被新的中断打断。恢复现场:在ISR结束前,执行出栈操作,恢复各寄存器的内容,以便主程序正确执行。开中断:保证返回主程序后仍能响应中断。中断返回:ISR的最后一条指令为IRET,它将IP、CS和FLAGS的内容依次弹出,以便恢复到主程序的断点处。16中断管理包括中断源识别、优先级排队和中断嵌套。中断源识别PC机内有多个中断源,CPU收到中断请求后,需识别是哪一个中断源发出了中断请求信号,以便执行相应的中断服务程序。中断源识别的两种方法:软件查询:CPU逐个查询各中断源的状态,从而确定是哪个设备发出了中断请求。硬件处理:中断接口电路将要响应的中断类型号送给CPU。17

(3)中断管理2.中断的优先级排队当有多个中断源同时请求中断时,由于CPU在同一时刻只能响应并处理一个中断请求,因此,需根据中断的性质及轻重缓急对中断源进行优先级排队。CPU先响应优先级高的中断请求。高优先级的中断请求可中断低优先级的中断服务。优先级排队的方法:软件查询法硬件菊花链排队法可编程中断控制器排队法18软件查询法19软件查询法的实现:屏蔽法20INAL,20H;读取中断请求触发器的内容TESTAL,80H

JNEA_ISP;外设A有请求,则转入A的服务程序TESTAL,40H

JNEB_ISP ;外设B有请求,则转入B的服务程序TESTAL,20HJNEC_ISP ;外设C有请求,则转入C的服务程序……移位法21INAL,20HSHLAL,1JCA_ISP ;外设A有请求,则转至A的服务程序SHLAL,1JCB_ISP ;外设B有请求,则转至B的服务程序SHLAL,1JCC_ISP ;外设C有请求,则转至C的服务程序……软件查询法的优缺点:优点:实现简单,节省硬件。缺点:中断源较多时,查询程序较长,由查询转入相应的中断服务程序入口需要的时间较长。查询的先后顺序决定了中断的优先级顺序:先被查询的中断,优先级最高。22硬件菊花链法在每个外设的接口上接一个逻辑电路,这些电路构成一个链来实现中断应答信号的控制,称为菊花链。23(a)菊花链

(b)菊花链逻辑电路

菊花链工作原理中断请求:设备A、B、C通过接口发出中断请求:1有请求,0无请求。只要有一个设备发出请求,则INTR=1。中断响应:若CPU允许中断,则发INTA中断响应信号。该信号先送给外设A的菊花链电路。若A没有请求,则它输出的INTA仍为0,继续往下传。若A有中断请求,则经过或门时,由于其中断请求为1,故输出的INTA为1,使得后继的中断得不到响应。24特点:越靠近CPU的外设,优先级越高。可编程控制器排队法早期的PC多采用软件查询或菊花链法。目前的PC一般采用专用的可编程控制器芯片来完成中断优先级的排队管理,如8259A。253.中断嵌套CPU正在处理某个中断的过程中,若出现了更高级的中断请求,则CPU停止执行级别低的ISR,而转去处理级别更高的中断。等高级别的中断处理完后,再返回原来的低级中断继续执行,依次类推,直到返回主程序。这种方式称为多重中断或中断嵌套。2627内容概要8259A的应用举例48086/8088微机中断系统28259A可编程中断控制器3PC机中的中断应用5中断技术概述1中断的常用术语:9个基本概念中断过程:申请、判优、响应、服务中断管理:判优、优先级、嵌套8086/8088用8位二进制数表示一个中断类型号,可区分256个中断源。8086/8088中断系统的结构28

(1)中断的类型外部中断

由CPU外的硬件产生,又称硬件中断。有以下2种:

①NMI(不可屏蔽中断)触发,不受IF标志位控制。只要有NMI,CPU在当前指令结束后,立刻响应该中断。中断类型号为2,CPU无需发中断应答即可立即执行2号中断的ISR。外部中断中,NMI的优先级最高,用于电源掉电、时钟错误等紧急情况,一般用户不能使用。29②INTR(可屏蔽中断)高电平触发,必须保持到当前指令结束。受IF标志位控制。STI:允许中断;CLI:禁止中断。中断类型号为08~0FH和070H~077H。当中断允许时,CPU发出中断应答信号INTA,并从8259A获得中断源的中断类型码。中断响应的条件:有中断请求系统处于开中断状态(IF=1)30内部中断

由CPU执行指令产生的中断,又称软件中断。

①除法错当除数为0,或对带符号数进行除法运算时所得结果超出规定的范围,则CPU自动产生该中断。中断类型号为0。31②单步中断调试程序时用。CPU每执行一条指令,就进入一次中断。功能:显示出CPU内部各寄存器的内容。受TF标志位控制。TF=1时,CPU自动产生单步中断。中断类型号为1。32③断点中断INT单字节中断指令,类型号为3。调试时可在程序关键处设置断点。当程序执行到该指令处,转去执行一个断点中断。功能:显示CPU内部各寄存器的内容,并给出一些提示信息。33④溢出中断INTO单字节中断指令。类型号为4。该指令常跟在带符号数加、减法运算指令之后。若标志寄存器的OF=1,则执行溢出中断,其中断服务程序给出出错信息。⑤用户定义的软件中断双字节中断指令INTn,由用户定义,类型号为n。不可被屏蔽。CPU不发响应信号,中断控制器不提供中断类型号。34内、外中断的优先级次序8086/8088系统中,除单步中断外,所有内部中断的优先级均高于外部中断。除单步中断外,所有内部中断都不能被屏蔽。

35中断名中断类型号优先级除法出错类型0高↑低INTn类型nINTO类型4NMI类型2INTR外设送入单步类型18086/8088系统支持256个中断源,各个中断源用不同的中断类型号标识,即:0~255。每个中断源都有相应的ISR,每个ISR都有不同的入口地址(又称中断向量)。每个入口地址由4个字节标识:低2个字节:存放中断入口的偏移地址(IP)。高2个字节:存放中断入口的段基址(CS)。系统各个中断入口地址的集合形成中断向量表。共占1KB空间,地址范围0000H~03FFH(DS=0)。36

(2)中断向量表37由于0~255号中断的入口地址依次连续排列,故:已知某中断的类型号为n,则其对应的ISR入口地址在中断向量表中的存储位置为4n。依次从4n处取出4个字节的内容,低2个字节送入偏移地址IP,高2个字节送入段地址CS,即:(IP)←(4n+1,4n)。(CS)←(4n+3,4n+2)。获得了中断的入口地址,即可转入相应的ISR执行中断处理过程。38【例5-1】已知类型号为15H的中断,其ISR存放在内存的5678H:0100H~5678H:0123H单元。画出该中断的中断向量在中断向量表中的位置和内容。解:ISR的入口地址为5678H:0100H,其中IP=0100H,CS=为5678H。已知中断类型号n=15H,n×4=15H×4=0054H,故0054H和0055H单元存放偏移地址0100H。0056H和0057H单元存放段地址5678H。由此可画出中断向量在中断向量表中的位置和内容。3940中断向量表建立中断类型号与中断向量间的关系。中断类型号固定不变,但其对应的中断向量(即存储的内容)可以修改和变化。(系统中的专用中断不允许修改)设置或修改中断向量前,要关闭中断,避免在设置或修改过程中被中断。设置中断向量的2种方法:直接写入法利用DOS功能调用41

(3)中断向量的设置与修改①直接写入法

直接使用MOV指令把中断向量写入向量表对应的单元。方法:设中断类型号为n,对应的中断服务程序名为P1,则将P1程序的偏移地址放到内存0000数据段的[4n+1]、[4n]单元中;将其段地址放到[4n+3]、[4n+2]单元中。4243CLI ;关中断MOV AX,0MOV DS,AX ;中断向量表段基址为0MOV BX,n*4 ;中断类型号为nMOV AX,OFFSETP1 MOV DS:[BX],AX ;偏移地址放入4n,4n+1单元MOV AX,SEGP1 MOV DS:[BX+2],AX ;段地址写入4n+2,4n+3单元STI ;开中断【例5-2】某外设的中断服务程序名为P1,中断类型号为5。请使用直接写入法设置其中断向量。44CLI ;关中断MOV AX,0MOV DS,AX ;中断向量表段基址为0MOV AX,OFFSETP1MOV DS:[0014H],AX ;

4*5=0014HMOV AX,SEGP1 MOV DS:[0016H],AX ;段地址写入0016H,0017HSTI ;开中断②DOS功能调用写入法

使用INT21H中断的25H号功能调用,设置中断向量。

功能号:AH=25H

入口参数:DS=中断服务程序入口地址的段基址DX=中断服务程序入口地址的偏移量AL=中断类型号45【例5-3】某外设的中断服务程序名为P1,中断类型号为5。请使用DOS功能调用法设置其中断向量。46PUSHDS ;原DS入栈MOV AX,SEGP1;段基址存入DS中MOV DS,AX MOV AX,OFFSETP1 MOV DX,AX ;偏移地址存入DX中MOVAL,5

;中断类型号在AL中MOVAH,25H;DOS调用功能号INT21HPOPDS

;DS出栈中断向量的修改

中断类型号不变,但是其指向的中断服务程序(入口地址)改变,即中断向量改变。

修改中断向量的步骤:利用35H号功能,获取原中断向量,并保存。利用25H号功能,设置新的中断向量。新的中断服务程序服务完毕,利用25H号功能恢复原中断向量。4735H号功能——读取中断向量

入口参数:AH=35H,AL=中断号

出口参数:ES=中断服务程序入口地址的段基址

BX=中断服务程序入口地址的偏移地址25H号功能——设置新的中断向量

入口参数:AH=25H,AL=中断号

DS=中断服务程序入口地址的段基址

DX=中断服务程序入口地址的偏移地址

出口参数:无48【例5-4】修改类型号为n的中断向量,使得新中断服务程序入口地址的段基址为SEG_INTR,偏移地址为OFFSET_INTR。对应的程序段为:49MOV AH,35H;获取原中断向量MOV AL,n INT21H

;保存在ES:BX中MOV OLD_OFF,BX

;保存原中断向量的偏移量

MOV BX,ESMOVOLD_SEG,BX;保存原中断向量的段基址

50MOV AH,25H;设置新的中断向量MOV AL,nMOVDX,SEG_INTR

MOVDS,DX

;DS=段基址MOVDX,OFFSET_INTR

;DX=偏移地址INT21H……MOV AH,25H;恢复原中断向量MOV AL,nMOVDX,OLD_SEG

MOVDS,DX

;DS=段基址MOVDX,OLD_OFF

;DX=偏移地址INT21H51内容概要8259A的应用举例48086/8088微机中断系统28259A可编程中断控制器3PC机中的中断应用5中断技术概述1中断的类型:外部中断与内部中断中断向量表:中断入口地址的排列中断向量表的设置与修改Intel8259A是一种可编程中断控制器,可协助CPU进行中断管理。其功能:接受和扩充外设的中断请求中断优先级排队提供中断类型号屏蔽或打开中断接受CPU命令或返回当前工作状态一片8259A可直接管理8级中断,通过级联可扩展至64级中断。通过对8259A进行编程,可设置多种工作方式,以满足不同中断系统的需要。52

5.38259A可编程中断控制器53

(1)8259A的内部结构1.数据总线缓冲器8位的双向三态缓冲器,连接8259A与系统数据总线。用于在CPU与8259A间传送数据、命令和状态信息。2.读/写控制逻辑接收CPU命令,完成对8259A内部端口的读写操作。具体操作内容由CS、RD、WR和A0

信号来决定。543.级联缓冲/比较器CAS0~CAS2用于多块8259A的级联。4.中断请求寄存器(IRR)8位寄存器,通过引脚IR0

~IR7与8个中断源相连。若IRi=1,表明对应的中断源有中断请求,则IRR寄存器相应的第i位置1。5.中断屏蔽寄存器(IMR)8位寄存器,第i位为1,表示屏蔽IRi的请求。其值可通过软件设置或改变。556.中断优先权判别电路PR对已进入IRR且未被IMR屏蔽的中断请求进行优先权判别,确定优先级最高的中断,向CPU发送中断请求信号INT。若8259A正在为某一中断服务时,又出现了新的中断请求,则PR判断新的中断请求优先级是否更高。若是,则进入中断嵌套。567.中断服务寄存器(ISR)8位,用来记录CPU当前正在为哪些中断源服务。当CPU响应IRi请求时,ISR中相应的位置1。当ISR中有多个1时,表明CPU处于中断嵌套

中。当某个中断处理完毕,ISR相应的位复位。578.控制逻辑作用:根据IRR、IMR和PR的状态,通过INT信号向CPU发送中断请求。接受CPU的中断响应信号INTA,置ISR相应的位,且使IRR相应的位清0,避免该中断源的一次请求产生多次中断。内部包含7个寄存器:ICW1~ICW4

存放初始化命令字,用来设置8259A的工作方式和工作条件等。OCW1~OCW3存放操作命令字,用来对中断处理过程进行动态控制。58几个缩写字母的含义IRR:中断请求寄存器(InterruptRequestRegister)IMR:中断屏蔽寄存器(InterruptMaskRegister)ISR:中断服务寄存器(InServiceRegister)PR:优先级裁决器(PriorityResolver)ICW:初始化命令字(InitializationCommandWord)OCW:操作命令字(OperationCommandWord)5960

(2)8259A外部引脚61D7~D0:双向三态数据线,与系统数据总线相连,在8259A与CPU间传送数据、命令和状态信息。A0:选择8259A内寄存器的端口地址。2种端口地址:A0=0的端口为偶端口,A0=1的端口为奇端口。WR、RD、CS:写、读、片选信号。IR7~IR0:中断请求信号,高电平或上升沿有效。INT:中断请求信号,高有效。向CPU发中断请求。INTA:中断响应信号,为2个负脉冲。CAS2~CAS0:级联信号线,双向。主片8259A的CAS2~CAS0为输出。从片8259A的CAS2~CAS0为输入。SP/EN:主从片设定/允许缓冲信号,双向双功能。缓冲方式下,为输出信号,EN信号控制缓冲器。非缓冲方式下,作为输入信号,表示8259A是主片(SP=1)还是从片(SP=0)。621.8259A的工作过程单片8259A工作时,每次中断处理过程如下:当IR7~IR0上有中断请求,则IRR相应的位置1。对于已进入IRR且未被IMR屏蔽的中断请求,PR电路进行优先级判定,得到最高级的中断请求。控制逻辑接收中断请求,向CPU发INT信号。若CPU允许中断,则在当前指令结束后连续发出2个中断应答信号INTA,进行中断响应。每个信号持续2个时钟周期。63

(3)8259A工作方式CPU发第一个INTA时,输出总线锁定信号LOCK,防止其它处理器或DMA控制器占用总线。8259A收到第一个负脉冲后,将优先级最高的中断ISR相应位置1,同时使IRR相应位清0。64CPU发第二个INTA时,撤销总线锁存信号LOCK,地址允许信号ALE无效,允许数据线工作。8259A收到第二个负脉冲后,将相应中断的类型号送到数据线上。CPU读取中断类型号,查找中断向量表得到中断向量,转而进入中断服务程序。若系统为自动结束中断方式(AEOI),则8259A会在第2个脉冲结束时,自动将ISR的相应位复位;

若为非自动结束中断方式(EOI),则ISR相应位的“1”一直保持,直到CPU发EOI(中断结束)命令时才将其复位。652.8259A的级联方式单片8259A最多可管理8级中断。当中断源多于8个时,需将多个8259A芯片级联构成主从模式。系统最多支持8个8259A芯片级联,即:最多可支持64个中断源。每个从片的IR7~IR0可直接与8个中断源相连,经过优先级判优后主片发送INT信号。主片对所有从片发来的INT进行判优后,最终向CPU发INT信号。6667SP/EN引脚用于区分8259A是主片还是从片。高电平为主片,低电平为从片。主/从片通过CAS2~CAS0互连。主片的CAS2~CAS0为输出,从片的CAS2~CAS0为输入。CPU发出第一个INTA时,主片使ISR相应的位置1,使IRR的相应位清0;并通过CAS2~CAS0输出一组从片的编码

ID2~ID0。从片收到该编码后,与自身ICW3中的D2~D0编码进行比较。若相同,则在第二个INTA信号将从片的中断类型号送到数据总线。683.中断触发方式电平触发:IRi端出现高电平时,有中断请求。

边沿触发:IRi端出现上升沿时,有中断请求。

69注意:当该中断请求得到响应后(ISR相应位置1),必须及时撤销其高电平,否则可能会再次触发中断。优点:IRi端可一直保持高电平,而不会被误判为又一次中断请求。4.中断屏蔽方式普通屏蔽方式中断屏蔽寄存器IMR的某位为1,则禁止相应的中断请求;为0,则允许。这种方式下,由于优先权判别器PR的作用(查ISR的状态),只有级别高的中断源才允许中断。若CPU不希望某些中断源申请中断,或在处理某中断时不希望比该中断级别低的中断源申请中断,可采用该方法。70特殊屏蔽方式在处理某中断时,若想开放级别较低的中断请求,则:(1)将IMR中本级中断的相应位置1,屏蔽本级中断,为开放级别较低的中断提供可能。(2)将本级中断ISR的相应位复位,才能真正开放级别较低的中断。71与普通屏蔽的区别:特殊屏蔽方式除了在IMR中屏蔽本级中断源外,还需使当前ISR的相应位复位。5.中断优先权管理方式①固定优先级--IR0优先级最高,IR7最低。②循环优先级--某中断被服务后,其优先权自动降为最低,而相邻中断源的优先级升为最高。优先权自动循环方式初始时,IR0优先级最高,IR7优先级最低。优先权特殊循环方式用户编程来指定初始时哪个中断源的优先级最低。例:初始时规定IR5最低,则优先级顺序为:IR6

>IR7>IR0>

…>IR4>IR5。726.中断嵌套方式普通全嵌套方式简称全嵌套方式,是最基本、最常用的方式。某中断被响应时,只有更高级的中断请求才会响应。特殊全嵌套方式用于级联场合。可响应高级别和同级别中断。级联时从片的INT端连接主片IRi端。从片上不同级别的中断请求,主片视之为同一级别。普通全嵌套无法响应第二次高级别中断。而特殊全嵌套方式可正常响应。73单片8259A时,通常采用普通全嵌套方式。多片级联时,从片采用普通全嵌套方式,而主片必须采用特殊全嵌套。7.中断结束方式当某个中断请求得到响应时,其ISR的相应位置1。当其中断服务结束时,其ISR中的相应位必须清0。中断结束方式是指使ISR相应位复位的方式。8259A有2种中断结束方式自动结束方式(AEOI)非自动结束方式(EOI)74自动结束方式(AEOI)ISR相应位的复位由8259A硬件自动完成。当CPU响应某中断时,第二个INTA信号的下降沿

自动将ISR相应位的复位。该方式只适用于单片8259A、无中断嵌套的场合。75非自动结束方式(EOI)该方式下,由CPU发EOI命令来使ISR的相应位复位。普通中断结束方式CPU向8259A发送EOI命令,使当前ISR中级别最高的位复位。特殊中断结束方式CPU向8259A发送EOI命令,该命令字指定了要结束哪一级中断源,从而使ISR相应的位复位。768.连接系统总线的方式缓冲方式多片8259A级联时,8259A通过总线驱动器与数据总线相连。此时8259A的SP/EN

端输出一个低电平(EN=0)作为总线驱动器的启动信号。即:SP/EN信号与总线驱动器的允许端相连。7778输出信号缓冲器非缓冲方式当系统中只有单片或少数几片8259A时,8259A可直接与数据总线相连。此时,8259A的SP/EN端作为输入信号。单片8259A时,SP=1。多片8259A级联时,主片的SP=1,从片的SP=0。798081

(4)8259A编程CPU向8259A发送的命令字分为以下2种:初始化命令字ICW包含ICW1~ICW4四个命令字,在系统启动时由初始化程序设置。一旦设定后,在系统工作过程中一般不再改变。操作命令字OCW包含OCW1~OCW3,由应用程序设定,用来对中断处理过程进行动态控制,如:中断屏蔽、中断结束、优先权设定等。可多次设置。828259A只有一根输入地址线A0,如何区分7个寄存器?ICW1:

20H A0=0,D4=1ICW2:21H A0=1ICW3:21H A0=1,ICW1中的SNGL(D1)=0ICW4:21H A0=1,ICW1中的IC4(D0)=1OCW1:21H A0=1OCW2:20H A0=0,D3D4=00OCW3:20H A0=0,D3D4=1083采用读写分时法、顺序法及特征位法解决端口冲突。1.ICW1:设置触发方式、是否级联和需ICW4等。84(一)初始化命令字ICW未用表ICW1要写入偶端口特征位×××1LTIMADISNGLIC4D7D6D5D4D3D2D1D00A0IRi中断触发方式1:电平触发0:边沿触发8086/8088中不用是否级联1:单片0:级联1:需要ICW40:不需要85D0(ICW4)的设置:8086/8088系统必须设置D0=1,即:需要ICW4。写入ICW1后,8259A内部有一个初始化过程,相当于Reset功能,其作用:指示8259A顺序逻辑复位,即:它准备按ICW2、ICW3、ICW4的顺序接受其余初始化命令字。清除IMR、ISR。指定优先级方式为普通全嵌套方式、普通屏蔽方式、非自动中断结束方式。86【例5-5】若8259A采用电平触发,单片使用,需要ICW4,请写出ICW1的初始化程序段。×××1LTIMADISNGLIC4D7D6D5D4D3D2D1D00A0MOV AL,1BH ;ICW1=00011011OUT 20H,AL ;偶端口2.ICW2:设置类型码。87高5位由用户编程设定表ICW2要写入奇端口T7T6T5T4T3D7D6D5D4D3D2D1D01A0低3位由IR7~IR0自动生成中断类型号=ICW2高5位+低3位(IRi的编码)。ICW2紧随ICW1之后。CPU响应中断发第2个INTA时,8259A将ICW2的内容(中断类型号)送到数据总线。88【例5-6】PC机中断系统的中断类型号范围为08~0FH,某中断请求线连接到8259A的IR5上,请写出设置ICW2

的程序段。MOV AL,08H ;高5位OUT 21H,AL ;奇端口

CPU响应硬盘中断后,8259A把IR5的编码101作为低3位,与ICW2中设置的高5位合一起,构成完整的8位中断类型号0DH,经数据总线提供给CPU。T7T6T5T4T3D7D6D5D4D3D2D1D01A03.ICW3:设置级联方式。仅当级联模式下(即ICW1

的SNGL=0时)才需设置ICW3。这时需分别对主片和从片进行设置。主片ICW3:说明主片IR7~IR0的哪些引脚上连有从片。89S7S6S5S4S3S2S1S0D7D6D5D4D3D2D1D01A01:IRi

上接有从片0:IRi

上未接从片表ICW3要写入奇端口从片ICW3:ID2~ID0的编码值说明该从片的INT信号连接至主片IR7~IR0的哪个引脚。90×××××ID2ID1ID0D7D6D5D4D3D2D1D01A0任意表ICW3要写入奇端口000:连至主片的IR0……111:连至主片的IR7例:从片的INT连接至主片的IR5,则ID2~ID0

=101。4.ICW4:设置缓冲方式、中断结束方式等。当ICW1

的D0=1时,需设置ICW4。91000SFNMBUFM/SAEOIuPMD7D6D5D4D3D2D1D01A0表ICW4要写入奇端口1:缓冲方式0:非缓冲方式1:特殊全嵌套0:普通全嵌套1:主片0:从片1:AEOI0:EOI1:8086/80880:8080/8085特征位仅当buf=1时M/S位才起作用92【例5-7】PC机中,单片8259A与系统总线之间采用缓冲器连接,非自动结束方式,正常完全嵌套。请写出设置ICW4

的程序段。MOV AL,0DH ;00001101BOUT 21H,AL ;奇端口000SFNMBUFM/SAEOIuPMD7D6D5D4D3D2D1D01A0要使中断系统正常工作,CPU必须对系统中的每片8259A进行初始化编程,即:顺序将ICW1~ICW4写入各个8259A芯片。单片8259A时,需依次写入ICW1、ICW2和ICW4。多片8259A时,需依次写入ICW1、ICW2、ICW3和ICW4。93(二)8259A初始化编程9495【例5-8】IBMPC/XT机中,仅用单片8259A,中断请求采用边沿触发,中断类型号为08H~0FH,普通全嵌套,缓冲方式,非自动中断结束方式。8259A的端口地址为20H和21H。请按上述要求对8259A进行初始化编程。MOVAL,00010011B;ICW1:边沿触发,单片,需ICW4OUT20H,ALMOVAL,00001000B;ICW2:08H~0FH的高5位OUT21H,ALMOVAL,00001101B;ICW4:全嵌套,缓冲,EOI方式OUT21H,AL96【例5-9】IBMPC/AT机中,使用两片8259A构成主从中断系统。从片的INT与主片的IRQ2相连。主片的中断类型号为08H~0FH,端口地址为20H和21H。从片的中断类型号为70H~77H,端口地址为0A0H和0A1H。主片、从片均采用边沿触发、缓冲、非自动中断结束方式。请按照上述要求对8259A进行初始化编程。97主片编程:MOVAL,00010001B;ICW1:边沿触发、级联、需ICW4OUT20H,ALMOVAL,00001000B;ICW2:08H~0FH的高5位OUT21H,ALMOVAL,00000100B;ICW3:主片IRQ2接有从片OUT21H,ALMOVAL,00011101B;ICW4:特殊全嵌套、缓冲方式、OUT21H,AL ;主片、EOI方式98从片编程:MOVAL,00010001B;ICW1:边沿触发、级联、需ICW4OUT0A0H,ALMOVAL,01110000B;ICW2:70H~77H的高5位OUT0A1H,ALMOVAL,00000010B;ICW3:从片接主片的IRQ2OUT0A1H,ALMOVAL,00001001B;ICW4:普通全嵌套、缓冲方式、OUT0A1H,AL ;从片、EOI方式对8259A进行初始化后(写入初始化命令字),8259A进入工作状态,可接收IRi的中断请求,并按系统设定的方式来响应和管理中断。在8259A工作期间,可通过写入操作命令字OCW,对其中断管理方式进行动态设置和修改。操作命令字有3个:OCW1~OCW3。99(三)操作命令字OCW1.OCW1:设置中断屏蔽字直接对IMR

相应的位进行设置。100M7M6M5M4M3M2M1M0D7D6D5D4D3D2D1D01A01:屏蔽中断0:允许中断OCW1要写入奇端口101【例5-10】已知8259A的端口地址为20H、21H。若要屏蔽IR5、IR4和IR1引脚上的中断请求,而不改变其余中断源原来的屏蔽情况。试给出对应的程序段。INAL,21H ;读取IMR的当前值ORAL,00110010B;IRQ5、IRQ4、IRQ1OUT21H,AL ;写入OCW12.OCW2:设置/修改优先级模式、发送EOI命令等102指出优先级最低的IRi,或要清除的ISR的相应位。OCW2要写入偶端口特征位RSLEOI00L2L1L0D7D6D5D4D3D2D1D00A00:固定优先级1:循环优先级0:普通1:特殊0:不发1:发EOI命令D7(R):0为固定优先级;1为循环优先级。D6(SL):0为“普通”;1为“特殊”。这2位决定优先级方式:

R=0,SL=× :固定优先级(L2~L0无效)

R=1,SL=0 :优先级自动循环(L2~L0无效)

R=1,SL=1 :优先级特殊循环(L2~L0有效)此时L2~L0指明循环开始时哪个IRi的优先级最低。

103D5(EOI):1时发EOI命令;0时不发EOI命令。

在非自动中断结束方式下,可通过发EOI命令来使ISR相应的位复位。(非硬件复位)

EOI位可和SL位配合使用。EOI=0,SL=×:不发EOI命令。EOI=1,SL=0:普通中断结束。此时EOI命令将ISR中优先级最高的中断对应的位清0。(L2~L0无效)EOI=1,SL=1:特殊中断结束。此时EOI命令将ISR中L2~L0所指定的中断对应位清0。(L2~L0有效)104R、SL、EOI三位的组合含义

105RSLEOI功能说明001普通EOI命令,全嵌套方式011特殊EOI命令,全嵌套方式,L2~L0指定的ISR位清0101普通EOI命令,优先级自动循环111特殊EOI命令,优先级特殊循环,L2~L0指定的ISR位清0,且L2~L0指定的IR位为最低优先级100自动EOI时,优先级自动循环000自动EOI时,取消优先级自动循环110优先级特殊循环,L2~L0指定优先级最低的IR位010无操作106MOVAL,00100000B;OCW2:EOI=1,SL=0OUT20H,AL ;写入OCW2IRET ;中断返回,回到主程序【例5-11】已知8259A的端口地址为20H、21H。8259A设置为非自动中断结束的普通中断结束方式。在中断子程序中,CPU向8259A发送一个中断结束命令后返回主程序。试给出对应的程序段。3.OCW3:设置中断屏蔽方式;设置中断查询方式;发送读内部寄存器的命令10710:读IRR11:读ISR0×:无效

OCW3要写入偶端口特征位0ESMMSMM01PIRRISRD7D6D5D4D3D2D1D00A0未用11:设置特殊屏蔽10:取消特殊屏蔽0×:保持原方式

1:发查询命令0:不发查询命令ESMM/SMM:设置/取消特殊屏蔽方式11:设置特殊屏蔽方式。屏蔽正在服务的同级中断,而允许优先级较低的中断请求。10:取消特殊屏蔽方式。0×:保持原来的屏蔽方式。SMM无效。108D2(P):查询命令位。P=1,CPU向8259A发查询命令。P=0不发。当CPU处于关中断时(IF=0),INTR引脚发送的中断不被处理。此时,CPU可向8259发查询命令(偶端口),然后从偶端口读取查询字,以获知当前是否有中断请求及正在申请的中断源中优先级最高的中断源编码。109有中断请求时,当前中断请求中优先级最高的中断源编号偶端口I××××W2W1W0D7D6D5D4D3D2D1D00A01:有中断请求0:无中断请求未用110CLI ;关中断L1:MOVAL,00001100B;OCW3:D4D3=01,P=1OUT0A0H,AL ;发查询命令字

INAL,0A0H;读查询字TESTAL,10000000B;判断是否有中断请求JNZNEXT ;有中断请求时转入NEXTJMPL1NEXT:……【例5-12】已知8259A的端口地址为0A0H~0A1H,处于关中断状态。将8259A设置为中断查询方式,判断当前是否有中断请求。若有,则转向NEXT处执行;若无,则重复查询。试编写程序段实现之。111读IMR:直接读OCW1(奇端口)INAL,21H

【例5-13】已知8259A的端口地址为20H、21H。试写程序段,读取其IMR、IRR、ISR三个寄存器的值。读IRR:必须发读IRR寄存器的命令才能读取(OCW3)MOVAL,00001010B;发读IRR的OCW3命令字OUT20H,ALINAL,20H;读IRR的内容

读ISR:必须发读ISR寄存器的命令才能读取(OCW3)MOVAL,00001011B;发读ISR的OCW3命令字OUT20H,ALINAL,20H;读ISR的内容

112内容概要8259A的应用举例48086/8088微机中断系统28259A可编程中断控制器3PC机中的中断应用5中断技术概述1内部结构、外部引脚工作方式(7个:工作过程、级联方式、触发方式、屏蔽方式、优先级方式、中断结束方式、系统连线方式)8259A编程:ICW、OCW、初始化编程(1)中断程序设计若要以中断方式实现CPU与外设间的数据交换,用户需完成主程序和中断服务子程序的设计。主程序:对中断系统的软硬件进行初始化。如:设置中断向量、设置8259A的工作方式等。中断服务程序:实现数据输入输出及相关控制。113

5.48259A应用举例主程序设计CPU初始化:设置中断向量表、设置中断标志(使IF=1开中断)。8259A初始化:写ICW1~ICW4初始化命令字,设置工作方式、优先级、结束方式等。中断源接口初始化:如:使中断源允许中断等。中断服务程序初始化:进入ISR前,要设置ISR使用的缓冲区指针和状态位等。114中断服务程序设计(ISR)保护现场:把ISR中要使用的寄存器入栈。开中断:运行当前ISR程序时,要能响应更高级的中断。数据输入输出:与外设间进行数据传输。数据的处理比较费时,一般交由主程序完成。关中断:ISR结束时,关中断以避免不必要的中断嵌套。恢复现场:将堆栈中保存的各寄存器值出栈,以便返回主程序后可以正确使用原数据。中断结束命令:8259A采用非自动中断结束方式时,发EOI命令使ISR的相应位清0。中断返回:用IRET指令返回主程序。115116

(2)中断应用实例【例5-14】已知某输入设备接口内有一个8位的数据端口(地址200H)和一个8位的状态端口(地址201H)。当状态端口的最高位为1时,数据端口中的数据有效,并且此时在STB引脚上出现一个脉冲信号。请设计一个微机系统,读取该接口内的有效数据,并将之存入内存的BUFFER单元中。117方法一:查询法硬件电路设计软件流程图设计118MOVDX,201H ;读取状态端口L1:INAL,DXTESTAL,10000000B;测试其最高位JZL1 ;无有效数据MOVDX,200H ;有有效数据,读数据端口INAL,DXMOVBUFFER,AL ;保存数据到BUFFER

119方法二:中断法当接口中的数据有效时,会产生STB脉冲信号,该信号可作为中断请求信号,通过8259A向CPU发送中断请求。一旦有数据到来,触发中断,进入中断服务程序ISR。CPU在ISR中读取数据端口的内容。当没有数据到来时(STB信号不触发中断),CPU可运行其它程序。120假设条件:STB信号连接到8259A的IR3端。8259A的端口地址为20H~21H,其IR0~IR7中断类型号为08H~0FH。中断服务子程序名为P1。未发生中断时,CPU执行其它程序。其它程序假设用CX+1的来模拟。121硬件电路设计122软件程序设计关中断开中断123DATASEGMENT;定义数据段就是数据存放的地方 BUFFERDB?DATAENDSCODESEGMENT;定义代码段当然就是要执行的程序代码了 ASSUMECS:CODE,DS:DATA;assumeds:data这是指明了ds(数据段寄存器)和data段的对应关系START:

MOV AX,DATA ;数据段段地址MOV DS,AX

PUSHDSCLI ;关中断MOVAL,00010011B;ICW1:边沿触发,单片,要ICW4OUT20H,ALMOVAL,08H ;ICW2:中断类型号前5位OUT21H,AL主程序设计124MOVAL,00000001B ;ICW4:普通全嵌套,非缓冲OUT21H,AL ;非自动中断结束

MOVAX,0 ;设置中断向量表段基址为0MOVDS,AXMOVAX,OFFSETP1 MOV[002CH],AX ;IR3中断类型号为0BH,2CH?MOVAX,SEGP1 MOV[002EH],AX POPDSSTI ;开中断L1:INCCXJMPL1125P1PROC ;中断服务子程序PUSHCX ;保护现场STI ;开中断MOVDX,200H ;读数据端口IN AL,DXMOVBUFFER,AL ;保存数据CLI ;关中断

温馨提示

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

评论

0/150

提交评论