
微机信息传递方式与中断ppt课件.ppt
70页第九章第九章 微机信息微机信息传传送方式中断系送方式中断系统统陆尧胜陆尧胜 谢军谢军 主主讲讲暨暨南大学信息科学技南大学信息科学技术术学院学院电电子工程系子工程系微机系微机系统统与接口与接口【教学目的】【教学目的】 了解三种不同的微机信息传送方了解三种不同的微机信息传送方式,掌握其软件和硬件设计方法式,掌握其软件和硬件设计方法教学重点】微机信息传送方式及其特点教学重点】微机信息传送方式及其特点教学难点】中断技术教学难点】中断技术8.1 输入输出的控制方式输入输出的控制方式 n主机与外设之间数据传送的控制方式有以下主机与外设之间数据传送的控制方式有以下四种:四种:n无条件传送无条件传送n查询式传送查询式传送n中断方式传送中断方式传送n直接存储器存取直接存储器存取(DMA, Direct Memory Access)8.1.1 无条件传送方式无条件传送方式n适用于总是处于预备好形状的外设适用于总是处于预备好形状的外设n以下外设可采用无条件传送方式:以下外设可采用无条件传送方式:n开关开关n发光器件发光器件(如发光二极管、如发光二极管、7段数码管、灯段数码管、灯泡等泡等)n继电器继电器n步进电机步进电机n优点:软件及接口硬件简单优点:软件及接口硬件简单n缺陷:只适用于简单外设,顺应范围较窄缺陷:只适用于简单外设,顺应范围较窄8.1.2 查询方式传送查询方式传送n适用于外适用于外设并不并不总是是预备好,而且好,而且对传送速送速率、率、传送效率要求不高的送效率要求不高的场所。
所nCPU在与外在与外设交交换数据前必需数据前必需讯问外外设形状形状——“他他预备好没有?〞好没有?〞n对外外设的要求:的要求:应提供提供设备形状信息形状信息n对接口的要求:需求提供形状端口接口的要求:需求提供形状端口n优点:点:软件比件比较简单n缺陷:缺陷:CPU效率低,数据效率低,数据传送的送的实时性差,性差,n 速度速度较慢慢查询方式的流程图查询方式的流程图超时超时?READY?READY?与外设进与外设进行数据交换行数据交换超时错超时错读入并测试外设形状读入并测试外设形状YNYN传送完传送完??防止死循环防止死循环复位计时器复位计时器NY输入演示输入演示输出演示出演示D5D7-D0A9|A3≥1&A15|A10≥1IOWD7-D03F8H外外设设D7D6D5D4D3D2D1D0BUSYCPQ7Q6Q5Q4Q3Q2Q1Q0形状端口形状端口GG2AG2BCBAA2A1A074LSY0≥1IORY3OE74LS374CPDSSTROBE3FBH例:电路图如上,用查询方式进展输出例:电路图如上,用查询方式进展输出Ø外设形状端口地址为外设形状端口地址为3FBH,第,第5位位(bit5)为形状标为形状标志〔志〔=1忙,忙,=0预备好〕预备好〕Ø外设数据端口地址为外设数据端口地址为3F8H,写入数据会使形状标志,写入数据会使形状标志置置1 ;外设把数据读走后又把它置;外设把数据读走后又把它置0。
8.1.3 中断方式传送中断方式传送nCPU无需循环查询外设形状,而是外部设备无需循环查询外设形状,而是外部设备在需求进展数据传送时才中断在需求进展数据传送时才中断CPU正在进展正在进展的任务,让的任务,让CPU来为其效力即来为其效力即CPU在没有在没有外设恳求时可以去做更重要的事情,有恳求外设恳求时可以去做更重要的事情,有恳求时才去传输数据,从而大大提高了时才去传输数据,从而大大提高了CPU的利的利用率n优点:优点:CPU效率高,实时性好,速度快效率高,实时性好,速度快n缺陷:程序编制较为复杂缺陷:程序编制较为复杂8.1.4 DMA传输传输 n前面三种前面三种I/O方式都需求方式都需求CPU作作为中介:中介:n 外外设 CPU 内存内存n 两个含两个含义::n1〕〕软件:外件:外设与内存之与内存之间的数据的数据传送是送是经过CPU执行程序来完成的;行程序来完成的;n2〕硬件:〕硬件:I/O接口和存接口和存储器的器的读写控制写控制信号、地址信号都是由信号、地址信号都是由CPU发出的〔出的〔总线由由CPU控制〕n 缺陷:程序的缺陷:程序的执行速度限定了行速度限定了传送的最大速送的最大速度〔度〔约为几十几十KB/秒〕秒〕—处理:理:DMA传输 nDMA传输传输:n 外设外设 内存内存n外设直接与存储器进展数据交换外设直接与存储器进展数据交换 ,,CPU不再不再担当数据传输的中介者;担当数据传输的中介者;n总线由总线由DMA控制器〔控制器〔DMAC〕进展控制〔〕进展控制〔CPU要放弃总线控制权〕,内存要放弃总线控制权〕,内存/外设的地外设的地址和读写控制信号均由址和读写控制信号均由DMAC提供。
提供n优点:数据传输由优点:数据传输由DMA硬件来控制,数据直硬件来控制,数据直接在内存和外设之间交换,可以到达很高的接在内存和外设之间交换,可以到达很高的传输速率〔可达几传输速率〔可达几MB/秒〕秒〕8.2 中断技术中断技术n8.2.1 中断的根本概念中断的根本概念n什么是中断什么是中断?n与生活场景的比较与生活场景的比较正在看书正在看书铃响铃响接接继续看书继续看书执行程序执行程序事件发生事件发生事件处置事件处置继续执行程序继续执行程序中断处置中断处置中断恳求及呼应中断恳求及呼应实践场景实践场景计算机计算机中断前往中断前往中断的定义中断的定义 nCPU执行程序时,由于发生了某种随机执行程序时,由于发生了某种随机的事件的事件(外部或内部外部或内部),引起,引起CPU暂时中暂时中断正在运转的程序,转去执行一段特殊断正在运转的程序,转去执行一段特殊的效力程序的效力程序(称为中断效力程序或中断处称为中断效力程序或中断处置程序置程序),以处置该事件,该事件处置完,以处置该事件,该事件处置完后又前往被中断的程序继续执行,这一后又前往被中断的程序继续执行,这一过程称为中断过程称为中断中断源中断源n引起引起CPU中断的事件中断的事件——中断源。
例如:中断源例如:n外外设——恳求求输入入输出数据,出数据,报告缺点等告缺点等n事件事件——掉掉电、硬件缺点、、硬件缺点、软件件错误、非法、非法操作、定操作、定时时间到等到等n中断源分中断源分为:外部中断、内部中断:外部中断、内部中断n内部中断:内部中断:CPU内部内部执行程序行程序时本身本身产生的生的中断中断n外部中断:外部中断:CPU以外的以外的设备、部件、部件产生的中生的中断断n 8086/8088的外部中断信号:的外部中断信号:INTR、、NMInINTR——可屏蔽中断可屏蔽中断恳求,高求,高电平有效,受平有效,受IF标志的控制志的控制IF=1时,,执行完当前指令后行完当前指令后CPU对它作出呼它作出呼应 nNMI——非屏蔽中断非屏蔽中断恳求,上升沿有效,任求,上升沿有效,任何何时候候CPU都要呼都要呼应此中断此中断恳求信号为何计算机中要引入中断?为何计算机中要引入中断?n提高数据传输率;提高数据传输率;n防止了防止了CPU不断检测外设形状的过程,提不断检测外设形状的过程,提高了高了CPU的利用率的利用率n实现对特殊事件的实时呼应实现对特殊事件的实时呼应8.2.2中断过程中断过程n五个步骤:五个步骤:n中断恳求中断恳求n中断判优中断判优(有时还要进展中断源识别有时还要进展中断源识别)n中断呼应中断呼应n中断效力中断效力n中断前往中断前往n以下以外部中断为主引见这五个步骤。
以下以外部中断为主引见这五个步骤1〕中断恳求〕中断恳求n外外设接口〔中断源〕接口〔中断源〕发出中断出中断恳求信号,送到求信号,送到CPU的的INTR或或NMI引脚;引脚;n中断中断恳求信号:求信号:边沿沿恳求,求,电平平恳求求n例如,例如,NMI为边沿沿恳求,求,INTR为电平平恳求求n中断中断恳求信号求信号应坚持到中断被持到中断被处置置为止;止;nCPU呼呼应中断后,中断中断后,中断恳求信号求信号应及及时撤撤销n在在8086/8088系系统中,外中,外设的中断要的中断要经过8259A可可编程中断控制器程中断控制器(PIC)的排的排队判判优后向后向CPU发出:出:n (I/O接口接口) → PIC → CPU2.1〕中断源识别〕中断源识别n计算机中的中断源有很多,计算机中的中断源有很多,CPU必需识别是必需识别是哪一个设备产生中断识别中断源有两个方哪一个设备产生中断识别中断源有两个方法:法:n软件查询将中断信号从数据总线读入,用软件查询将中断信号从数据总线读入,用程序进展判别程序进展判别n中断矢量法由中断源提供中断类型号,中断矢量法由中断源提供中断类型号,CPU根据类型确定中断源。
〔根据类型确定中断源〔8086/8088即采用此种方法〕即采用此种方法〕2.2〕中断判优〕中断判优n多个中断源多个中断源产生中断,生中断,CPU首先首先为谁效力?效力?n——中断中断优先先级排排队问题n中断中断优先先级控制要控制要处置两种情况:置两种情况:n对同同时产生的中断:生的中断:应首先首先处置置优先先级别较高的中断;假高的中断;假设优先先级别一一样,那么按先来先效力的原那么,那么按先来先效力的原那么处置;置;n对非同非同时产生的中断:低生的中断:低优先先级别的中断的中断处置程序允置程序允许被高被高优先先级别的中断源所中断的中断源所中断——即允即允许中断嵌套中断嵌套n中断中断优先先级的控制方法的控制方法n硬件判硬件判优——链式判式判优、并行判、并行判优〔中断向量法〕〔中断向量法〕n软件判件判优——顺序序查询中断中断恳求,先求,先查询的先效力〔即先的先效力〔即先查询的的优先先级别高〕高〕n通常将中断判通常将中断判优与中断源与中断源识别合并在一同合并在一同进展展处置nx86系系统中,中,这项义务由由PIC和和CPU共同完成共同完成INTAinCPUINTAINTR外设外设1 1外设外设2 2外设接口外设接口1 1菊花链菊花链逻辑电路逻辑电路外设接口外设接口2 2外设外设3 3外设接口外设接口3 3n≥1菊花链菊花链逻辑电路逻辑电路菊花链菊花链逻辑电路逻辑电路┇IREQIREQIREQ中断确认中断确认链式判优电路原理图链式判优电路原理图INTAinINTAin中断确认中断确认中断确认中断确认菊花链逻辑电路菊花链逻辑电路INTAinIREQINTR&=1 ≥1INTAoutDB三态门中断向量码E外设接口外设接口中断确认中断确认菊花链菊花链逻辑电路逻辑电路3〕中断呼应〕中断呼应n在每条指令的最后一个时钟周期,在每条指令的最后一个时钟周期,CPU检测检测INTR或或NMI信号。
假设以下条件成立,那信号假设以下条件成立,那么么CPU呼应中断:呼应中断:n当前指令执行完对当前指令执行完对INTR,还应满足以下条,还应满足以下条件件n当前指令是当前指令是STI和和IRET,那么下条指令也要,那么下条指令也要执行完n当前指令带有当前指令带有LOCK、、REP等指令前缀时,等指令前缀时,那么把它们看成一个整体,要求完好地执行那么把它们看成一个整体,要求完好地执行完;完;n对对INTR,,CPU应处于开中断形状,即应处于开中断形状,即IF=1;;n当前没有复位当前没有复位(RESET)和坚持和坚持(HOLD)信号n假设假设NMI和和 INTR 同时发生,那么首先呼应同时发生,那么首先呼应NMI3〕中断呼应〔续〕〕中断呼应〔续〕nCPU中断呼中断呼应时应时,要做下述三,要做下述三项项任任务务::n向中断源向中断源发发出出INTA中断呼中断呼应应信号;信号;n断点断点维护维护,包括,包括CS、、IP和和PSW〔 〔FLAGS〕 〕这这主要是保主要是保证证中断中断终终了后能前往被中断的程了后能前往被中断的程序n获获得中断效力程序首地址得中断效力程序首地址〔 〔入口入口〕 〕。
n如何得到中断如何得到中断处处置程序的首地址?置程序的首地址?n固定入口法固定入口法n中断向量法中断向量法——常用常用4〕中断处置〔中断效力〕〕中断处置〔中断效力〕n中断效力子程序特点中断效力子程序特点n为〞〞远〞〞过程〔程〔类型型为FAR〕〕n要用要用IRET指令前往指令前往n中断效力子程序要做的任中断效力子程序要做的任务n维护现场(PUSH reg’s) n开中断开中断(STI) n进展中断展中断处置置 n恢复恢复现场(POP reg’s) n中断前往中断前往(IRET) 5〕中断前往〕中断前往n执行中断前往指令执行中断前往指令IRETnIRET指令将使指令将使CPU把堆栈内保管的断点信息把堆栈内保管的断点信息弹出到弹出到IP、、CS和和FLAG中,保证被中断的程中,保证被中断的程序从断点处可以继续往下执行序从断点处可以继续往下执行IPLIPHCSLCSHFLAGLFLAGHSPIPLIPHCSLCSHFLAGLFLAGHSPIPCSFLAG进入中断效力程序时中断前往后8.2.3 8088的中断系统的中断系统 n与中断有关的控制线为:与中断有关的控制线为:NMI、、INTR、、INTA#n8088系统的中断源系统的中断源n内部中断内部中断n除法溢出:类型号除法溢出:类型号0,商大于目的操作数所能表达,商大于目的操作数所能表达的范围时产生。
的范围时产生n单步中断:类型号单步中断:类型号1,,TF=1时产生〔当前指令需执时产生〔当前指令需执行完〕行完〕n断点中断:类型号断点中断:类型号3,这是一个软件中断,即,这是一个软件中断,即INT 3指令n溢出中断:类型号溢出中断:类型号4,这是一个软件中断,即,这是一个软件中断,即INTO指令n软件中断:即软件中断:即INT n指令,类型号指令,类型号n(0-255)n外部中断外部中断n非屏蔽中断非屏蔽中断NMI:类型号:类型号2,不可用软件屏蔽,,不可用软件屏蔽,CPU必需呼应它必需呼应它n可屏蔽中断可屏蔽中断INTR:类型号由:类型号由PIC提供IF=1时时CPU才干呼应才干呼应NMIINTRn中断逻中断逻辑辑软件中断指令软件中断指令溢出中断溢出中断除法错除法错单步中断单步中断非屏蔽中断恳求非屏蔽中断恳求n中断中断控控n制器制器n8259AnPIC8086/8088CPU8086/8088CPU内部逻辑内部逻辑断点中断断点中断8086/8088中断源类型中断源类型可可屏屏蔽蔽中中断断请请求求n43012中断源的识别中断源的识别n8088系统采用中断类型码来识别不同的中断系统采用中断类型码来识别不同的中断源,每个中断源都有一个与它相对应的中断源,每个中断源都有一个与它相对应的中断类型码类型码 。
n溢出、断点、除法溢出、单步、非屏蔽中断溢出、断点、除法溢出、单步、非屏蔽中断的类型码为固定值的类型码为固定值n软件中断的类型码由指令给出软件中断的类型码由指令给出n可屏蔽中断的类型码由可屏蔽中断的类型码由PIC给出给出nCPU呼应呼应INTR中断时,会产生两个中断呼中断时,会产生两个中断呼应总线周期,要求应总线周期,要求PIC在第在第2个中断呼应总线个中断呼应总线周期把中断类型码放到数据总线上,供周期把中断类型码放到数据总线上,供CPU读入中断向量表〔中断向量表〔IVT〕〕 n存放各存放各类中断的中断效力程序的入口地址〔中断的中断效力程序的入口地址〔段和偏移〕段和偏移〕——中断向量中断向量 n表的地址位于内存的表的地址位于内存的00000H~~003FFH,,大小大小为1KB,共,共256个中断向量个中断向量n每个中断向量占用每个中断向量占用4 Bytes,低字,低字为段内偏段内偏移,高字移,高字为段基址段基址n根据中断根据中断类型号型号获得中断效力程序入口的方得中断效力程序入口的方法法: (n为中断中断类型号型号)n中断向量在中断向量在IVT中的存放地址=中的存放地址=4×n中断向量表的初始化中断向量表的初始化n初始化初始化——将中断效力程序的入口地址放入将中断效力程序的入口地址放入向量表向量表n 例:中断例:中断类型型码为48H的中断的中断处置子程序置子程序的名字的名字为int48h,,编写程序段将写程序段将该中断中断处置置子程序的入口地址放入向量表。
子程序的入口地址放入向量表中断向量表的初始化中断向量表的初始化 CLI; 关中断关中断 MOV AX,,0 MOV DS,,AX MOV SI,,48H*4; 表的地址指针表的地址指针DS:SI MOV AX,,OFFSET int48h MOV [SI],,AX; 送中断入口之偏移地址送中断入口之偏移地址 MOV AX,,SEG int48h MOV [SI+2],,AX; 送中断入口之段基址送中断入口之段基址 STI; 开中断开中断8086/8088 CPU的中断呼应过程的中断呼应过程 n内部中断呼内部中断呼应过程程 n无无INTA#周期周期n中断中断类型型码固定或由指令固定或由指令给出出n呼呼应过程主要步程主要步骤(CPU 自自动完成完成)::n①① PUSH FLAGn ②② IF=0n③③ PUSH CSn ④④ PUSH IPn⑤⑤ 取中断向量送入取中断向量送入IP和和CS中断呼应过程〔续〕中断呼应过程〔续〕n外部中断呼外部中断呼应过程程n非屏蔽中断,与内部中断呼非屏蔽中断,与内部中断呼应过程程类似似 n可屏蔽中断可屏蔽中断n ①① INTA#〔〔1〕,〕,PIC进展展优先先级排排队判判优处置置n ②② INTA#〔〔2〕,〕,PIC把中断把中断类型型码n放到放到DB上,上,CPU读入入n ③③ PUSH FLAGn ④④ IF=0n ⑤⑤ PUSH CSn ⑥⑥ PUSH IPn ⑦⑦ 取中断向量送入取中断向量送入IP和和CS与内部中断一样与内部中断一样(CPU 自动完自动完成成)8088系统中各中断的优先级系统中各中断的优先级n优先级从高到低顺序如下:优先级从高到低顺序如下:n内部中断内部中断nNMInINTRn单步中断单步中断NYNYNNNNNYY执行指令执行完否?取指令IF=1?内部中断?NMI?INTR?TF=1?类型码=0~255类型码=2类型码=1中断呼应,读回类型码FLAG入栈TEMP←TFTF=TF=0CS、IP入栈计算向量表地址高字→CS低字→IP执行中断效力程序NMI?TEMP=1?转入中断效力程序恢复CS和IP恢复FLAGS前往被中断的程序YYYYNIRET指令的操作8086/8088的的中断处置流程中断处置流程NMI、、INTR、、单步和除法错单步和除法错中断同时产生中断同时产生时的中断处置时的中断处置过程过程DIVTF=1IF=1INTRNMIPUSH FLAGS、CS、IPCLEAR IF & TF,中断入口→CS:IP除法错除法错NMI(IF、、TF = 0)PUSH FLAGS、CS、IPCLEAR IF & TF,中断入口→CS:IPNMI中断处置程序除法错中断处置程序(IF、、TF = 0) 前往前往执行下条指令识别出INTR(IF、、TF = 1) 前往前往INTR依然有效依然有效继续单步执行程序继续单步执行程序INTR中断处置程序INTRPUSH FLAGS、CS、IPCLEAR IF & TF,中断入口→CS:IP单步单步 (IF、、TF = 0)PUSH FLAGS、CS、IPCLEAR IF & TF,中断入口→CS:IP单步中断处置程序(IF、、TF = 0) 前往前往(IF、、TF = 1) 前往前往8.3 可编程中断控制器可编程中断控制器8259AnPIC,,Programmable Interrupt Controllern可对可对8个中断源实现优先级控制个中断源实现优先级控制 n可扩展至对可扩展至对64个中断源实现优先级控制个中断源实现优先级控制 n可编程设置不同任务方式可编程设置不同任务方式n根据中断源向根据中断源向x86提供不同中断类型码提供不同中断类型码n引脚分配及功能引脚分配及功能8.3.1 8.3.1 可编程中断管理芯片可编程中断管理芯片8259A8259A一、一、8259A8259A的内部构造的内部构造n 8259A的内部构造的内部构造n中断恳求存放器中断恳求存放器IRRn保管从保管从IR0~~IR7来的中断恳求信号,某位来的中断恳求信号,某位=1表示表示对应的对应的IRi有中断恳求有中断恳求 n中断效力存放器中断效力存放器ISR n保管一切正在效力的中断源,某位保管一切正在效力的中断源,某位=1表示对应的表示对应的IRi中断正在被效力中断正在被效力 n中断屏蔽存放器中断屏蔽存放器IMR (区别于区别于CPU的标志存放器的的标志存放器的IF)n存放中断屏蔽字,某位存放中断屏蔽字,某位=1表示对应的表示对应的IRi输入被屏输入被屏蔽蔽 n中断优先权判别电路中断优先权判别电路 n确定能否向确定能否向CPU发出中断恳求,中断呼应时确定发出中断恳求,中断呼应时确定ISR的哪位应置位及把相应中断的类型码放到数据的哪位应置位及把相应中断的类型码放到数据总线上总线上 nIRR—Interrupt Request RegisternPR---Priority ResolvernISR---Interrupt Service RegisternIMR---Interrupt Mask RegisternICWs---Initialization Command WordsnOCWs---Operation Command Wordsn7个个CPU可可访问访问的存放器,分两的存放器,分两组组::n初始化命令字初始化命令字ICW1 ~ICW4---系系统统初启初启时设时设定。
定n操作命令字操作命令字OCW1~OCW3—系系统统运运转时转时,由运,由运用程序用程序设设定定(实现对实现对中断中断处处置的置的动态动态管理和控制管理和控制).n The OCWs can be written into the 8259A anytime after initialization.(手册手册P6--〕 〕8259A的内部构造的内部构造8.3.2 8259A的任务过程的任务过程n8259A对中断恳求的处置过程如下:对中断恳求的处置过程如下:n当某当某IRi有效时,有效时,IRR相应位置相应位置1n假设有效的假设有效的IRi未被屏蔽,那么向未被屏蔽,那么向CPU发出中断恳发出中断恳求求n检测到第检测到第1个个INTA#信号后,置信号后,置ISRi=1,,IRRi=0 n(8259A-INTA接接CPU-INTA, INT接接CPU- INTR)n检测到第检测到第2个个INTA#信号后,把信号后,把ISRi=1中最高优中最高优先级的中断类型码放到先级的中断类型码放到DB上上n假设任务在假设任务在AEOI方式,在第方式,在第2个个INTA#终了时,终了时,使使ISRi复位;否那么由复位;否那么由CPU发出发出EOI命令使命令使ISRi复复位位8.3.3 8259A的任务方式的任务方式n8259A的任务方式有如下几类:的任务方式有如下几类:n中断优先方式与中断嵌套中断优先方式与中断嵌套n中断终了处置方式中断终了处置方式 n屏蔽中断源的方式屏蔽中断源的方式n中断触发方式中断触发方式n级联任务方式级联任务方式中断优先方式与中断嵌套中断优先方式与中断嵌套n中断优先方式中断优先方式 n两类优先级控制方式:固定优先级和循环两类优先级控制方式:固定优先级和循环优先级优先级n固定优先级方式固定优先级方式n一切中断恳求一切中断恳求IRi的中断优先级固定不变的中断优先级固定不变n优先级陈列顺序可编程改动优先级陈列顺序可编程改动n加电后加电后8259A的默许方式,默许优先级顺的默许方式,默许优先级顺序从高到低为序从高到低为IR0~~IR7IR7 IR6 IR5 IR4 IR3 IR2 IR1 IR07654321032107654最低级最高级最高级最低级优先级优先级IR7 IR6 IR5 IR4 IR3 IR2 IR1 IR0默许优先级默许优先级优先级可编程改动优先级可编程改动中断优先方式与中断嵌套〔续〕中断优先方式与中断嵌套〔续〕n循环优先级方式循环优先级方式 n中断源轮番处于最高优先级,即自动中断优先级中断源轮番处于最高优先级,即自动中断优先级循环循环n初始优先级顺序可用编程改动初始优先级顺序可用编程改动n某中断恳求某中断恳求IRi被处置后,其优先级别自动降为被处置后,其优先级别自动降为最低,原来比它低一级的中断上升为最高级最低,原来比它低一级的中断上升为最高级 IR7 IR6 IR5 IR4 IR3 IR2 IR1 IR07654321021076543最低级最高级最高级最低级ISR内容内容IR7 IR6 IR5 IR4 IR3 IR2 IR1 IR0IR4的效力终了以前的效力终了以前0101000001000000IR4的效力终了以后的效力终了以后ISRi中断优先方式与中断嵌套〔续〕中断优先方式与中断嵌套〔续〕n中断嵌套方式中断嵌套方式n在中断处置过程中允许被更高优先级的事件在中断处置过程中允许被更高优先级的事件所中断称为中断嵌套。
所中断称为中断嵌套8259A有两种中断嵌有两种中断嵌套方式:套方式:n普通全嵌套方式〔默许方式〕普通全嵌套方式〔默许方式〕 n一中断正被处置时,只需更高优先级的事一中断正被处置时,只需更高优先级的事件可以打断当前的中断处置过程而被效力件可以打断当前的中断处置过程而被效力n特殊全嵌套方式特殊全嵌套方式 n一中断正被处置时,允许同级或更高优先一中断正被处置时,允许同级或更高优先级的事件可以打断当前的中断处置过程而被级的事件可以打断当前的中断处置过程而被效力n注注: 特殊全嵌套仅用于多个特殊全嵌套仅用于多个8259A级连时的级连时的主主8259A,而不能用于从属,而不能用于从属8259A或单或单8259A系统中断终了处置方式中断终了处置方式n当某一当某一IRi中断被效力中断被效力时,,ISR中的相中的相应位位ISRi=1当效力终了后,那么必需清零了后,那么必需清零该ISRi位使ISRi=0是是经过向向8259A发出出中断中断终了命令〔了命令〔EOI命令〕命令〕实现的n三种三种EOI命令命令n自自动EOI〔〔AEOI〕〕——〔自〔自动EOI方式〕方式〕n非指定非指定EOI〔〔NSEOI〕〕——〔正常〔正常EOI方方式〕式〕n指定指定EOI〔〔SEOI〕〕——〔特殊〔特殊EOI方式〕方式〕 nAEOI:在第2个INTA#终了时,由8259A使ISRi自动复位;n因不保管当前正在效力的中断的形状,故AEOI不能用于中断嵌套方式nSEOI:由CPU发出一条SEOI命令,该EOI命令中指出了所要复位的ISR的位号。
n用于特殊屏蔽方式nNSEOI:由CPU发出正常EOI命令,该EOI命令使ISRi=1的位中优先级最高的那一位复位n用于普通全嵌套方式屏蔽中断源的方式屏蔽中断源的方式nIMR屏蔽字决议了允许或制止某位屏蔽字决议了允许或制止某位IRi所对应所对应的中断:的中断:IMi=1 制止,制止, IMi=0 允许n特殊屏蔽方式:特殊屏蔽方式:n提供了允许较低优先级的中断可以得到呼应提供了允许较低优先级的中断可以得到呼应的特殊手段的特殊手段n原理:假定当前正在处置原理:假定当前正在处置IR6,先进入特殊屏,先进入特殊屏蔽方式,然后设置蔽方式,然后设置IM6=1这时,除这时,除IR6外的外的一切中断恳求均能得到呼应一切中断恳求均能得到呼应n特殊屏蔽方式中只能用特殊屏蔽方式中只能用SEOI命令终了中断命令终了中断n特殊屏蔽例:特殊屏蔽例:n ;;IR4中断中断处置程序置程序nCLInMOV AL,,68H ;;OCW3::0 1 1 0 1 0 0 0nOUT 0C0H,,AL ;;设置特殊屏蔽方式置特殊屏蔽方式nIN AL,,0C2H nOR AL,,10H ;屏蔽;屏蔽IR4nOUT 0C2H,,AL nSTIn。
;;IR7恳求,呼求,呼应,前往,前往nnCLI ;;为设命令字命令字nIN AL,,0C2H ;;读出屏蔽字出屏蔽字nAND AL,,0EFH ;去除;去除IMR4nOUT 0C2H,,ALnMOV AL,,48H ;;OCW3::0 1 0 0 1 0 0 0nOUT 0C0H,,AL ;取消特殊屏蔽;取消特殊屏蔽nSTIn ;;继续IR4中断效力中断效力nMOV AL,,20H ;;OCW2::0 0 1 0 0 0 0 0 (EOI)nOUT 0C0,,ALnIRET 中断触发方式中断触发方式n边沿触发边沿触发nIRi出现上升沿表示有中断恳求出现上升沿表示有中断恳求 n电平触发电平触发nIRi出现高电平表示有中断恳求出现高电平表示有中断恳求n在第在第1个个INTA#终了前,终了前,IRi必需坚持高电平必需坚持高电平 8.3.4 8259A的编程与运用的编程与运用n8259A的控制命令分为的控制命令分为n初始化命令字初始化命令字ICWnICW1~~ICW4n向向8259A写入写入ICW的过程称为初始化编程的过程称为初始化编程n操作命令字操作命令字OCW nOCW1~~OCW3n向向8259A写入写入OCW的过程称为操作方式编的过程称为操作方式编程程8259A内部存放器的寻址方法内部存放器的寻址方法CS#RD# WR#A0D4D3读写操作写操作010000写OCW2写OCW3写ICW1写ICW2,ICW3,ICW4,OCW1(顺序写入)00101x1xx00101xx读出IRR、ISR读出IMRn需求需求CS#、、A0、、RD#、、WR#和和D4、、D3的的配合配合n内部存放器的访问方法如下表:内部存放器的访问方法如下表: 8259A的初始化顺序的初始化顺序 n8259的初始化流的初始化流程如图程如图n留意次序不可颠倒留意次序不可颠倒 写写ICW1写写ICW2级连?级连?写写ICW3需需ICW4?写写ICW4NNYY8259A的控制命令字的控制命令字n初始化初始化8259A必需从必需从ICW1开场开场n写写ICW1意味着重新初始化意味着重新初始化8259An写入写入ICW1后,后,8259A的形状如下:的形状如下:n去除去除ISR和和IMR(全全0);;n将中断优先级设成初始形状:将中断优先级设成初始形状:IR0最高,最高,IR7最低;最低;n设定为普通屏蔽方式;设定为普通屏蔽方式;n采用非自动中断终了方式;采用非自动中断终了方式;n形状读出逻辑预置为读形状读出逻辑预置为读IRR。
ICW1——初始化字初始化字nLTIM: 触发方式触发方式n=1 高电平触发高电平触发n=0 上升沿触发上升沿触发nSNGL: 级连控制级连控制n=1 单片单片n=0 级连级连nIC4: ICW4控制控制n=1 要写要写ICW4n=0 不写不写ICW4〔默许〔默许ICW4为全为全0〕〕A0 D7D6 D5 D4 D3 D2 D1 D0 0 x x x 1 LTIM x SNGL IC4ICW2——中断向量中断向量码码nT7~~T3: 中断向量中断向量码码的高的高5位位nT2~~T0: 最低最低3位位为为中断源的序号中断源的序号IRnn000~~111分分别对应别对应IR0~~IR7n由由8259A根据中断源的序号自根据中断源的序号自动动填入填入 (依次依次为为0 – 7)n例如:例如:n假假设设ICW2命令字命令字为为48H,那么,那么IR0的中断的中断向量向量码为码为48H,,IR7的中断向量的中断向量码为码为4FH,等,等等 A0 D7D6 D5 D4 D3 D2 D1 D0 1 T7 T6 T5 T4 T3 x x xICW3——级连级连控制字控制字 n主片的级联控制字主片的级联控制字 nSi=1 对应对应IRi线上衔接了从片线上衔接了从片 A0 D7D6 D5 D4 D3 D2 D1 D0 1 S7 S6 S5 S4 S3 S2 S1 S0n从片的级联控制字从片的级联控制字 nID2~~ID0 标识码,阐明本从片衔接到主片标识码,阐明本从片衔接到主片的哪个的哪个IR引脚上。
引脚上 000~~111分别对应分别对应IR0~~IR7 A0 D7D6 D5 D4 D3 D2 D1 D0 1 0 0 0 0 0 ID2 ID1 ID0ICW4——中断中断终终了方式字了方式字 nSFNM: 特殊全嵌套特殊全嵌套n1 特殊全嵌套方式特殊全嵌套方式n0 普通全嵌套方式普通全嵌套方式nAEOI: 自动自动EOIn1 自动自动EOI方式方式n0 非自动非自动EOI方式方式A0 D7D6 D5 D4 D3 D2 D1 D0 1 0 0 0 SFNM BUF M/S AEOI 1nBUF: 缓冲方式缓冲方式n M/S: 主主/从缓冲选从缓冲选择择nBUF M/Sn 1 1 缓冲方式缓冲方式/主主PICn 1 0 缓冲方式缓冲方式/从从PICn 0 x 非缓冲方非缓冲方式式/正常正常8259A的操作命令字的操作命令字OCW nOCW用于设置用于设置8259的任务形状的任务形状n在初始化后写入在初始化后写入nOCW的写入顺序可恣意的写入顺序可恣意n写入地址要求:写入地址要求:nOCW1必需写入奇地址端口必需写入奇地址端口(A0=1)nOCW2,,OCW3必需写入偶地址端口必需写入偶地址端口(A0=0) OCW1——中断屏蔽字中断屏蔽字 nMi=1 中断恳求线中断恳求线IRi被屏蔽被屏蔽(不允许中断不允许中断) n =0 允许该允许该IRi中断中断 nOCW1将写入将写入IMR存放器。
存放器nA0=1时读时读OCW1可读出设置的可读出设置的IMR内容 A0 D7D6 D5 D4 D3 D2 D1 D0 1 M7 M6 M5 M4 M3 M2 M1 M0OCW2——中断中断终终了和了和优优先先级级循循环环 nL2~~L0: 优先级编码优先级编码nR: 优先级自动循环优先级自动循环nSL: 指定优先级指定优先级nEOI: 终了中断命令终了中断命令n R SL EOIn 0 0 1 非指定非指定EOI 命令命令(NSEOI),全嵌套方式,全嵌套方式n 0 1 1 指定指定EOI 命令命令(SEOI),全嵌套方式,按,全嵌套方式,按L2-L0编码复位编码复位ISR n 1 0 1 NSEOI 命令,优先级自动循环命令,优先级自动循环n 1 0 0 自动自动EOI,设置优先级自动循环,设置优先级自动循环n 0 0 0 自动自动EOI,取消优先级自动循环,取消优先级自动循环(固定优先级固定优先级)n 1 1 1 SEOI 命令,按命令,按L2-L0编码循环优先级编码循环优先级(L2-L0设为最低优先级设为最低优先级)n 1 1 0 按按L2-L0编码循环优先级编码循环优先级(L2-L0设为最低优设为最低优先级先级) A0 D7D6 D5 D4 D3 D2 D1 D0 0 R SL EOI 0 0 L2 L1 L0OCW3——屏蔽方式和屏蔽方式和读读出控制字出控制字 nESMM: 允许使能特殊屏蔽方式允许使能特殊屏蔽方式nSMM: 特殊屏蔽方式特殊屏蔽方式nESMM SMMn1 1 特殊屏蔽方式置特殊屏蔽方式置位位n1 0 特殊屏蔽方式复特殊屏蔽方式复位位n0 x 非特殊屏蔽方式非特殊屏蔽方式nP(Polling): =1 查询方式查询方式n =0 非查询方式非查询方式A0 D7D6 D5 D4 D3 D2 D1 D0 0 0 ESMM SMM 0 1 P RR RISnRR: 读存放器读存放器nRIS: ISR/IRR选择选择nRR RISn1 1 读读ISRn1 0 读读IRRn0 x 无效无效OCW3〔续〕〔续〕n查询方式允许查询方式允许8259A不任务于中断方式,而不任务于中断方式,而是以查询方式任务。
是以查询方式任务nCPU先写一个先写一个D2=1的的OCW3,再对同一地,再对同一地址读入,即可得到如下形状字节:址读入,即可得到如下形状字节:n I x x x x R2 R1 R0 n I=1表示有中断恳求,中断恳求号为表示有中断恳求,中断恳求号为R2-R0n 此查询步骤可反复执行,以呼应多个同时此查询步骤可反复执行,以呼应多个同时发生发生 的中断 n读读IRR/ISR:写入此命令后,随后再对同一:写入此命令后,随后再对同一地址读,即可得到地址读,即可得到IRR或或ISR的内容8259A编程举例编程举例n按以下要求初始化按以下要求初始化8259A::n接口地址为接口地址为20H和和21H;;n中断为上升沿触发;单片中断为上升沿触发;单片8259A;不写;不写ICW4;;n与与IR0-IR3对应的中断向量码为对应的中断向量码为08H-0BH;;nIR4-IR7不运用n根据要求,各初始化参数及任务参数如下:根据要求,各初始化参数及任务参数如下:nICW1 = 00010010 = 12HnICW2 = 08H 中断向量码中断向量码 nOCW1 = 11110000 = 0F0H 中断屏蔽中断屏蔽字字 8259A编程举例〔续〕编程举例〔续〕初始化程序如下:初始化程序如下:INIT8259A::MOV DX,,20H;;A0=0,写,写ICW1MOV AL,,12H;上升沿触发,单片,不;上升沿触发,单片,不写写ICW4OUT DX,,ALMOV DX,,21H;;A0=1,写,写ICW2,,OCW1MOV AL,,08H;;ICW2OUT DX,,ALMOV AL,,0F0H ;;OCW1:屏蔽:屏蔽IR4-IR7OUT DX,,AL8.4 PC机中断程序设计机中断程序设计1〕主程序〕主程序保管原中断向量保管原中断向量设置本人的中断向量设置本人的中断向量初始化堆栈指针初始化堆栈指针设置设置8259A的中断屏蔽字〔其他的已由操作系统设置〕的中断屏蔽字〔其他的已由操作系统设置〕STI2〕中断效力程序〕中断效力程序保管所用到的存放器内容保管所用到的存放器内容中断效力程序主体中断效力程序主体恢复进入时保管的存放器内容恢复进入时保管的存放器内容发发EOI命令〔必要时可提早〕命令〔必要时可提早〕STI〔必要时可提早〕〔必要时可提早〕IRET中断程序举例中断程序举例nPC机中主机中主8259A的的I/O地址为地址为20H和和21H,中断,中断向量码为向量码为08H;;n中断恳求从中断恳求从IR6引入,故中断类型号为引入,故中断类型号为0EH;;n主程序如下:主程序如下:n;保管原来的中断向量保管原来的中断向量nmov ah,,35h ;系统调用的功系统调用的功能号能号nmov al,,0eh;中断类型码;中断类型码nint21h;取原中断向量〔在;取原中断向量〔在es:bx中〕中〕nmov save_ip,,bx;保管原来的中;保管原来的中断向量断向量nmov save_cs,,es;设置本人的中断向量设置本人的中断向量pushdsmov dx,,offset my_intmov ax,,seg my_intmov ds,,ax;;DS:DX的内容为的内容为my_int的首地址的首地址mov ah,,25hmov al,,0ehint21h;设置本人的中断向量;设置本人的中断向量, 中断类型号中断类型号0EH的中的中 断向量表内容更新为断向量表内容更新为my_int的首地址的首地址popds ;初始化堆初始化堆栈栈指指针针mov sp,,my_stack_top ;设设置置8259A的中断屏蔽的中断屏蔽字字inal,,21hand al,,10111111b;;8259A开放开放IR6中断中断out21h,,alsti ; CPU开中断开中断…… <其他代其他代码码放在放在这这里里> ……n中断子程序如下:中断子程序如下:nmy_int proc farnpushan…n loop1:<中断效力程序主体中断效力程序主体, eg: our dx, al >n…n popanmoval,,20h;;EOI命令,命令,00100000Bn out20h,,al;写;写OCW2nstiniretnmy_int endpn(第八章第八章终了了)。
