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

下载本文档

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

文档简介

1、1,微机原理与测控接口技术,北京邮电大学自动化学院叶平Email:Ping.YETel:62282571,2,第七章IO接口与中断技术,3,本章教学目标,I/O的基本知识(接口的功能与作用,端口编址方式,信息传送方式,端口地址分配与地址译码等)中断的基本原理(中断请求、判优、响应、处理、返回)8086中断系统(中断源,中断向量表,中断类型号,中断响应过程等)中断控制器8259A(内部结构,工作原理,工作方式及编程)PCXT/AT机中的外部中断逻辑,4,第一节I/O接口,5,输入和输出设备是计算机系统的重要组成部分。外设与CPU是通过各种I/O接口实现的。I/O接口在系统中起着重要的桥梁作用。I

2、/O接口:连接外设与总线之间的逻辑电路的总称。,7.1.1I/O接口的重要作用,6,CPU与外设交换数据需要解决问题:速度不匹配信号电平不匹配(TTL,CMOS,RS-232等)信号格式不匹配(并行、串行、模拟、数字等)时序不匹配(外设有自己的定时与控制逻辑),7,CPU与IO设备之间的接口信息,数据信息、状态信息和控制信息数据信息(Data)CPU与外设交换的基本信息数字量由键盘、磁盘驱动器等读入的信息是以二进制表示的数或以ASCII码表示的数或字符。模拟量如温度、压力等非电量,经由传感器及其调理电路转换成模拟电压或电流,再经过A/D转换后输入计算机;计算机的控制输出则必须先经过D/A转换后

3、,才可控制执行机构。开关量只有两个状态的量,如开关的合与断、阀门的开与关等。只要用一位二进制数表示,一个字节长度一次输入或输出可控制8个开关量。,8,状态信息(Status)反映外设当前所处的工作状态。输出时,常要查询外设(输出)是否有空闲(Busy),数据缓冲区中数据是否已全部输出;若为空闲状态,则可以接收CPU传送来的数据,否则CPU要等待。输入时,CPU常要先查询外设(输入)的信息是否准备好(Ready),准备好才传送。Ready、Busy等表明外设工作状态的信息是CPU要读取的。,9,控制信息(Control)控制外设启动或停止等信息。,状态信息、控制信息、数据信息为性质不同的信息,必

4、须分别传送。如何进行区分?为使三者之间能区分开,必须各自有不同的I/O端口地址。因此,一个外设往往要一组I/O端口地址,对应于外设的一组寄存器,CPU寻址的是I/O端口。,00110001,数据端口、命令端口和状态端口,10,I/O端口I/O接口电路中CPU能直接访问的外设寄存器的地址一个端口对应一个地址一个I/O接口电路有一组寄存器,对应多个端口;数据端口、命令端口和状态端口外设寄存器往往是8位的;通常外设数据端口是8位的而状态与控制端口往往只用其中的一位或两位,故外设状态和控制信息可以共用一个端口CPU对外设的操作归结为对接口电路中I/O端口的读/写,I/O接口,IO设备,寄存器阵列/堆,

5、CS,11,7.1.3I/O端口的编址方式,统一编址方式独立编址方式,I/O,I/O,M,M,I/O,M,12,I/O接口,寄存器阵列/堆,CS,总线接口,ALU,寄存器阵列,FR,8086,A19A0,译码电路,设置专门输入/输出指令提供I/O读写信号线INAL,20HMOVAL,20H(DS=0000H),I/O,FFFFH,0000H,I/O,M,00000H,FFFFFH,Memory,M/IO,独立编址方式,13,与存储器统一编址(或存储器映射方式)优点:指令多且齐全;端口空间大。缺点:指令长且慢;占用存储器空间。I/O独立编址优点:指令短(设有专门的I/O指令)执行快;不占存储器空

6、间;程序易读。缺点:端口空间小;需要单独的I/O信号线。,14,7.1.4CPU与I/O端口之间传送信息的方式,无条件传送最简单的传送方式,用于外设(例如各种机械或电子开关设备)总是处于准备好的情况。CPU(主机)对开关设备的操作:读取开关状态或者设置开关状态。,CPU通过锁存器及驱动器控制LEDLED随时准备接收CPU的控制,七段LED接口电路,15,无条件传送的输出方式CPU的输出数据经数据总线加至三态缓冲器的输入端,端口地址译码信号Y、AEN和IOW信号经过门电路后产生三态缓冲器的控制信号。AEN是地址允许信号。当AEN=0由CPU控制总线;当AEN=1时,由DMA控制总线(CPU不控制

7、总线)。三态缓冲器的控制信号为低电平时,开启三态缓冲器使来自CPU的数据送到外设。,A0A9、AEN、IOR等信号为ISA总线信号,page242,OUTDX,AL,16,无条件传送的输入方式CPU读外设数据时总认为数据已准备就绪;AEN是地址允许信号。当AEN=0由CPU控制总线;当AEN=1时,由DMA控制总线(CPU不控制总线)。,A0A9、AEN、IOR等信号为ISA总线信号,page242,INAL,DX,17,CPU执行输入指令,指定的端口地址经系统地址总线(对PC机为A9A0)送至地址译码器,译码后产生Y信号。Y为低电平说明地址线上出现的地址正是本端口的地址;AEN为低电平说明C

8、PU控制总线;端口读控制信号IOR有效(低电乎)时,说明CPU正处在端口读周期。三者均为低电平时,经门电路后产生低电平,开启三态缓冲器使来自外设的数据进入系统数据总线而到达累加器。,INAL,DX,18,采用无条件传送方式的数据采集系统如图所示。被采样的数据是8个模拟量,由继电器绕组P0、P1P7控制触点K0、K1K7逐个接通。用一个4位(十进制数)数字电压表测量,把被采样的模拟量转换成16位BCD代码,高8位和低8位通过两个不同的端口输入,其地址分别为340H和341H。CPU通过端口342H输出控制信号,以控制继电器的吸合,实现不同模拟量的采集。,19,程序实现如下:start:movcx

9、,0100h;01ch,置合第一个继电器代码;00cl,断开所有继电器的代码leabx,bufferxoral,al;清alnext:moval,clmovdx,342houtdx,al;断开所有继电器线圈calldelay1;模拟继电器触点的释放时间moval,choutdx,al;使P0P7吸合calldelay2;模拟触点闭合及数字电压表的movdx,340h;转换时间inal,dxmovbx,al;输入,20,incbxincdx;341hmovdx,341hinal,dxmovbx,alincbxshlch,1;CH左移一位,为下一个触点闭合作;准备0000_00010000_001

10、0jnenext;8个模拟量未输入完则循环;此程序段完,执行别的程序段。,数据端口、命令端口和状态端口,21,无条件传送方式可以用来处理开关设备,但不能用以处理许多复杂的机电设备,如打印机。CPU能够以极高的速度成组地向外设输出数据(微秒级),机械动作速度很慢(毫秒级)。如果CPU不查询打印机的状态,不停地向打印机输出数据,打印机来不及打印,后续的数据必然覆盖前面的数据,造成数据丢失。查询传送方式就是在传送前先查询一下外设的状态,当外设准备好了才传送;若未准备好,则CPU等待。,22,程序查询传送方式读I/O端口状态信息,若准备就绪,则执行输入或输出操作,否则,就继续查询等待。,CPU先从状态

11、端口读入外设的状态信息,检查外设是否已准备好数据。若未准备好,则CPU进入循环等待,直到准备好后才退出循环(结束等待),读入数据。故查询式输入除了必须配备数据口外,还必须占用状态端口中的若干位。,23,程序查询方式-外设未准备好,输入设备,8位数据锁存器,8位三态缓冲器,1位缓冲器,D,Q,R,+5V,地址译码,状态信息,去系统数据总线,IOR,AEN,IOR,AEN,A9-A0,Ready,状态端口地址,24,输入设备,8位数据锁存器,8位三态缓冲器,1位缓冲器,D,Q,R,+5V,地址译码,状态信息,去系统数据总线,IOR,AEN,IOR,AEN,A9-A0,Ready,数据端口地址,状态

12、端口地址,程序查询方式-外设准备好,25,wait1:movdx,s_portinal,dxtestal,80hjzwait1movdx,d_portinal,dx,检查是否已准备好数据,如果未准备好,继续等待,已准备好,从数据端口读出数据,读状态端口数据,查询程序,26,查询式输出CPU必须先查外设的状态,看外设的数据缓冲区是否已空。所谓“空”就是数据缓冲区可以接收CPU输出的新数据。若缓冲区空,即BUSY为假,则CPU执行输出指令;否则BUSY为真,CPU就等待。,27,查询传送方式读I/O端口状态信息,若准备就绪,就输入或输出,否则,就继续查询等待。可见,该方式CPU的大部分时间都用在了

13、查询和等待了,所以传送效率不高。,28,中断传送方式当外设没有准备好时,CPU可以去做其他工作,省去CPU的查询等待时间,提高效率。以打印机为例,其工作过程如下:CPU启动打印机工作,然后继续自己的工作;当打印机准备好或已完成一个字符输出时,把设备置为就绪状态;I/O接口在设备就绪时向CPU发出中断请求;CPU接到中断请求信号,暂停当前工作,转入中断服务程序ISR,响应中断。ISR实现发送下一个字符到打印机;CPU从中断服务程序返回,继续自己的工作;重复25步,直至整个文件输出结束后关闭打印机。,29,中断请求外设需要CPU服务时,需要发出中断请求。外设及其接口的中断请求分为边沿请求和电平请求

14、。请求信号由低到高或由高到低的跳变为边沿触发请求;请求信号为高电平或低电平为电平触发请求。可屏蔽中断输入引脚INTR不可屏蔽中断输入引脚NMI,30,31,中断传输方式可实现CPU和外设并行工作,可大大提高CPU的工作效率。,32,CPU与I/O端口之间传送信息的方式无条件传送程序查询传输中断传送DMA传送(DirectMemoryAccess),33,7.1.5PC机系列I/O端口地址分配,地址分配:前256个端口给系统板,后768个端口给扩展板系统板上接口芯片的端口地址(000H00FFH),34,扩展槽上接口控制卡的端口地址(100H3FFH),IBMPC/AT,35,7.1.6I/O端

15、口地址译码,译码电路的两种译码方式固定式端口地址译码可选式端口地址译码译码电路的实现途径门电路译码译码器译码GAL、FPGA器件实现译码(译码电路对外可保密)(由于涉及到开发工具与GAL编程,不要求掌握),36,用门电路实现地址译码,有全译码和部分译码全译码电路:I/O所有地址线都参加译码的电路称为全译码电路。I/O地址不会产生地址重叠。部分译码电路:I/O地址线只有部分地址信号参加了译码的电路称为部分译码电路。译出的I/O地址有重叠。IOR和IOW、AEN等信号也可参加译码。(ISA总线P242)DMA操作时也使用地址线和IOR、IOW读写控制信号,为了区分DMA和CPU,要用到AEN信号。

16、AEN=1,DMA控制总线;AEN=0,CPU控制总线。,37,I/O用门电路译码实例:(a)部分译码(b)全译码,11110100B2F4H,注:AEN=0非DMA传送AEN=1DMA传送,38,11110100B2F4H,39,I/O用门电路译码实例:(a)部分译码(b)全译码,1101001xxxB348H34FH,40,I/O用门电路译码实例:(a)部分译码(b)全译码,A0,A1,A2,1101001xxxB348H34FH,41,采用译码器可同时译出多个端口地址常用译码器有3-8译码器74LS138、4-16译码器74LS154,双2-4译码器74LS139等,42,74LS138

17、,其真值表如表所示。Y0Y7是输出线,低电平有效。G1、G2A、G2B为三个控制信号输入端,A、B、C为三个输入端。,43,例:采用74LS138译码器实现全译码电路,1101011xxxB358H35FH,44,45,开关式可选择译码电路,如何计算译码器的地址范围?,46,第二节中断的基本概念,47,所谓中断就是当CPU正常运行程序时,由于随机的事件(包括内部事件和外部事件)引起CPU暂时中止正在运行的程序,转去执行请求中断的外设的中断服务程序,中断服务结束后再返回被中止的程序。这一过程被称为中断。,主程序,中断服务程序,外设接口,中断请求,中断响应,中断服务,保护现场,恢复现场,什么是中断

18、,中断返回,48,中断源,中断源能引起CPU产生程序中断的随机事件称为中断源内部中断源(软件中断)指令中断INTn出错中断外部中断源(硬件中断)可屏蔽中断INTR非屏蔽中断NMI,49,中断过程分为五步:中断请求,中断判优,中断响应,中断处理/服务,中断返回,主程序,中断服务程序,外设接口,中断请求,中断响应,中断服务,保护现场,恢复现场,中断返回,50,中断请求外设需要CPU服务时,需要发出中断请求。外设及其接口的中断请求分为边沿请求和电平请求。请求信号由低到高或由高到低的跳变为边沿触发请求;请求信号为高电平或低电平为电平触发请求。可屏蔽中断输入引脚INTR不可屏蔽中断输入引脚NMI,51,

19、触发方式电平触发边沿触发,T1,T2,T3,T4,T1,T2,T3,T4,CLK,INTA,INTR,T1,T2,T3,T4,INTA#1周期,INTA#2周期,发现产生中断,NMI,52,中断判优CPU管理多个中断源时,在收到中断请求后,需判断是哪一个中断源请求中断;给每个中断源指定一个优先权,称为中断优先级;多个中断源同时请求中断时,CPU按照中断优先级高低顺序,依次响应。中断判优的方法软件查询判优法硬件判优法,53,CPU响应中断后,转入执行一特定地址的中断服务程序,该中断服务程序查询状态口,确定发出中断请求的外设,然后进行相应的处理。,软件查询判优法,端口,54,软件查询方法的接口电路

20、如图所示。查询程序如下:,XORAL,ALMOVDX,340HINAL,DX;读入中断寄存器状态RCRAL,1JCISR0RCRAL,1JCISR1RCRAL,lJCISR2RCRAL,1JCISR3,若0#有请求,则转0#中断服务程序。,查询方法的电路比较简单。但是当外设个数较多时,通过逐位检测查询到转入中断服务所耗费的时间较长。,端口,55,外设的中断优先级由查询的次序决定,中断源较多时,查询时间可能较长,56,硬件判优(向量中断法/并行判优)多个外设经中断控制器向CPU提出中断请求,CPU响应中断发出INTA信号,中断控制器将相应的中断向量号(中断类型号)放在数据总线上,CPU读取后,即

21、可确定中断源,查中断向量表进行相应处理。,中断请求,57,中断向量表由若干中断服务程序入口地址组成的表例:x86的中断向量表,中断服务程序入口0,中断服务程序入口1,中断服务程序入口255,IPCS,IPCS,IPCS,IPCS,IPCS,00000H,00004H,003FCH,中断类型号中断向量号,00008H,58,中断请求中断判优中断响应中断响应就是CPU“中断”正在执行的处理任务,转向中断请求相对应的处理程序的过程。*保护断点*保护其他现场*CPU关中断*转到中断请求所对应的中断服务程序,59,断点是指CPU执行的现行程序被中断时的下一条指令的地址,又称断点地址;用于恢复被中断程序的

22、执行。中断现场是指CPU转去执行中断服务程序前的运行状态,包括CPU内部各寄存器等。恢复到中断之前的状态。CPU关中断在响应过程中,不允许被新的中断源中断,即IF=0。,60,1000:0150H,MOVAX,0ADDAX,DXMOVDI,AX,CPU在执行此指令时,某中断源请求中断;CPU在执行完该指令后,转去执行中断服务程序。,断点,61,中断处理(服务)中断处理就是执行中断服务程序,完成中断源提出的处理要求。,CPU执行流程,62,中断处理程序,PUSHAXPUSHBXMOVAX,0ADDAX,DXMOVDI,AXPOPBXPOPAXIRET,保护寄存器,恢复寄存器,处理程序主体,63,

23、中断返回CPU控制权从中断服务程序转移到被中断程序的过程,IRET恢复现场CS:IP(断点)FR,64,中断过程分为五步:中断请求,中断判优,中断响应,中断处理/服务,中断返回,主程序,中断服务程序,外设接口,中断请求,中断响应,中断服务,保护现场,恢复现场,中断返回,65,第三节PC机的中断系统,66,PC机中断系统,x86的中断源,8259可编程中断控制器,中断逻辑,INTn,INTO,除法错误,单步中断,CPU,非屏蔽中断请求,1,0,4,NMI,INTR,INTA,IRQ0定时,IRQ1键盘,IRQ2级联,IRQ3com2,IRQ4com1,IRQ5并口2,IRQ6软盘,IRQ7并口1

24、,可屏蔽中断请求,67,主8259:20H、21H,从8259:A0H、A1H,IBMPC/AT,可屏蔽中断请求,68,中断源的优先级,中断源优先级除法错(INT0),INTn,INTO最高NMI次高INTR次低单步中断(INT1)最低,当有多个中断源同时请求中断时,CPU先响应优先级最高的中断源,再响应优先级较低的中断源。,69,内部中断(软中断),除法错中断执行DIV或IDIV指令时,商超出商单元表示的最大值,即产生0号中断溢出中断当FR的OF=1时,执行INTO指令,即产生4号中断单步中断当FR的TF=1时,执行每条指令,即产生1号中断指令中断INTn,70,INTn中断分类,BIOS中

25、断INT16HI/O设备控制程序BIOS实用服务程序BIOS特殊中断BIOS专用参数中断DOS中断公开的DOS专用中断(供内核代码专用)未公开的DOS专用中断(供内核代码专用)DOS可调用中断系统功能调用中断INT21HDOS保留,中断服务程序,IPCS,IPCS,IPCS,IPCS,IPCS,00000H,00004H,中断向量号,71,外部中断(硬件中断),NMI(脉冲宽度)当CPU收到NMI请求后,默认该请求的中断类型号为02H。INTR(电平触发)在CPU的INTR引脚输入“高”有效信号时,则产生硬件可屏蔽中断请求。是否屏蔽由FR寄存器的IF位决定。IF=0,屏蔽中断(执行CLI指令)

26、IF=1,允许中断(执行STI指令)使用中断控制器管理多个硬件中断源,72,当CPU收到非屏蔽中断NMI请求后,默认该请求的中断类型号为02H。包括3个非屏蔽中断源:协处理器出错系统RAM奇偶校验错I/O通道校验错,73,硬中断与软中断的比较,软中断的特点通常,用中断指令INT触发,中断的发生时刻是可知的CPU不发中断响应信号中断类型号(n)由指令直接给出不可被屏蔽硬中断的特点由外部事件引起,具有随机性CPU需发中断响应信号(对INTR),对NMI不发可以被屏蔽(对INTR),对NMI不能屏蔽由中断控制器发中断类型号(对INTR),对NMI,CPU自动产生(02号),74,75,8086处理中

27、断的过程,完成当前指令,内部中断?,标志入栈,执行下一条指令,识别中断,读中断类型号,Yes,Yes,NMI?,INTR?,TF=1?,IF=1?,B,A,Yes,Yes,Yes,No,No,No,No,No,76,0TF0IF,A,查中断向量表得中断服务程序入口地址,保存断点CS:IP执行中断服务程序,IRET,恢复被中断的程序,B,断点及FR出栈,77,中断向量表,中断向量表由若干中断服务程序入口地址组成的表例:x86的中断向量分配表如下图教材后面的附录D给出了中断向量地址表,p381,78,79,Memory,中断向量表:0000:00000000:03FFH,1000:0150H,30

28、00:0200H,0000:n4,0000:n4+2,0000:0000,0200h3000hMOVAX,0ADDAX,DXMOVDI,AXMOVBX,CXIRET,类型n中断服务程序入口地址,某中断源发出中断请求,中断类型号为n,堆栈,0150,1000,FR,IP=0200HCS=3000H,0000:3FFH,0000:0000,start:,80,从中断服务程序返回断点处,靠的是执行IRET指令,从堆栈中取出断点地址给CS:IP,继续执行被中断的程序。故中断服务程序最后应安排IRET指令。,堆栈,执行IRET后,IPCSFR,0150,1000,FR,SS:SP,IP=0200HCS=

29、3000H,Memory,1000:0150H,3000:0200H,0200h3000hMOVAX,0ADDAX,DXMOVDI,AXMOVBX,CXIRET,0000:n4,0000:n4+2,0000:0000,start:,81,82,某中断向量号为72H,执行INT72H取中断向量号72H计算中断向量地址724=0 x01C8H724+2=0 x01CAH取中断服务程序入口地址偏移量IP,IP=2050H段地址CS,CS=A000H转入中断服务程序A000H:2050H中断返回到INT72H指令的下一条指令,83,当中断源产生中断请求后,不论是内部中断(INTn)、非屏蔽中断,还是可

30、屏蔽中断,只要满足响应条件,在执行完当前指令后,CPU内部硬件会自动完成下列响应中断的过程:取中断类型号nFR入栈IF、TF清0断点CS入栈断点IP入栈取内存单元(0000:n4)字内容送IP取中断子程序取内存单元(0000:n4+2)字内容送CS入口地址此时CS:IP指向中断服务程序的入口,开始执行中断程序。,中断控制指令INTn(page112),84,中断向量表的修改,将中断类型号为80H的中断服务程序intr入口地址填入中断向量表直接修改中断向量表xorax,axmoves,axmovbx,80h*4;中断向量号x4movax,offsetintr;中断服务程序的偏移地址moves:b

31、x,axmovax,segintr;中断服务程序的段地址moves:bx+2,ax,isr_80H.asm,85,利用DOS调用修改中断向量表moval,1Ch;中断类型号18.2次为1smovah,35h;取原中断向量int21h;ES:BX=入口地址movold_off,bxmovbx,esmovold_seg,bxmoval,1Ch;中断类型号movah,25h;置中断向量movdx,segintrmovds,dxmovdx,offsetintrint21h;DS:DX=入口地址,isr_1Ch.asm,86,moval,1Ch;中断类型号movah,25h;恢复原中断向量movdx,o

32、ld_segmovds,dxmovdx,old_offint21h;DS:DX=入口地址,87,思考题:某外部中断对应中断类型号为08执行INT08,88,第四节可编程中断控制器8259A,89,主8259:20H、21H,从8259:A0H、A1H,IBMPC/AT,可屏蔽中断请求,90,8259A是一种可编程的中断优先级控制芯片;每一片8259A可管理8级中断。,8259A外部特性与内部结构,91,8259A外部特性,18259A与CPU的连接信号D7D0:CPU与8259A之间的数据线。RD和WR:读/写命令线,接系统总线的IOR和IOW信号。CS和A0:片选线和地址线。CS由系统的I/

33、O地址译码器产生,确定该8259A在系统I/O空间的地址。A0用于选择8259A的内部寄存器。因只有一条地址线,可知只有两个端口地址。INTR:中断请求信号线,高有效,接到CPU的INTR信号。INTA:CPU或总线控制器8288来的中断响应信号线。在中断响应期间,该信号线送CPU来的负脉冲。,92,2.8259A与外设间的连接信号IR0IR7:中断请求输入信号,高电平和上升沿请求。CAS2CAS0:级联信号。当系统的中断请求多于8个时,可用两个或更多的8259A级联,其中一个是主中断控制器,其余的是从中断控制器。SP/EN:双向信号线。当8259A与系统数据总线之间加双向总线驱动器以加大82

34、59A的驱动能力时,8259A应处于“缓冲方式”。应是输出线,以控制双向总线驱动器的EN端。若不采用“缓冲方式”,则是输入线,由它决定该8259A编程为“从片”(=0)还是编程为“主片”(=1)。,93,94,STI,IP,CS,FR,CPU和总线控制逻辑,(1)条件IF=1NMI=0HOLD=0无内部中断,INTR,INTA,D0D7,8259A,INT,INTA,D0D7,IR0,IR1,IR7,外设中断请求,(5)保护断点,(9)返回主程序,4*N,4*N+2,IP,CS,FR,(1)中断请求,主程序,(2)中断请求INT=1,(3)INTA=0送8259A,(4)类型码N送CPU,中断

35、处理程序,IRET,可屏蔽中断的响应和处理过程,95,8259A的内部结构,96,中断请求寄存器(IRR)存放外部中断源发出的中断请求信号,IRRi置1,表明IRi引脚上有了中断请求信号。中断屏蔽寄存器(IMR)“0”允许中断;“1”屏蔽中断,由CPU执行程序写入。在服务寄存器(ISR)存放正在被CPU处理的中断请求信号;例如:通过判优电路IRR0位的请求被选中,8259A向CPU发中断请求,通过INTA收到第一个中断响应信号后,ISR0置为1。ISR0位为1,表明CPU正在准备(或正在)执行IR0的中断服务程序。,8259A的内部结构,97,8259A的内部结构,98,优先级分析器(PR)检

36、测从IRR、ISR和IMR来的输入,确定控制逻辑是否向CPU发出中断请求中断控制电路读写初始化命令字和操作命令字当判优电路选中一个中断源时,向CPU提中断请求通过INTA接收CPU送来的中断响应信号,中断响应信号是2个连续的负脉冲。,99,单片8259A的中断过程,100,单片8259A的中断过程有中断请求,一个或多个IRi引脚上出现高电平或上升沿请求;相应IRRi置为1,若IRi对应的IMRi(IMR)位为0,将IRRi有效位送PR裁决,并和ISRj进行比较;若IRRi优先级高,则向CPU发送中断请求;若CPU的IF=1,则进入中断应答周期;CPU发送INTA#1,禁止新的中断请求,即“冻结

37、”IRR寄存器,判优,置8259A最高优先级中断的ISRi为1,准备送出中断类型号;CPU发送INTA#2,8259A送出1字节中断类型号;CPU读取类型号,从中断向量表取中断服务程序入口地址,进入中断服务;中断结束操作:自动中断结束模式(AEOI),INTA#2结束时自动清ISRi;非AEOI模式,则需要在中断服务程序中发送EOI命令清ISRi。,单片8259A的中断过程,101,中断响应周期(对INTR)page297,INTA#1,CPU封锁总线(LOCK有效),8259A最高优先级请求对应的ISR位被置1,对应IRR位清0,准备中断类型号INTA#2,总线解锁,8259A将当前中断请求

38、对应的中断类型号送到数据总线上。,102,8259A多片级联,单片8259A可管理8级中断,两片8259A可级联可管理15级中断,级联缓冲/比较器用于完成多片8259A级联。,103,104,8259A的级联(1主1从)-SP/EN引脚(In):“1”为主8259A;“0”为从8259A;(非缓冲方式)-其中一个是主中断控制器,其余的是从中断控制器;从中断控制器的INT输出接到主中断控制器的一个IRi输入(图中为IR2)上。,-CAS2CAS0:级联信号。中断响应期间INTA#1,若主8259A判定所响应的是由从8259A来的中断请求,则它在级联线上发出该从8259A的识别号(图中为010),

39、并由从8259A接收。在INTA#2周期,则由从8259A给出中断类型号。,105,8259A(从片)中断控制器,8259A(主片)中断控制器,CAS012SP,CAS210SP,INTR,8086CPU,INT,INT,+,8259A(从片)中断控制器,IRQ17IRQ18IRQ19IRQ20IRQ21IRQ22IRQ23IRQ24,CAS012SP,INT,D7D0,D7D0,D7D0,8259A多片级联(1主2从),IRQ8IRQ9IRQ10IRQ11IRQ12IRQ13IRQ14IRQ16,IRQ0IRQ1IRQ2IRQ3IRQ4IRQ5IRQ6IRQ7,106,8259A(从片)中断

40、控制器,8259A(主片)中断控制器,CAS012SP,CAS210SP,INTR,8086CPU,+,8259A(从片)中断控制器,CAS012SP,D7D0,D7D0,D7D0,8259A多片级联(1主2从),IRQ17IRQ18IRQ19IRQ20IRQ21IRQ22IRQ23IRQ24,IRQ8IRQ9IRQ10IRQ11IRQ12IRQ13IRQ14IRQ16,IRQ0IRQ1IRQ2IRQ3IRQ4IRQ5IRQ6IRQ7,INT,INT,INT,107,8259A的级联(1主2从),8259A(从片)中断控制器,8259A(主片)中断控制器,IRQ8IRQ9IRQ10IRQ11I

41、RQ12IRQ13IRQ14IRQ16,IRQ0IRQ1IRQ2IRQ3IRQ4IRQ5IRQ6IRQ7,CAS012SP,CAS210SP,INTR,8086CPU,+,8259A(从片)中断控制器,IRQ17IRQ18IRQ19IRQ20IRQ21IRQ22IRQ23IRQ24,CAS012SP,在其它引脚没有全部都接从PIC时,IRQ0不要接从PIC,INT,INT,INT,108,8259A的内部结构,109,中断优先级固定优先循环优先,110,中断嵌套当前正在被执行的中断服务程序可被优先级更高的中断请求中断优先级相同或更低的中断请求不能中断当前正在被执行的中断服务程序,111,IS3

42、=1IF=0,IS1=1IF=0,IF=1,IS1=0,IS3=0,IS4=0,IF=1,IF=1,IF=1,(一般)全嵌套方式,只允许比现正处理的优先级更高的中断打断它的处理而被服务。,page302,112,中断结束(EOI)自动中断结束方式(AEOI)INTA#2结束时自动使当前优先级最高的ISRi清0,免除命令EOI。非指定中断结束方式(NSEOI)(非AEOI)001中断服务程序发送NSEOI命令,则使当前优先级最高正在被处理的ISR位清0。在全嵌套方式下,当前优先级最高且ISR位为1的肯定为正被CPU处理的中断,中断结束需要被清0。指定中断结束方式(SEOI)(非AEOI)011中

43、断服务程序发送SEOI命令,指定所需复位的ISRi的号;如IR1服务结束时,可以发送SEOI1命令指定ISR1清0。用于不能肯定当前被处理的中断是不是最高优先级的场合。,113,主IS2=1从IS7=1IF=0,中断结束时需要分别向主/从8259A发送EOI命令,(一般)全嵌套方式,无法响应IR12,114,允许同级和高优先级的请求可以打断正在进行的处理而实现嵌套;只设置在主8259A;中断结束操作需特殊处理。,特殊全嵌套方式SFNM,主IS2=1从IS7=1IF=0,从IS6=1IF=0,从IS6=0,从IS7=0主IS2=0,IF=1,IF=1,115,特殊屏蔽方式(SMM)使优先级低于当

44、前被处理的中断,也能产生中断。打乱全嵌套结构,即被处理的中断不一定是当前最高优先级中断。中断结束时,是采用非指定EOI指令?指定EOI?还是都可以?,116,自动EOI循环(AEOI循环)自动循环方式(AEOI循环)INTA#2,ISRi清零,同时优先级置为最低;非指定EOI循环(NSEOI循环)中断结束时,在中断服务程序中发送NSEOI命令,当前优先级最高的中断ISRi清零,同时设置其优先级为最低。指定EOI循环(SEOI循环)指定EOI循环,中断优先级循环控制方式,117,8259A是一种可编程的中断优先级控制芯片;每一片8259A可管理8级中断。,8259A外部特性与内部结构,118,1

45、19,8259A编程方法,初始化命令字(有4个初始化命令字ICW)芯片控制(是否级联、触发方式等)ICW1(A0=0)中断类型号ICW2(A0=1)级联方式ICW3(A0=1)特殊全嵌套、缓冲器方式ICW4(A0=1)操作命令字(有3个操作命令字OCW)中断屏蔽字OCW1(A0=1)中断结束方式OCW2(A0=0)中断查询OCW3(A0=0),120,对8259A的编程分两步:第一步:在系统加电和复位后,用初始化命令字(ICW)对8259A芯片进行初始化编程;第二步:在操作阶段,用操作命令字(OCW)对8259A进行操作过程编程。在写入ICW寄存器后,才可写OCW寄存器。,121,8259A初

46、始化流程,A0=0,A0=1,A0=1,A0=1,20H21H,122,初始化命令字1(ICW1),完成触发方式设置及级联方式设置的功能,123,初始化命令字2(ICW2),完成中断类型号设置的功能中断矢量寄存器(高5位由用户设定,低3位由系统自动填入)若写入00001000B,则对应的中断类型号为08H-0FH写入00001111B呢?,124,初始化命令字3(ICW3),只在级联方式下使用。完成主/从片间连接关系设置功能。对主片的设置对从片的设置,125,例如:一个主片和两个从片的级联如图,主片和两个从片的ICW3分别初始化。,126,初始化命令字4(ICW4),ICW4:完成结束中断方式

47、、缓冲模式和嵌套模式的设置功能,127,8259A初始化流程,A0=0,A0=1,A0=1,A0=1,只能从ICW1开始ICW1任何时候都能被寻址A0=0,D4=1,CS=0,WR=0,128,操作命令字1(OCW1),OCW1即为IMROCW1完成中断屏蔽IR0-IR7的设置功能OCW1可读可写,129,操作命令字2(OCW2),OCW2:完成非AEOI、优先级等控制,130,如果采用完全嵌套方式,可采用非指定EOI方式发出EOI后,中断控制器将ISR中优先级最高的ISRi清零。例如:ISR=00100100(假设IR0最高,IR7最低)执行moval,00100000h;(OCW2=20H

48、)out20h,al;(该指令中20H为8259A的端口地址)后,ISR=00100000,非指定EOI(NSEOI),131,指定EOI(SEOI),如果中断优先级被打乱,即当前正在被服务的中断服务程序的优先级不是最高的,则必须采用指定EOI方式。在中断服务程序中发出EOI时,须指定要被清零的ISRi。例:ISR=00100100,当前服务程序对应ISR5执行:moval,01100101h;(OCW2=65H)out20h,al;(该指令中20H为8259A的端口地址)后,ISR=00000100,132,操作命令字3(OCW3),OCW3:特殊屏蔽方式设置的功能;读IRR和ISR寄存器、状态字查询。,133,读IR或ISR寄存器,读IRRmoval,00001010bout20h,alnopinal,20h;IRRal读ISRmoval,00001011bout20h,alnopinal,20h;ISRal,134,查

温馨提示

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

评论

0/150

提交评论