微型计算机原理及应用课件06_第1页
微型计算机原理及应用课件06_第2页
微型计算机原理及应用课件06_第3页
微型计算机原理及应用课件06_第4页
微型计算机原理及应用课件06_第5页
已阅读5页,还剩47页未读 继续免费阅读

下载本文档

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

文档简介

微型计算机原理及应用第6章中断系统6.1中断概述6.1.1基本概念1.中断与中断源中断是一个“过程”。这个过程,由微处理器内外部硬件或软中断指令引起,即由它们发出中断请求,CPU接到中断请求后暂时终止现行程序的执行,转去执行请求中断的那个外设或事件的中断处理子程序,待中断服务子程序处理完毕后,再返回到暂停处继续执行原来的程序,也就是说,中断就是CPU在执行当前程序的过程中,由于意外的事件输入另一段程序的运行。中断源:引起中断的事件称为中断源。中断源有多种,可以是外部的,也可以是CPU内部的。例如一般的输入输出设备、数据通道中断源(如磁盘磁带等)、实时时钟、故障源(如电源掉电等)、软件中断(如在调试程序时设置断点等)、CPU内部运算产生的某些错误(如运算溢出)。2.中断系统能实现中断过程的软硬件系统叫中断系统。中断系统应具有以下功能:(1)能实现中断响应、中断服务和中断返回。(2)能实现中断优先权排队。(3)能实现中断嵌套。

CPU响应中断的过程与执行调用子程序指令的过程很相似,但除了软件中断外,中断是随机发生的。6.1.2中断处理过程各种微型计算机的中断系统都不一样,然而其实现中断的过程是相同的。一个完整的中断处理过程包括4个阶段:中断请求、中断响应、中断服务(处理)和中断返回,如图6-1所示。执行指令指令结束?中断请求?返回开中断恢复现场中断服务保护现场关中断响应中断取下一条指令否是是否1.中断请求外部设备需要CPU为其服务时,首先向CPU发“中断请求”信号。发出中断请求信号必须满足以下条件:(1)请求中断的外设应通过接口电路在CPU的中断请求输入引脚上输入一个符合规定的请求信号,该信号可以是电平或边沿信号。(2)外设处于就绪状态,如输出设备准备好接收CPU的数据时才能向CPU发出中断请求。(3)该中断源未被屏蔽。通常每个中断源设置有一个中断允许触发器,用来开放或禁止该设备的中断请求,中断允许触发器被置位时,表示允许发出中断申请。中断允许触发器的置位或复位状态由软件设置(管理)。2.中断响应由于中断源的中断请求是随机的。CPU在现行指令周期结束时去检测“中断请求”输入线(如8086CPU的INTR引脚),CPU检测到有中断请求时,如果中断响应条件满足(如中断允许标志IF=1),则CPU在当前指令执行结束时便响应中断进入中断响应周期,在中断响应周期内CPU通过内部硬件自动完成三件事:(1)关中断。使中断响应周期不被其他中断所终止。(2)保护断点和标志寄存器内容,即将当前正在执行程序的段地址(CS)和偏移地址(IP)即断点地址压入堆栈,将标志寄存器(FR)的内容压入堆栈。(3)形成中断服务程序的入口地址。将入口地址送入CS和IP后,开始执行中断服务程序。3.中断处理

CPU响应中断,执行中断服务程序要顺序完成以下几步工作:(1)保护现场。(2)开中断。(3)查找中断源转向相应的中断服务程序。(4)关闭中断。(5)恢复现场。(6)开中断。4.中断返回中断服务程序的最后一条指令必须是“中断返回”指令,CPU执行中断返回指令时,自动将保存在现行堆栈中的标志寄存器的内容和断点地址弹出,使程序回到中断前的地址继续执行,即CPU从中断服务程序返回而继续执行被终止的主程序。6.1.3中断识别和中断优先级实际系统中,常常会出现多个中断源同时提出中断请求,或者在尚未处理完一个中断时又有一个新的中断请求提出。然而CPU每次只能响应一个中断源的请求,所以CPU必须确定首先为哪一个中断源服务及服务次序。

1.中断优先级排队微型计算机系统中,对多个中断源进行识别和优先级排队的目的是要寻找出优先级最高的中断源,并形成该中断源的中断服务程序的入口地址,以便CPU将控制转移到该中断服务程序。系统中CPU识别中断源和比较其优先级是同时解决的,称为中断优先级排队。

CPU实现中断优先级排队的方法有两种:查询中断和矢量中断。(1)查询中断。查询中断(或叫程序查询方式)就是在CPU响应中断后,通过简单硬件接口电路中断识别程序查询连接到系统上的每个设备。确定哪些外设提出中断请求,是按事先确定的优先级别确定查询的先后顺序,最先被查询的优先级别最高。查询过程如图6-2所示。硬盘软盘打印机电源故障…………恢复现场中断返回IR0请求?IR7请求?IR1请求?中断服务程序入口保护现场读中断请求0#中断服务程序1#中断服务程序7#中断服务程序(2)矢量中断。矢量中断就是CPU响应中断后,要求中断源提供一个地址信息,该地址信息称为中断向量(或叫中断矢量),这种中断称为矢量(向量)中断。所以,中断向量就是中断服务程序的入口地址。当CPU识别出某个外设请求中断并予以响应时,控制逻辑就将该I/O设备的中断服务程序的入口地址送CPU,转入中断服务程序。根据形成入口地址的机制的不同,向量中断又分为:简单硬件查询法——菊花链法和中断控制专用硬件方法。1)简单硬件查询方式——菊花链法。菊花链逻辑电路菊花链逻辑电路菊花链逻辑电路接口1接口3接口2数据总线CPU以及总线控制逻辑

INTAINTR2)中断控制专用硬件方式。是向量中断的典型方法,该方法使用一个专门的中断优先级控制器来解决中断优先级的排队管理。

总线控制阶段中断类型寄存器,由中断请求决定中断服务寄存器优先级管理逻辑中断请求寄存器中断屏蔽寄存器IR0IR1IR78086/8088CPU控制总线INTRINTA2.中断的多级嵌套

CPU总是首先响应优先级最高的中断请求。当CPU正在执行优先级别较低的中断服务程序时,允许响应优先级别高的中断源的中断请求,终止正在处理的中断,这就是中断嵌套或称多重中断。此时,CPU暂停正在执行着的级别较低的中断服务程序,为优先级别高的中断源服务,待优先权高的中断服务结束后,再返回到刚才被中断的那一级,继续为它进行中断服务,直至处理结束返回主程序,如图6-5所示。编写具有中断嵌套的中断服务程序时需要注意:(1)要有屏蔽本级和低级中断请求的环节,防止低级中断的干扰。(2)执行中断服务程序之前,要开放中断,允许优先级比它高的中断源进行中断,实现中断嵌套。(3)中断服务程序结束后,为使恢复现场的过程不受任何中断请求的干扰,必须执行CLI指令,中断关闭,才能恢复现场。INT1#INT2#INT3#1#中断服务程序2#中断服务程序3#中断服务程序主程序返回返回返回6.28086/8088的中断系统

8086/8088微机系统具有一个功能强大的中断系统,可以处理多达256种不同类型的中断。对应的中断类型码为0~255。6.2.18086/8088的中断分类按产生中断的方法来分,8086/8088的中断可以分为两大类:一类是硬件中断,另一类是软件中断,如图6-6所示。非屏蔽中断请求中断逻辑INTn指令级管单步中断除法出错中断8086/8088CPU8259AINTR可屏蔽中断请求6.2.2中断向量和中断向量表中断向量是中断服务程序的入口地址,每一个中断服务程序都有一个惟一确定的入口地址,即中断向量。把系统中的全部中断向量集中存放到存储器的某一区域内,这个存放中断向量的存储区就叫中断向量表,即中断服务程序入口地址表。

8086/8088的中断系统可以处理256种不同的中断,每个中断对应一个类型码。8086/8088中断系统中的中断向量表是位于0段的0~3FFFH的存贮区内。每个中断向量占四个单元,其中前两个单元存放中断处理子程序的入口地址的偏移量(IP),低位在前,高位在后;后两个单元存放中断处理子程序入口地址的段地址(CS),也是低位在前,高位在后,整个中断向量的排列是按中断类型号进行的。8086/8088系统在存储器的最低端地址从0段0单元开始的,共1KB单元作为中断向量表,如图6-7所示.CSIP≈≈CSIPCSIPCSIPCSIPCSIP≈≈CSIP…类型255类型32类型5类型4类型3类型2类型1类型0类型31供用户定义的中断(共224个)保留的中断(共27个)专用的中断(共5个)0000:03FFH0000:007FH0000:007EH0000:0014H0000:0013H0000:0010H0000:000FH0000:0008H0000:0007H0000:0004H0000:0003H0000:0000H0000:000CH0000:000BH溢出中断断点中断除数为0中断单步中断非屏蔽中断8086/8088系统中的256个中断分为以下三大类:(1)专用中断。它们对应于类型0~4,它们有明确的定义和处理功能,分别对应于除法出错、单步中断、不可屏蔽中断、断点中断和溢出中断,用户不能修改。(2)从类型5~31共27个中断是系统保留的中断,提供给系统使用,这些中断中,有的没有使用,但是为了保持系统之间的兼容性以及与将来Intel系统的兼容,用户不能对这些中断进行自行定义。(3)从类型32~255共224个中断,这类中断原则上是可以由用户定义的。可定义为由INTn指令引入软中断,可以是通过INTR引脚直接引入,或者通过中断控制器8259A引入可屏蔽中断,使用时用户要装入相应的入口地址。但是,这类中断类型号中,有的系统已分配有固定的用处,比如类型号为21H的中断已定义为操作系统MS-DOS的系统调用。6.2.3硬件中断硬件中断也叫外部中断,由I/O设备或外部电路产生。8086/8088CPU中的硬件中断分为两种:1.非屏蔽中断NMI从CPU的NMI引脚引入从NMI引脚引入的中断为非屏蔽中断,它不受中断允许标志的影响。非屏蔽中断的类型码为2,因此非屏蔽中断处理子程序的入口地址存放在开始的4个单元中。2.可屏蔽中断INTR从CPU的INTR引脚引入一般外部设备请求的中断都是从CPU的INTR端引入的可屏蔽中断。当CPU接收到一个可屏蔽中断请求时,如果中断允许标志IF为1,那么CPU就会在执行完当前指令后响应这一中断请求。至于IF的设置和清除,则可以通过指令或调试工具来实现。3.硬件中断的响应和时序CPU响应外设中断并转入中断服务程序的过程要依次完成以下操作:(1)执行第一个中断响应总线周期,发负脉冲,通知外部设备接口中断请求已被响应,同时封锁总线,禁止其他总线主模块发总线请求。(2)执行第二个中断响应总线周期,从数据总线上读取中断类型码存入内部暂存器。(3)将标志寄存器的内容压入堆栈。(4)将IF和TF清零。清除IF是为了在中断响应过程中禁止其他外部中断,以免中断响应过程被中断请求打扰;清除TF是为了避免CPU以单步方式执行中断服务子程序。(5)保护断点。即将当前指令的下一条指令的段地址CS值和段内偏移地址IP值压入栈,使中断处理完毕后正确地返回断点处继续执行主程序。(6)转入中断处理子程序。根据(2)得到的类型码,从中断向量表中找到中断向量并转入相应的中断服务子程序。(7)中断返回。中断服务程序结束时,CPU依次从堆栈中弹出IP、CS和FR的内容,然后按照IP和CS值返回主程序的断点处继续执行原来的程序,返回断点的一系列操作是由IRET中断返回指令实现的。标志入栈令TEMP=TF清除IF、TF执行中断服务程序调用中断服务程序CS、IP入栈有NMI吗?TEMP=1?弹出CS和IP弹出标志IF=1?结束当前指令是内部中断?是NMI中断?是INTR中断?TF=1?执行下一条指令中断响应读类型码n是否是是是是有4.中断服务子程序不同的中断源,其中断服务子程序的功能不同,但所有的中断服务子程序都有着相同的结构模式。(1)中断服务程序的开始要用压栈指令保护现场,即保护CPU内有关寄存器的值以及中断服务程序中要使用的寄存器值。(2)用STI指令开中断,以便在中断处理过程中允许优先级更高的中断进入实现嵌套。(3)执行中断处理程序,进行具体的中断服务,这是中断服务程序的主要部分。(4)中断处理模块执行完后,用CLI指令关中断,恢复现场过程中禁止其他中断。(5)通过一系列的出栈指令POP将保护现场时压入堆栈的内容以相反的次序弹出,即恢复现场。(6)开放中断。(7)中断返回指令返回主程序。执行中断返回指令,使堆栈中保存的断点值和标志值分别装入IP、CS和标志寄存器。6.2.4软件中断8086/8088系统中,提供了直接调用中断处理子程序的软件手段,这就是中断指令INTn。通过中断指令使CPU执行中断处理子程序的方法叫软件中断。软件中断是由CPU内部所引起的,也叫内部中断。软件中断可以由中断指令INTn引起,由CPU的某些运算错误(如除法出错等)引起或由调试程序DEBUG设置的中断。CPU执行程序过程中,会发现运算中出现的一些错误,这时就会中断程序的执行,自动启动内部逻辑转去执行所需要的中断服务程序处理这些错误。(1)类型0中断(除法出错中断)。除法过程中,若除数为0或商超过了寄存器所能表示的范围,这时就会产生一个类型为0的中断,转入类型0的中断服务程序。(2)类型1中断(单步中断)。在CPU执行一条指令前,如果检测到标志寄存器中的单步标志IF=1,则8086/8088就处于单步工作方式,即每执行完一条指令后都自动产生一个1型中断,执行一次单步中断处理程序,此程序用来显示一些内部寄存器的值以及一些附带信息。因此,单步中断一般用于程序的调试。(3)类型3中断(断点中断)。断点中断是专供在程序中设置断点用的,可以很方便地插入到程序的任何地方,插入类型3中断的地方便是断点。在断点处,停止正常的执行过程,以便进行某种特殊的处理。也用于程序的调试。(4)类型4中断(运算溢出中断)。CPU检测溢出标志OF=1时,就执行一条INTO指令,之后立即产生一个类型4中断,此时中断处理程序给出错误标志。由中断指令INTn引起中断。CPU执行一条INTn指令后立即产生中断,并且会调用系统中相应的中断处理程序来完成中断功能。指令中的n为中断类型码。软件中断具有以下特点:(1)执行一条指令进入中断处理子程序,并从指令本身获得中断类型码。(2)进入中断时,不需要执行中断响应总线周期,不需要发响应信号,也不需要从数据总线上获取中断类型码。(3)除单步中断外,内部中断不受中断允许标志IF的影响,即不论IF=1还是0,任何一个软件中断均可执行。单步中断需要IF=1时才能执行。(4)除单步中断外,所有内部中断都比外部中断的优先级别高。(5)正在执行软件中断时,如果有外部中断请求,且是不可屏蔽中断请求,则会在执行完当前指令之后立即予以响应;如果来了可屏蔽中断请求,且中断是开放的(即IF=1),则也会在当前指令执行完后响应可屏蔽中断请求。(6)软件中断没有随机性。软件中断是由安排在程序中的指令引起的,何时执行此指令是可事先知道的,硬件中断是由外设发中断请求信号引起的,外设何时发出请求是完全随机的,无法预测。6.3可编程中断控制器8259A

可编程中断控制器8259A可用于管理8级优先权中断,将9片8259A级联可构成最多可达64级优先权的中断管理系统。8259A具有多种工作方式,自动提供中断服务程序入口地址。6.3.18259A的外部引脚和内部结构1.8259A的外部引脚信号2.8259A的内部结构8259A的内部结构如图6-11所示。

8259A由以下几部分组成:(1)数据总线缓冲器。(2)读/写控制电路。(3)级联缓冲器/比较器。(4)中断请求寄存器IRR。(5)中断屏蔽寄存器IMR。(6)中断服务寄存器ISR。(7)优先级判别器PR。(8)控制电路。控制电路中断服务寄存器(ISR)优先级判别器(PR)中断请求寄存器(IRR)中断屏蔽寄存器(IMR)IR0IR1IR7内部总线3.8259A的编程结构8259A内部由两大部分组成。

上半部分包括中断请求寄存器IRR、优先级别器PR和中断服务寄存器ISR,它们构成8259A的中断处理部分,称为处理部件。这部分的功能是接收和处理从IR1~IR0引脚进入的外部中断,其工作过程体现了8259A本身的工作原理。即接收中断请求,进行中断判优,记录当前正在处理的中断优先级,实现中断嵌套,向CPU发出中断申请,当CPU响应中断时,接收CPU的两个连续中断响应信号,将控制转移到中断服务程序中去。8259A的下半部有7个8位寄存器,是8259A的控制部分,它们都是可编程、用指令对其内容进行设置的。7个寄存器分为两组。

ICW1~ICW4为一组,称为初始化命令寄存器,用来接收CPU向8259A发出的初始化命令以决定8259A的工作方式。初始化命令一般在计算机系统启动时由初始化程序发出设置,一旦设定,在系统工作过程中就不再改变。

OCW1~OCW3为一组,称为操作命令寄存器,用来存放CPU向8259A发出的操作命令,操作命令由应用程序设置,用以在工作过程中对8259A进行动态控制。操作命令可以多次被设置。6.3.28259A的工作方式1.设置中断优先级的方式8259A对中断优先级的设置方式有:全嵌套方式、特殊全嵌套方式、优先级自动循环方式和优先级特殊循环方式4种。(1)全嵌套方式。(2)特殊全嵌套方式。(3)优先级自动循环方式。(4)优先级特殊循环方式。2.结束中断方式8259A的中断结束方式分为两类:自动结束方式和非自动结束方式。非自动结束方式又分为两种:一种叫普通的中断结束方式,另一种叫特殊的中断结束方式。(1)中断自动结束方式。(2)一般的中断结束方式(即一般EOI方式)。(3)特殊的中断结束方式。3.屏蔽中断源的方式将IF清零,可以禁止所有的可屏蔽中断进入CPU,即屏蔽掉所有的中断源。但如果要屏蔽某个或某几个中断源,则要用8259A的中断优先级管理的屏蔽方式来实现。8259A对中断源的屏蔽方式有以下两种:(1)普通屏蔽方式。(2)特殊屏蔽方式。4.8259A与系统总线的连接方式8259A与系统总线的连接有缓冲和非缓冲两种方式。(1)缓冲方式。(2)非缓冲方式。5.引入中断请求方式中断请求的引入方式也叫中断触发方式。外部设备可以采用三种触发方式向8259A提出中断请求:电平触发方式、边沿触发方式和中断查询方式。(1)边沿触发方式。(2)电平触发方式。(3)中断查询方式。要实现查询功能,CPU执行的查询软件中必须有查询命令,查询命令是CPU执行的查询软件中向8259A发查询命令OCW3来完成的,其过程是:系统先关中断,然后CPU用OUT指令向8259A的偶地址端口发查询命令字OCW3,如果在此之前某IR有中断请求,则8259A将ISR寄存器中的对应位置“1”,且立即组成查询字。6.3.38259A的初始化命令字和操作命令字8259A的各种工作方式都要通过软件来设置,工作状态的改变动态也需要通过软件来实现,也就是对8259A的编程。1.8259A的初始化命令初始化命令字ICW1~ICW4用来设定8259A的初始化状态,在初始化程序中向8259A发出,而且整个工作过程中保持不变。(1)ICW1:芯片控制初始化命令。ICW1应写入偶地址端口,即A0为0,其格式如图6-13所示。01LTIMADISNGLIC4A0D4D3D2D1D0D5D6D7(2)ICW2:设置中断类型码的初始化命令。

1IR4IR3IR2IR1IR0IR5IR6IR7A0D4D3D2D1D0D5D6D7(3)ICW3:标识主片/从片初始化命令字。

100ID2ID1ID0000A0D4D3D2D1D0D5D6D7(4)ICW4:方式控制初始化命令字。2.8259A的初始化流程在8259A进入正常运行之前,必须将系统中的每一片8259A进行初始化。初始化就是将上述的初始化命令字按固定的次序写入8259A的指定端口。8259A的初始化流程如图6-17所示。用ICW4设置是否级联中断为请示信号格式后面是否用ICW4用ICW2设置类型码是否为级联方式?本片为主片吗?设置ICW2,各位对应IR0~IR7的连接情况设置ICW2,高5位为0,低3位为标识位需要用ICW4?用ICW4设置是否为特殊全嵌套方式是否为缓冲方式是否为自动结束中断方式是否为8086/8088系统结束是是否否否是例如:某8086/8088微机系统内有一片8259A,中断请求信号采用边沿触发方式,中断类型码基值为18H,中断优先级管理采用全嵌套方式,即非特殊全嵌套,中断结束方式采用普通EOI方式,系统中采用数据缓冲器,8259A的端口地址为3F80H和3F81H,对该8259A进行初始化,程序如下:MOV DX,3F80H

;设置8259A的偶地址端口MOV AL,13H

;设置ICW1初始化命令字OUT DX,AL

;将ICW1输出到偶地址端口(ICW1寄存器)MOV DX,3F81H

;设置8259A的奇地址端口MOV AL,18H

;ICW2,中断类型号基值OUT DX,AL

;将ICW2送入奇地址端口MOV AL,0DH

;ICW4OUT DX,AL

;将ICW4送入奇地址端口HLT3.8259A的操作命令字8259A有3个操作命令:OCW1、OCW2、OCW3。操作命令字在应用程序中设置,没有固定的顺序,而且可以根据需要多次写入,但对各操作命令字的写入口地址有严格的规定,OCW1必须写入奇地址端口,OCW2和OCW3必须写入偶地址端口。(1)OCW1:中断屏蔽操作命令字。OCW1用来实现对中断源的屏蔽功能,其内容直接置入IMR屏蔽寄存器。1M4M3M2M1M0M5M6M7A0D4D3D2D1D0D5D6D7(2)OCW2:优先级循环方式和中断结束方式操作命令字。OCW2有两个功能:设置中断结束方式和设置优先级循环方式,要求写入偶地址端口,其格式如图6-19所示。100L2L1L0EOISLRA0D4D3D2D1D0D5D6D7(3)OCW3:特殊屏蔽方式和中断查询方式操作命令字。OCW3有三个功能:设置和撤消特殊方式、设置中断查询方式、设置对8259A内部寄存器的读出命令。001PRRRISSMMESMM0A0D4D3D2D1D0D5D6D7

ODFIFTF

12111098131415AFPFCFZFSF43210567溢出标志方向标志中断允许标志单步标志符号标志零标志辅助进位标志奇偶校验标志进位标志OCW3的中断查询功能为:P位为中断查询方式位,当P=1时,使8259A处于中断查询方式,当CPU向8259A偶地址端口写入一个查询命令后,再执行一条输入指令,CPU就可读入8259A提供的查询字,查询字表明了当前有无中断请求以及中断请求中优先级最高的是哪一个。8259A的查询字格式如图6-21所示。4.8259A级联使用举例某8086微机系统由两片8259A级联构成中断控制系统,从片8259A接主片的IR1,主片的IR4和IR5有中断引入,中断类型号为44H和45H。两个中断服务程序在同一段内,段基址为1000H,偏移地址分别为1500H和2000H。从片的IR3和IR6上有中断请求引入,类型号分别为43H和46H,中断服务程序在同一段内,段基址为2000H,偏移地址为4000H和4700H,试分别对主8259A和丛8259A进行初始化编程。中断系统的硬件连接如图6-22所示。+5V外部中断请求RDWRINTAD7~D0CSA0 INCAS2CAS1主8259ACAS0CAS2RDWRINTAD7~D0

温馨提示

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

评论

0/150

提交评论