




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第3章
中断控制接口本章重点:掌握中断的基本概念、中断的识别与中断源优先级的判定了解8259A可编程控制器的结构及工作过程掌握8259A初始化编程。3.1中断概述3.1.1基本概念1、中断:在程序运行时,系统外部、内部或现行程序本身若出现紧急事件,处理器必须立即强行中止现行程序的运行,改变机器的工作状态并启动相应的程序来处理这些事件,然后再恢复原来的程序运行,这一过程称为中断。2、中断系统:为了实现中断功能而设置的各种硬件和软件统称为中断系统。3、中断源:引起中断的原因或发出中断申请的来源,称为中断源。有以下几种:(1)一般的输入/输出设备,如键盘,打印机(2)数据通道中断源,如磁盘(3)软件设置的中断源,如程序中的中断指令INTn(4)故障请求中断源,如电源掉电、运算溢出(5)为调试程序而设置的中断源,如断点或单步执 行方式.4.中断分类中断分外部中断和内部中断两大类;其中外部中断分为两类:⑴可屏蔽中断INTR,由标志寄存器中的IF位控制;⑵不可屏蔽中断NMI,不受IF位控制3.1.2中断及中断的处理过程微机系统引入中断机制后,使CPU与外设(甚至多个外设)处于并行工作状态,便于实现信息的实时处理和系统的故障处理。中断方式的原理示意图如图4-1所示。
虽然不同的微机中断系统有所不同,但实现中断时都有一个相同的中断过程,包括中断请求、中断判优排队、中断响应、中断服务、中断返回共5个阶段。1.中断的处理过程1)中断请求中断请求是由中断源向CPU发出中断请求信号。外部设备发出中断请求信号要具备以下两个条件:①外部设备的工作已经告一段落。例如输入设备只有在启动后,在将要输入的数据送到接口电路的数据寄存器之后,才可以向CPU发出中断请求。②系统允许该外设发出中断请求。如果系统不允许该外设发出中断请求,可以将这个外设的请求屏蔽。如果这个外设的中断请求被屏蔽,那么即使这个外设的准备工作已经完成,也不能发出中断请求。2)中断判优排队当多个中断源同时申请中断时,按此优先级顺序进行排队,等候CPU处理。一般是把最紧迫和速度最高的设备的优先级设为较高。CPU首先响应优先级别最高的中断源。当中断处理完毕时,再响应低级别的中断申请。中断判优排队可以采用硬件的方法,也可以采用软件的方法。前者速度快,但需要增加硬件设备;后者无须增加硬件设备,但速度慢,特别是中断源很多时尤为突出。3)中断响应经中断排队后,CPU收到一个优先级别最高的中断请求信号,如果允许CPU响应中断(IF=1),就在执行完一条指令后,中止执行现行程序,响应中断申请。首先由硬件电路保护断点(即将当前正在执行的程序的段地址(CS)和偏移地址(IP)以及标志寄存器(FR)压入堆栈),然后关闭CPU内的允许中断触发器IF(可屏蔽中断时),接下来就是寻找中断服务程序的入口地址。寻找中断服务程序入口地址的方法有软件方法和硬件方法两种。软件方法也就是查询方式。硬件方式目前均采用矢量中断方式。所谓矢量中断,即当CPU响应中断后,由提出中断请求的中断源向CPU发出一个中断矢量,CPU根据这个中断矢量找到中断程序的入口地址,转到相应的中断服务程序。使用IntelCPU的PC系列微机系统采用的就是矢量中断方式。概括来说,CPU响应中断的整个过程中要自动完成三项任务:
①关闭中断(禁止CPU响应其他中断申请)。
②保护断点现场信息(将断点和标志寄存器的内容入栈)。
③获得中断服务入口地址,转到中断服务程序。一旦CPU响应中断,就可转入中断服务程序,中断处理要做好如图4-2所示的6件事。①保护现场把断点处的指令指针IP值和CS值压入堆栈,以使中断处理完后能正确地返回主程序断点。实质上是执行PUSH指令,将需要保护的寄存器的内容推入堆栈。②开中断CPU接收并响应一个中断后会自动关闭中断,以防止其他的中断打断它。但在某些情况下,有比该中断更优先的情况要处理,此时,应停止对该中断的服务而转入优先级更高的中断处理,故需要再开中断。③提供中断服务中断服务的核心就是对某些中断的处理,比如传送数据、处理掉电紧急保护、各种报警状态的控制处理等。④关中断由于开中断,因此这里对应一个关中断过程,以便恢复现场的工作能顺利进行而不被中断。⑤恢复现场在返回主程序前,要将用户保护的寄存器内容从堆栈中弹出,以便返回主程序后继续正确执行主程序,恢复现场用POP指令。恢复现场是与保护现场对应的。⑥返回(使用中断返回指令IRET)。不能使用一般的子程序返回指令RET,因为IRET指令除了能恢复断点地址外,还能恢复中断响应时标志寄存器的值,而这后一个动作是RET指令不能完成的。2.中断优先级的管理1)中断源的识别确定中断源,找到该中断服务程序的首地址。识别中断源通常有两种方法:①查询中断
查询中断利用一段查询程序,不但可以确定请求服务的设备,同时还可以转至相应的服务程序。服务程序是预先编好存放在内存区的,可以存放在内存的任意区域中。②矢量中断
矢量中断就是CPU通过外设提供的中断申请信号和中断矢量标志,获得中断服务程序的入口地址。当CPU响应某个外设的中断请求时,中断源提供一个地址信息,由该地址信息对程序的执行进行导向,将程序引导至中断服务程序。该地址信息称为中断矢量。2)中断优先级待解决的问题第一,多个中断源同时请求中断,系统先响应优先级高的中断源。第二,当系统正在为某个中断源服务时,有新的中断源提出中断请求,只有优先级高的中断源的中断请求才能打断优先级低的中断源的服务。3)CPU实现中断优先级排队的方法分为软件查询法和硬件中断法。(1)软件查寻法确定中断优先级采用软件查询法解决中断优先级只需要少量硬件电路。如下图所示:磁盘磁带CRT显示键盘输入打印输出电源故障纸带输入保留INTR当CPU响应中断请求进入中断处理程序后,必须在中断处理程序的开始部分安排一段带优先级的查询程序,查询的先后顺序就体现了不同设备的中断优先级,即先查的设备具有较高的优先级,后查的设备具有较低的优先级。一般来说总是先查速度较快或是实时性较高的设备。软件查询的流程如图所示。保护现场恢复现场A申请服务?B申请服务?C申请服务?外设A中断服务程序NNN外设B中断服务程序外设C中断服务程序YYY图2软件查询流程图(2)菊花链优先级排队电路菊花链(DaisyChain)优先级排队电路是一种优先级管理的简单硬件方案。这种方法利用外设在系统中的物理位置来决定中断优先级,主要是利用硬件排队电路(菊花链电路)对中断源进行优先级排队,并将程序引导到相关中断服务程序的入口。典型的菊花链优先级结构如图所示。图3菊花链中断优先级排队电路位置决定中断优先级2.中断嵌套当CPU正在执行优先级较低的中断服务程序时,允许响应比它优先级高的中断请求,而将正在处理的中断暂时挂起,这就是中断嵌套。如图4所示图4中断嵌套示意图STIIRETSTIIRET............3.28086中断系统3.2.1中断的分类中断分类的方式很多。根据进入中断的方式可分为自愿中断和强迫中断。根据其重要性可分为可屏蔽中断和不可屏蔽中断。根据中断源的位置可分为内部中断和外部中断等等。3.2.28086中断类型8086CPU有一个简单而灵活的中断处理系统,能够处理256种不同的中断类型,而且处理方法简便灵活。根据中断源类型的不同,中断类型如图所示。1.外部中断由外部硬件产生的。可分为非屏蔽中断和可屏蔽中断两种,由CPU外部中断请求引脚(两条引线)NMI和INTR输入,如图4-7所示。①不可屏蔽中断(中断类型号2)主要用于对外部紧急事件的处理,如电源掉电、存储器故障等,因而不受中断允许标志(IF)的控制,也不能用软件进行屏蔽。即使在关中断(IF=0)的情况下,只要有中断请求,CPU就必须在当前指令执行完后立即响应。②可屏蔽中断(中断类型08H~0FH)可屏蔽中断是可受软件屏蔽的外部硬件中断,有中断请求时,CPU是否响应由用户软件决定。当一个高电平信号加到CPU的INTR引脚,并且中断允许标志IF=1时,产生一次可屏蔽中断。当IF=0时,INTR的中断请求被屏蔽。2.内部(软件)中断内部中断是指通过指令来调用中断服务子程序。软件中断主要包括以下情况:
①除法出错中断(中断类型号为0)除法出错中断是指当CPU做除法运算时,如果除数为零或者商超出了有关寄存器所能表示值的范围,就产生除法出错中断。②单步中断(单步中断的类型号是1)单步中断是指当标志寄存器FLAGE中的跟踪标志TF=1并且中断允许标志IF=1时,每执行一条指令就引起一次中断。CPU响应中断后,自动把状态标志位压入堆栈,然后清TF和IF。中断返回时出栈,TF=1,因而在单步调试程序时可连续执行。③溢出中断(INTO)(中断类型号为4的中断)溢出中断是通过INTO中断指令实现的。该指令跟在有符号数的算术运算指令之后,在程序执行过程中,当遇到INTO指令并且此时溢出标志OF=1时,将产生一个溢出中断,并转入溢出中断处理。
④软中断INTnn为中断类型号[0~255]。PC机中0H~7H被定义为处理器内部中断的类型号,08H~0FH被定义为可屏蔽中断,所以n的取值可为10H~0FFH。(5)断点中断(类型号3)与单步中断类似,断点中断也是一种调试程序的手段,并且常常和单步中断结合使用。对一个大的程序,不可能对整个程序全部用单步方式来调试,而只能先将程序中的某一错误确定在程序中的一小段中,再对这一小段程序用单步方式跟踪调试。断点中断就是用来达到这个目的的。3.2.2中断向量表所谓中断向量(interruptvector),实际上就是中断服务程序的入口地址,每个中断类型对应一个中断向量。每个中断向量占4字节的存储单元。其中:前两个字节单元存放中断服务程序入口地址的偏移量(IP),低字节在前,高字节在后;后两个字节单元存放中断服务程序入口地址的段基值(CS),也是低字节在前,高字节在后。003FF8086为每个中断源分配了一个中断类型码,取值范围为0~255,即可处理256种中断。其中包括软件中断、系统占用的中断以及开放给用户使用的中断。第1部分是类型0到类型4,共5种类型,定义为专用中断,它们占据表中的000~013H,共20个字节。这5种中断类型的入口已由系统定义,不允许用户做任何修改。它们分别是:INT0——除法出错中断INT1——单步中断INT2——外部引入不可屏蔽中断INT3——断点中断INT4/INT0—溢出中断PC机系统中产生的中断类型号为n,则该中断服务程序的入口地址为4n。例:
中断类型码为20H,则中断服务程序的入口地址存放在中断向量表从0000:0080H开始的4个字节单元中。若这4个字节单元的内容分别为:(0000:0080H)=10H(0000:0081H)=20H(0000:0082H)=30H(0000:0083H)=40H试指出相应的中断服务程序的入口地址。解:中断服务程序的入口地址为
4030:2010
。8086/8088中断的响应过程中断优先级除法错,INTn,INTO最高NMIINTR单步最低80x86实模式中断优先级结束当前指令除法错,INTO,INTn?NMIINTR?TF=1?执行下一条指令NNNNIF=1?NYYYYY内部自动形成中断类型码N读中断类型码N标志压入堆栈令TEMP=TF清除IF和TFCS和IP压入堆栈(4N,4N+1)IP(4N+2,4N+3)CS执行中断处理程序IP、CS出栈标志寄存器出栈返回被中断的主程序有NMI?TEMP=1?YYNN执行IRET指令①‘①②③④⑤⑥3.38259A中断控制器中断控制器就是在有多个中断源的系统中,当中断源发出中断请求时接收它们,并对这些中断请求进行判断,选中当前优先级最高的中断请求,再将此请求送到CPU的INTR端,在CPU响应中断并进入中断子程序之后,中断控制器依旧负责对外部中断请求的管理。8259A是Intel公司设计的可编程的中断控制逻辑芯片,具有对外设中断源进行管理并向CPU转达中断请求的能力。3.3.18259A的内部结构和引脚信号1.8259A的内部结构数据总线缓冲器读/写逻辑级连缓冲器/比较器中断服务寄存器(ISR)中断请求寄存器(IRR)优先权判别器(PR)中断屏蔽寄存器(IMR)控制逻辑
SP/EN。。。IR0IR1IR2IR6IR7内部总线CAS0CAS1CAS2____INTAINT
WR
RDCSA0D7~D01)中断请求寄存器(IRR)中断请求寄存器(IRR)是一个具有锁存功能的8位寄存器,该寄存器用来存放由外部输入的中断请求信号
IR7~IR0,可边沿触发,也可电平触发。2)中断服务寄存器(ISR)中断服务寄存器(ISR)是一个8位寄存器,与8级中断IR7~IR0相对应,用来记录正在处理的中断请求,包括正在被服务的以及被更高级中断申请打断的中断请求。3)优先权分析器(PR)优先权分析器(PR)也叫优先级判别器,用来管理和识别各中断申请信号的优先级别。它主要由优先级编码器和比较器组成,可对输入的中断按优先级进行排队,当输入端IR7~IR0中有多个中断请求信号同时产生时,由PR判定哪个中断请求具有最高优先级,并在INTA脉冲期间把它置入中断服务寄存器(ISR)的相应位。4)中断屏蔽寄存器(IMR)中断屏蔽寄存器(IMR)是一个8位寄存器,与8259A处理的8级中断IR7~IR0相对应,该寄存器可对各个中断源进行屏蔽或开放。当某位置为1时,表示相应中断源被屏蔽,为0则表示允许中断。屏蔽操作由写命令字OCW1到IMR执行,IMR也可以读回备查并保护某些屏蔽位。5)级联缓冲器/比较器级联缓冲器/比较器用于存储并比较系统中所用的全部8259A的输入信号,以实现多达8片的8259A级联。6)控制电路8259A内部的控制电路,根据中断请求寄存器IRR的位置情况和优先级判别器PR的判定结果,向8259A内部的其他部件发出控制信号,并向CPU发出中断请求信号INT和接收来自CPU的中断响应信号INTA,控制8259A进入中断服务状态。
2.8259A引脚分配8259A是一个采用NMOS工艺制造、使用单一5V电源、具有28个引脚的双列直插式芯片,具体引脚如图4-14所示。D7~D0:双向数据输入/输出引脚,用于与CPU进行信息交换。(2)IR7~IR0:8级中断请求信号输入引脚,规定的优先级为IR0>IR1>…>IR7。当有多片8259A形成级联时,从片的INT与主片的IRi相连。(3)INT:中断请求信号输出引脚,高电平有效。当8259A收到从外设经IR引脚送来的中断请求时,由它输出高电平,向CPU发出中断请求,应接在CPU的INTR输入端。123456789101112131428272625242322212019181716158259A
CS
WRRDD7D6D4D5D2D3D0D1CAS0CAS1GNDINTAIR7IR6IR4IR5IR2IR3IR0IR1INTCAS2SP/ENVCCA0(4)
:中断响应应答信号输入引脚,低电平有效。在CPU发出第二个
时,8259A将其中级别最高的中断请求的中断类型码送出;接在CPU的
中断应答信号输出端。(5)
:读控制信号输入引脚,低电平有效,用来实现对8259A内部有关寄存器内容的读操作。(6) :写控制信号输入引脚,低电平有效,用来实现对8259A内部有关寄存器的写操作。(7):片选信号输入引脚,低电平有效。一般由系统地址总线的高位、经译码后形成,决定了8259A的端口地址范围。(8)A0:地址选择信号,用于对8259A内部的两个可编程寄存器进行选择。
(9)
CAS2~CAS0:级联信号引脚,当8259A为主片时,为输出;否则为输入,与
信号配合,实现芯片的级联,这三个引脚信号的不同组合000~111,刚好对应于8个从片。(10):为级联管理信号输入引脚,在非缓冲方式下,若8259A在系统中作从片使用,则
=1;否则
=0。在缓冲方式下,
用作8259A外部数据总线缓冲器的启动信号。(11)+5V、GND:电源和接地引脚。3.8259A的工作过程第1步:当中断请求线(IR0~IR7)上有信号输入时,就把中断请求寄存器(IRR)相应的位置1。第2步:当IRR的一位置1后,就与IMR中相应的屏蔽位进行比较,如果该屏蔽位为0,就请求发送给优先权分析器;如果该屏蔽位为1,就封锁此请求。第3步:当一个中断请求被输入优先权分析器后,将由优先权分析器判定其优先级,然后向CPU发出中断申请,INT引脚变高(INT连接到8086的INTR)。第4步:CPU的INTR引脚为异步状态接收,也就是可以在任何时间接收中断。在软件控制下,利用STI指令(中断置位)或CLI(中断复位)指令可分别将CPU的“中断开放标志位”IF置位或复位,可以做到接收或不理睬INTR上的中断申请。第5步:假定CPU中的IF标志为1,那么CPU在完成当前指令的执行后进入中断响应周期,这个中断响应周期将标志寄存器入栈,然后清除IF标志,关闭中断。再将代码段寄存器和指令指针也入栈(这是为了从中断服务程序返回),然后CPU发出第二个脉冲以通知8259A,说明8086已经允许了它的中断请求。如果8086工作于“最小方式”,那么脉冲信号为8086引脚上的信号。第6步:8259A收到第一个负脉冲后,将禁止IRR锁存器,使IRR不受IR7~IR0进一步变化的影响,这种状态一直保持到第二个脉冲结束。第一个脉冲还使ISR的某一位置位,并清除相应的IRR位。第二个
脉冲使ICW2的当前内容被放到D7~D0上,CPU用该字节确定中断类型号。此后,CPU将按照这个指定中断类型号中的内容去执行相应的中断程序。注意:如果ICW4的中断自动结束位(AEOI)为1,那么第二个脉冲结束时,ISR中被第一个脉冲置位的位被清除,否则要等到发送内含中断结束(EOI)命令的OCW2后方能清除ISR中的这个位。。第7步:当进入中断服务程序时,主程序和子程序都要用到的那些寄存器应当保存入栈,最好的方法是立刻“PUSH”每个用到的寄存器入栈。当中断服务程序完成后,再以相反的次序“POP”每个寄存器出栈。第8步:一旦中断服务程序完成,就应用IRET(中断返回)指令使CPU再次回到主程序。IRET指令就会自动弹出中断前的指令指针,使主程序恢复到被中断之处,并且恢复中断前与中断服务变化无关的标志状态(包括IF标志的状态)。而中断也将自动放开T1T2T3T4TITITIT1T2T3T4第一个总线周期第二个总线周期三个空闲状态中断类型码CLK____INTAAD7~AD04.2.28259A的工作方式1.中断优先级的设置方式8259A对中断优先级的管理可分为4种情况:全嵌套方式、自动循环方式、特殊自动循环方式和特殊全嵌套方式。(1)全嵌套方式也称固定优先级方式。在这种方式下,由IRi引入的中断请求具有固定的优先级-IR0(最高)->IR7(最低).当一个中断请求被响应时,ISR中的对应位ISn被置“1”,8259A把中断类型码放到数据总线上,然后,进入中断服务程序。一般情况下(除了“中断自动结束”方式外),在CPU发出中断结束命令(EOI)前,此对应位一直保持为“1”-封锁同级或低级的中断响应,但并不禁止比本级优先级高的中断响应-实现中断“嵌套”。(2)特殊全嵌套方式
在处理某一级中断时,不但允许优先级更高的中断请求进入,也允许同级的中断请求进入。用于主从结构的8259系统中,将主片设置为“特殊全嵌套方式”.
通过ICW4的“SFNM”位可以设置此种方式。CPUIR0IR1IR7…IR0IR1IR7…8259(主片)8259(从片)
(3)优先级自动循环方式优先级是循环变化的(不希望有固定的优先级差别)-一个设备的中断服务完成后,其优先级自动降为最低,而将最高优先级赋给原来比它低一级的中断请求。开始时,优先级队列还是:IR0->IR7,若此时出现了IR0请求,响应IR0并处理完成后,队列变为:IR1,IR2,IR3,IR4
,IR5
,IR6
,IR7,IR0。若又出现了IR4请求,处理完IR4后,队列变为:__________________________________系统中是否采用“自动循环优先级”,由 操作命令字OCW2来设定。(4)优先级特殊循环方式
与“优先级自动循环方式”相比,只有一点不同,即可以设置开始的最低优先级。例如,设定IR4为最低优先级,那么IR5就是最高优先级,其余各级按循环方法类推。2.8259A结束方式(1)中断自动结束方式(AEOI方式)在第二个后沿,即完成把对应的ISR位复位。注意:AEOI方式是在中断响应后,而不是在中断处理程序结束后将ISR位清0。这样,在中断处理过程中,8259A中就没有“正在处理”的标识。此时,若有中断请求出现,且IF=1,则无论其优先级如何(比本级高、低或相同),都将得到响应。尤其是当某一中断请求信号被CPU响应后,如不及时撤销,就会再次被响应-“二次中断”。INTA所以,AEOI方式适合于中断请求信号的持续时间有一定限制以及不出现中断嵌套的场合。通过ICW4可以设置AEOI方式(AEOI=1)。(2)一般(常规)中断结束方式(EOI)适合于全嵌套方式。实现:在中断服务程序结束时,向8259A发常规中断结束命令(OCW2:EOI=1,SL=0,R=0)例:MOVAL,20H;OCW2=20HOUT20H,AL;端口地址=20H(偶地址)在全嵌套方式下,ISR中最高优先级的置“1”位,正对应于当前正在处理的中断,将其清“0”,就完成了当前正在处理中断的结束操作。(3)特殊中断结束方式(SPECIFICEOI-SEOI)在非全嵌套方式下,无固定的优先级序列(使用设置优先权命令或特殊屏蔽方式),此时,根据ISR的内容就无法确定刚刚所响应(处理)的中断。这种情况下,就不能用上述的EOI方式进行中断结束处理,而必须用特殊的中断结束命令SEOI--用OCW2:EOI=1,SL=1,R=0,L2~L0.由L2~L0指定清除ISR中的哪一位。3.屏蔽中断源的方式CPU可用CLI指令将IF清“0”,禁止所有可屏蔽中断的进入。但是要想屏蔽某个或某几个中断源,就得用8259A的中断优先级管理的屏蔽方式来实现。8259A对中断源的屏蔽方式有以下两种:普通屏蔽方式通过对中断屏蔽寄存器(IMR)的设定,实现对相应位为“1”的中断请求的屏蔽。可通过OCW1使IMR的一位或几位置“1”。2)特殊屏蔽方式特殊屏蔽方式允许低优先级中断请求中断正在服务的高优先级中断。这种屏蔽方式通常用于级联方式中的主片,对于同一个请求IRi上连接有多个中断源的场合,可以通过编程写入操作命令字OCW3来设置或取消。
在特殊屏蔽方式中可在中断服务子程序中用中断屏蔽命令来屏蔽当前正在处理的中断,同时可使ISR中的对应当前中断的相应位清.这样一来不仅屏蔽了当前正在处理的中断,而且也真正开放了较低级别的中断请求。在这种情况下,虽然CPU仍然继续执行较高级别的中断服务子程序,但由于ISR中对应当前中断的相应位已经清0,如同没有响应该中断一样。所以,此时对于较低级别的中断请求,8259A仍然能产生INT中断请求,CPU也会响应较低级别的中断请求。4.系统总线的连接方式8259A与系统总线的连接方式有下列两种:1)缓冲方式缓冲方式是指在多片8259A级联的大系统中,8259A通过外部总线驱动器和数据总线相连。在缓冲方式下,8259A的
输出信号作为缓冲器的启动信号,用来启动总线驱动器,在8259A与CPU之间进行信息交换。。2)非缓冲方式当系统中只有一片或几片8259A芯片时,可以将数据总线直接与系统数据总线相连,这时8259A处于非缓冲方式。在这种方式下,8259A的SP/EN的SP作为输入端设置,主片应接高电平,从片应接低电平。
5.引入中断请求的方式8259A引入中断请求的方式有下列几种:1)边沿触发方式8259A将中断请求输入端出现的上升沿作为中断请求信号,上升沿之后,相应引脚可以一直保持高电平2)电平触发方式8259A将中断请求输入端出现的高电平作为中断请求信号,在这种方式下,中断响应之后,高电平必须及时撤除。否则,在CPU响应中断、开中断之后,会引起第二次不应该有的中断。3)中断查询方式特点:a.既有中断的特点,又有查询(Polling)的特点。b.外设仍然向8259A发中断请求信号,要求CPU服务。c.CPU的IF=0,不响应外部的中断请求(对CPU的中断请求信号不起作用)此时,CPU需要用软件查询方法来确认中断源,从而实现对设备的服务,先向8259A发查询命令OCW3:00001100P紧接着执行一条读指令(IN指令),读出专门的“中断状态字”:当8259A收到P=1的查询命令后,在下一个RD信号将使ISR的相应位置“1”,就像收到了INTA一样,并把上述的“中断状态字”送到数据总线上,由CPU读入AL。0A0IR----W2W1W0D7D01:有设备请求服务;0:无设备请求服务。当前最高优先级的中断请求4.2.38259A的初始化编程8259A的控制寄存器可分为两组,一组是初始化命令字ICW1~ICW4,另一组是操作命令字OCW1~OCW3。每片8259A具有两个内部端口地址,一个偶地址端口(A0=0),一个奇地址端口(A0=1),其他高位地址码由用户定义,用来产生8259A的片选信号。1.初始化命令字初始化命令字用来对8259A初始化,包括ICW1~ICW44个初始化命令字。(1)ICW1ICW1使用偶地址端口(A0=0),其中D4位为特征位(标志位),此时该位固定为1,表示当前写入的是ICW1(OCW1也用偶地址端口写入,但OCW1的D4位为0)。ICW1的格式如下:(2)ICW2(设定中断类型号)ICW2使用奇地址端口(A0=1),紧跟在ICW1之后设置。ICW2的格式如下:低三位的值由中断请求输入引脚决定3)ICW3ICW3只在级联方式中使用,端口地址为奇地址,其格式如下:从片的中断请求线在主片的哪个IRi引进(4)ICW4在80x86系统中必须设置ICW4,端口地址为奇地址,其格式如下:2.8259A的初始化流程8259A的初始化命令字(ICW)是在加电之后由CPU按特定的顺序写入的。也就是说,各初始化命令字的识别一方面依赖于地址信号A0和初始化命令字中的特定标识位,另一方面也与写入的先后次序有关。8259A的初始化顺序及相应的寻址标志如图所示。开始ICW1(A0=0D4=1)ICW2(A0=1)SNGL=0?(级联方式?)ICW3(A0=1)IC4=1?ICW4(A0=1)准备好接受中断NNYY①在初始化操作过程的开头,总要依次写入命令字ICW1和ICW2。②只有当ICW1中的SNGL位=0,才需写入ICW3。对于主片和从片均需写入ICW3,而且它们的格式不同。③只有当ICW1中的IC4=1时,才需写入ICW4。对于80x86系统,ICW4总是需要设置的。在系统中,单片8259A与80x86CPU配置时,初始化要写入的预置命令字是:ICW1、ICW2、ICW4
。而级联系统要写入预置命令字是:ICW1、ICW2、ICW3和ICW4。初始化过程结束,8259A进入所设置的状态后,才能写入操作命令字(OCW)。OCW1——中断屏蔽操作命令字(屏蔽寄存器IMR)OCW1用来实现对中断源的屏蔽功能,OCW1的内容直接写入屏蔽寄存器IMR。3.操作命令字例如,若通过OCW1向中断屏蔽寄存器写入代码11110000,将导致中断输入IR7~IR4被屏蔽掉,而IR3~IR0撤销屏蔽。2)OCW2——循环/结束综合控制命令字OCW2的主要作用是设置中断结束方式(包括一般结束EOI和特殊结束SEOI)和控制中断优先级的循环方式。标识符在特殊优先级循环方式中L0~L2用于选择优先级最低的中断源。在特殊的EOI,全嵌套方式中L0~L2用于指定复位与哪个中断源对应的ISR位。3)OCW3——特殊屏蔽方式和中断查询方式操作命令字(见图4-23)OCW3的作用是写入多功能操作命令字。OCW3有三项功能:设置/取消特殊屏蔽方式;设置中断查询方式;设置对8259A内部寄存器的读出命令。4.8259A应用举例1)工作于80x86系统,单片8259A,边沿触发方式。(2)中断类型码初始值为08H,即IR0~IR7对应的中断类型码为08H~0FH。(3)中断结束时,用普通中断结束命令,固定优先级。
8259A的端口地址为20H,21H。实现上述要求的初始化程序如下:MOVAL,13H;ICW1,边沿触发,单片8259A,要写ICW4OUT20H,ALMOVAL,08H;ICW2,中断类型码初值为08HOUT21H,ALMOVAL,0DH;ICW4,缓冲方式,80x86系统,普通EOI方式OUT21H,AL;在中断服务结束时,需向8259A设置操作命令字OCW2=20H,如下所示:MOVAL,20H;OCW2,普通EOI命令OUT20H,AL8259A的读出操作:可以读出四个方面的内容读“中断状态字”(“查询字”):先写入P=1的OCW3查询命令字用偶地址读(INAL,20H)读IRR:先写入OCW3(RR=1,RIS=0)用偶地址读(INAL,20H)读ISR:先写入OCW3(RR=1,RIS=1)用偶地址读(INAL,20H)随时可用奇地址读IMR
(INAL,21H)例2:读8259A相关寄存器的内容。假设8259A的端口地址为20H、21H,请读入IRR、ISR、IMR寄存器的内容,并相继保存到从数据段2000H开始的内存单元中;若该8259A为主片,
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 学校体育部上学期工作计划
- 铁矿掘进合同协议
- 运动督促合同协议
- 工厂钢材采购合同协议
- 垃圾桶施工合同协议
- 硫铁原矿采购合同协议
- 私人住宅承包合同协议
- 租用公园绿地合同协议
- 数字版权保护策略-全面剖析
- 智能化包装技术革新-全面剖析
- 2022年第三届大学生组织管理能力大赛真题题库和答案
- 理综-新疆乌鲁木齐市2024年高三三模考试试题和答案
- 聋哑人辅助交流系统
- 带状疱疹病人的个案护理
- 《中药鉴定技术》课件-五味子的鉴定
- 大数据 AI大模型-智慧统计大数据平台解决方案(2023版)
- 江苏省安全员《B证》考试题库及答案
- 自杀及其预防课件
- 灰姑娘童话故事
- 等离子切割机操作手册与安全操作规程
- 印刷合同:纸袋印刷合作
评论
0/150
提交评论