【文档说明】微型计算机中断技术课件.ppt,共(102)页,1.087 MB,由小橙橙上传
转载请保留链接:https://www.ichengzhen.cn/view-5608.html
以下为本文档部分文字说明:
第1页第9章微型计算机中断技术9.1中断的基本概念9.28086的中断结构9.3可编程中断控制器8259A第2页9.1中断的基本概念9.1.1中断及中断源9.1.2中断系统的功能9.1.3中断工作过程
第3页9.1.1中断及中断源1.中断在CPU正常运行程序时,由于内部事件、外部事件或由程序预先安排的事件所引起的CPU暂时停止正在运行的程序,而转去执行请求CPU服务的内部/外部事件或预先安排事件的服务程序,待服务程序处理完毕后又返回去继续执
行被暂停的程序。2.中断源发出中断请求的外部设备或引起中断的内部原因称为中断源。中断源有以下几种:①外设中断源。②故障中断源。③软件中断源。④为调试而设置的中断源。⑤定时时钟。第4页9.1.2中断系统的功能1.中断的实现与返回2.能实现优化级排队3.能实现中断的嵌套主程序中断请求B中
断服务程序B中断请求A中断服务程序A中断返回中断返回第5页YYNN中断源发出中断请求选择当前优先级最高的中断请求保护现场CPU开放中断中断服务CPU关中断恢复现场中断返回IRET中断请求中断判优中断处理中断返回CPU执行完当前
指令有中断请求?允许中断?关中断断点保护获取中断向量取下一条指令中断响应9.1.3中断工作过程第6页9.28086的中断结构9.2.18086中断类型9.2.2中断向量和中断向量表9.2.38086的中断响应过程第7页
9.2.18086中断类型8086采用向量中断,每个中断对应一个中断类型号0~255,共256个。图9.38086中断结构图。8086/8088CPU中断逻辑指令中断断点中断溢出中断除法错单步中断N4301NMI非屏蔽中断请求INTR
中断控制器8259A可屏蔽中断请求第8页9.2.18086中断类型1.外部中断:由外部硬件引起的中断,也叫硬件中断,是CPU外部中断请求信号引脚上输入有效的中断请求信号引起的,分为非屏蔽中断和可屏蔽中断两种。①非屏蔽中断NMI。用户不能用软件屏蔽的中断。②可屏蔽中断INTR。8086的IN
TR中断请求信号来自中断控制器8259A,是电平触发方式,高电平有效。2.内部中断:由CPU内部事件引起的中断,内部中断也称软件中断,包括溢出中断、除法出错中断、单步中断、断点中断和指令设置的中断。第9页IRQ标准应用IRQ标准应用PC/XTNMIRAM、I/O校验错、808
7运算错0定时/计数器0通道的时钟4异步通信1(COM1)1键盘中断5硬磁盘控制器2保留(网络适配器)6软磁盘控制器3异步通信2(COM2)7并行打印机(LPT1)PC/ATNMIRAM、I/O校验错、8087运算错0系统时钟(1
8.2HZ)8日历实时钟1键盘中断9改向INT0AH(以IRQ2出现)2接收从片8259A的中断请求INT10保留3异步通信2(COM2)11保留4异步通信1(COM1)12PS/2鼠标器5并行口2(LPT2)13
协处理器6软磁盘控制器14硬磁盘控制器7并行口1(LPT1)15保留表9.1IBMPC/XT和IBMPC/AT系统外部中断第10页2.内部中断①溢出中断:INTO指令,条件:OF=1。②除法出错中断:在执
行除法指令时,若除数为0或商大于目的寄存器所能表达的范围,产生一个向量号为0的内部中断。③单步中断:单步中断标志TF为1时,在每条指令执行结束后,产生一个向量号为1的内部中断。单步中断为系统提供了一种方便的调试手段,能够逐条地执行指令。④断点中断:INT3指令中断,执行一个INT3指令,
产生一个向量号为3的内部中断。断点中断常用于设置断点,停止正常程序的执行,转去执行某种类型的特殊处理,用于调试程序。⑤指令中断:中断指令INTn。8086的中断优先级由高到低依次为软件中断(单步中断除外)、非屏蔽中断NMI、可屏蔽中断I
NTR、单步中断。第11页9.2.2中断向量和中断向量表8086/8088CPU采用向量中断,向量中断首先根据中断类型号获得中断向量,中断向量包含中断服务程序的入口地址信息。①中断类型号:每个中断的编号,0~255,共
256个中断。②中断向量:中断服务程序的入口地址信息,共4个字节,段地址及偏移地址(CS:IP)。③中断向量表:把系统中所有的中断向量集中起来放到存储器的某一区域内,这个存放中断向量的存储区就叫中断向量表或中断服务程序入口地址表。④中断
向量地址:中断向量在表中的位置称为中断向量地址。中断向量地址=中断类型号×4第12页表9.28086CPU中断向量表存储器地址(中断向量地址)存储器内容(中断向量)对应中断类型号00000H中断服务程序入口偏移
地址低8位000001H中断服务程序入口偏移地址高8位00002H中断服务程序入口段地址低8位00003H中断服务程序入口段地址高8位00004H中断服务程序入口偏移地址低8位100005H中断服务程序入口偏移地址高8位00006H中断服务程序入口段地址低8位00007H中断服务程序入口段地址高8
位………………003FCH中断服务程序入口偏移地址低8位255003FDH中断服务程序入口偏移地址高8位003FEH中断服务程序入口段地址低8位003FFH中断服务程序入口段地址高8位第13页8086/8088的中断向量表00000H00003
H00008H0000BH00004H00007H0000CH0000FH00010H00013H0000CH0007FH00080H003FCHIP内容CS内容类型0中断入口地址(除法出错)类型1中断入口地址(单步中断)类型2中断入口地址(NMI)类型3中断入口
地址(断点中断)类型4中断入口地址(溢出中断)类型5中断入口地址类型31中断入口地址类型32中断入口地址类型255中断入口地址专用的中断(5)用户可自定义的中断(224)系统保留的中断(27)第14页例:假设在实地址方式下,内存00140H到00147H中存放的数据如右图所示,
求51H号中断的中断服务程序入口地址。解:1、求中断向量地址首地址=51H×4=144H(左移两位方法)末地址=51H×4+3=147H2、确定中断向量,即00144H到00147H单元中的内容。段地址=
4540H偏移地址=3430H,所以中断服务程序入口地址为段地址×16+偏移地址=45400H+3430H=48830H第15页9.2.38086的中断响应过程1.内部中断响应过程2.外部中断响应过第16页第17页1.内部中断响应过程①将类型号乘4,计算出中断向量的地址;②CP
U的标志寄存器入栈,以保护各个标志位,此操作类似于PUSHF指令。③清除IF和TF标志,屏蔽新的INTR中断和单步中断。④保存断点,即把断点处的IP和CS值压入堆栈,先压入CS值,再压入IP值。⑤根据第一步计算出来
的地址从中断向量表中取出中断服务程序的入口地址(段和偏移),分别送至CS和IP中。⑥转入中断服务程序执行。第18页内部中断的特点①内部中断是由指令或程序运行时标志位状态的改变引起的,因此是可以预测的,这有点类似于子程序调用。②内部中断由CPU内部引起,中断类型号的获得与
外部无关,CPU不需要执行中断响应周期去获得中断类型号。③除单步中断外,内部中断无法用软件禁止,不受中断允许标志IF的影响。第19页2.外部中断响应过程①非屏蔽中断响应:NMI中断不受IF标志的影响,也不用外部接口给出中断类型号,CPU响
应NMI中断时也没有中断响应周期。②可屏蔽中断响应:当INTR信号有效时,如果中断允许标志IF=1,则CPU就在当前指令执行完毕后,产生两个连续的中断响应总线周期。第20页CLKT1T2T3T4T1T2T3T4ALE
LOCKINTAD0~D7中断类型号第一个INTA总线周期第二个INTA总线周期图9.48086对INTR的中断响应时序①处理器接到中断申请,处理完当前指令即进入响应周期。②第二阶段即中断响应周期,在其间CPU向外部中断控制器发送两个响应脉冲信号INTA#。第一个响应脉冲通知中断
控制器,已经响应外部中断请求,让中断控制器提供中断类型号。第二个响应脉冲,CPU取走中断类型号。第21页可屏蔽中断的响应过程③将标志寄存器中的内容压入堆栈保护,然后清IF和TF标志,以禁止INTR引脚以及陷井和单步中断。④将断点地址压入堆栈(C
S:IP)。断点地址:指中断时CPU待执行的下一条指令对应的逻辑地址。顺序:先压入断点地址CS,后压入偏移地址EIP(或IP)。⑤CPU得到中断类型号码n后,通过中断类型号与中断服务程序入口地址的关系找出该类型对应的段基地址和偏移地址,从而转入中断服务程序入口地址。完成中断响应任务。第22页
图9.5可屏蔽中断的响应和处理过程第23页第24页9.3可编程中断控制器8259A9.3.18259A的功能9.3.28259A的内部结构与引脚信号9.3.38259A的工作方式9.3.48259A编程方法第25页9.3.18259A的功能1.具有8级优先级,并可通过级联最多扩展至64级
;2.可通过编程屏蔽或开放接于其上的任一中断源;3.在中断响应周期能自动向CPU提供可编程的标识码,如8086的中断类型号;4.可编程选择各种不同的工作方式。第26页9.3.28259A的内部结构与引脚信号D7~D0数据总线缓冲器RDWRA0读写控制逻辑CSCAS0CAS1C
AS2级联缓冲/比较器控制逻辑INTINTA中断屏蔽寄存器IMR中断服务寄存器ISR优先级比较器PR中断请求寄存器IRRSP/ENIR0IR1IR2IR3IR4IR5IR6IR7第27页第28页数据总线缓冲器的主要功能有:①
通过数据总线缓冲器,CPU向8259A内部发送命令。②CPU接收8259A状态信息。③在中断响应周期,CPU从中获得中断类型号。数据总线缓冲器数据总线缓冲器是一个三态、双向的8位缓冲器,是8259A与C
PU系统数据总线的接口。第29页读/写逻辑接收CPU送来的读/写控制信号、片选信号以及地址选择信号,对内部各个寄存器进行读写操作。第30页级联缓冲/比较器级联缓冲/比较器在级联方式的主从结构中(两个以上的8
259A组成的系统),用来存放和比较系统中各8259A的从设备标志(ID)。第31页中断请求寄存器IRRD7D6D5D4D3D2D1D0IRR7IRR6IRR5IRR4IRR3IRR2IRR1IRR0IR7IR6IR5IR4IR3IR2IR1IR0寄存器位引脚功能:记录外部
中断源的中断申请的状态。状态:1=对应引脚有中断请求且还未被响应。0=对应引脚无中断请求或有但已经被响应。第32页中断服务寄存器ISRD7D6D5D4D3D2D1D0ISR7ISR6ISR5ISR4ISR3ISR2ISR1ISR0IR7IR
6IR5IR4IR3IR2IR1IR0功能:记录外部中断源的中断申请被服务的状态。状态:1=对应引脚的中断请求已被响应(服务)且服务还没有结束。0=对应引脚的中断请求未被响应。寄存器位引脚第33页中断屏蔽寄存器IMRD7D6D5D4D3D2D1D0IMR
7IMR6IMR5IMR4IMR3IMR2IMR1IMR0IR7IR6IR5IR4IR3IR2IR1IR0功能:设置外部中断源的中断屏蔽状态。状态:1=对应引脚的中断被屏蔽。0=对应引脚的中断未被屏蔽。注意:只有IMRi相应位为0且IF=1,CPU才有可能响应可屏蔽中断。寄存器位引脚第34页中
断优先权分辨器PR优先权分辨器PR用来确定存放在IRR中各个中断请求信号对应中断源的优先级。并总是选出当前最高优先中断源的中断申请通知控制逻辑,以便控制逻辑发送中断请求信号INT给CPU。第35页控制逻辑控制逻辑是控制82
59A内部各个部件的主要逻辑电路。主要功能包括:(1)根据CPU对8259A编程设定的工作方式来产生内部控制信号。(2)如果中断请求寄存器IRR有未被屏蔽的位,则控制逻辑对应于当时最高优先的中断源,向CPU发中断请求信号INT。(3)接收CPU送来的中断响应信号,并置位
中断服务寄存器ISR的相应位(ISRi)。(4)控制发出相应的中断类型号,以供CPU读取。第36页第37页9.3.28259A的内部结构与引脚信号第38页D7~D0:为8位双向的数据线A0:端口选择信号(两个端口地址)IRi:8
个中断源中断请求端INT:中断请求输出信号INTA#:中断响应输入信号RD#和WR#:读/写控制信号CS#:片选信号SP#/EN#:级联/缓冲控制(1)级联时输入:SP#:1=主片,0=从片;(2)缓冲时输出:EN#:1=CPU
写,0=CPU读。12822732642552462372282192010191118121713161415CSWRRDD7D6D5D4D3D2D1D0CAS0CAS1GNDCAS2SP/ENINTIR0IR1IR2IR4IR3IR5IR6IR7IN
TAA0VCC第39页I/O接口器件名称PC/XTPC/ATDMA控制器1000~01FH000~01FH中断控制器1020~021H020~021H定时器040~043H040~05FH并行接口芯片060~063H—键盘控制器—060~06
FHRT/CMOSRAM—070~07FHDMA页面寄存器080~083H080~09FH中断控制器2—0A0~0BFHNMI屏蔽寄存器0A0~0BFH—DMA控制器2—0C0~0DFH协处理器—0F0~0FFHPC系列微机中的I/O端口地址空间也分为两部分,即
1024个端口的前256个端口(0~0FFH)专供I/O接口芯片使用,后768个端口(100H~3FFH)为I/O接口控制卡使用。第40页8259A的引脚双列直插式芯片,28个引脚方波键盘保留串口2硬盘软盘打印机IOW18.2H
zA0CS8259A总线A0数据线IORRDWR片选译码IR0IR1IR2IR3IR4IR5IR6IR7A5~A9D0~D7D0~D7VccSP/ENCA0CA1CA2GND+5V20~3FH用于多片8259A级连情况INTAINTINTAINTR串口1第41页IRQ标准应用IRQ标准应用PC/X
TNMIRAM、I/O校验错、8087运算错0定时/计数器0通道的时钟4异步通信1(COM1)1键盘中断5硬磁盘控制器2保留(网络适配器)6软磁盘控制器3异步通信2(COM2)7并行打印机(LPT1)PC/AT
NMIRAM、I/O校验错、8087运算错0系统时钟(18.2HZ)8日历实时钟1键盘中断9改向INT0AH(以IRQ2出现)2接收从片8259A的中断请求INT10保留3异步通信2(COM2)11保留4异步通信1(COM1)1
2PS/2鼠标器5并行口2(LPT2)13协处理器6软磁盘控制器14硬磁盘控制器7并行口1(LPT1)15保留表9.1IBMPC/XT和IBMPC/AT系统外部中断第42页8259的编程结构SP/ENCA
0CA1CA2IORIOW总线D0~D7数据线D0~D7INTAINTRA0片选译码A5~A9CSA0RDINTAWRINT1×I3I4ICW1芯片控制ICW2中断类型号ICW3主从片连接关系ICW4方式控制
0111A010010100OCW1中断屏蔽寄存器IMR00OCW2优先级设置、发EOI01OCW3特殊屏蔽,查询方式设置处理部分控制部分00000000ISR当前中断服务寄存器PR优先级裁决器VCCGND100A0IR0IR
1IR2IR3IR4IR5IR6IR7IRR中断申请寄存器00000000第43页•4个初始化命令寄存器ICW1、ICW2ICW3、ICW4•3个操作命令寄存器OCW1(IMR)OCW2、OCW3•当前中断服务寄存器ISR•中断
申请寄存器IRR8259内部有9个可读写的寄存器8259的编程结构1×I3I4ICW1芯片控制ICW2中断类型号ICW3主从片关系ICW4方式控制处理部分控制部分00000000ISR当前中断服务寄存器PR优
先级裁决器IRR中断申请寄存器00000000中断屏蔽寄存器IMROCW2100101000001OCW3OCW18259中断控制器第44页(1)初始化命令字(ICW1-ICW4)决定8259的工作方式通常是在计算机系统启动时在初始程序设置,一旦设定,一般在系统工
作过程不再改变。例开机后,BIOS将8259初始化为:①IR0-IR7中断申请信号为上升沿触发方式;②IR0-IR7对应的中断类型号分别为08H-0FH;③优先级IR0最高,IR7最低;(2)操作命令字(OCW1,OCW2,OCW3)在应用程序中设定,动态地控制CP
U处理中断的过程(3)ISR和IRR存放当前8259的状态通过读取ISR和IRR的内容,可了解当前8259工作情况第45页8259A的编程结构和工作原理ISRPRIRR中断处理部件比较IRR失效相应位置1相应位清0********1相应位清
00第46页8259A的工作流程①中断源产生中断请求,使8259A的IRR相应位置1;②经IMR屏蔽电路处理后,送PR;③PR检测出最高的中断请求位,并经过嵌套处理,决定是否发出INT信号;④若可发INT信号,则控制逻辑将INT信号送CPU的INTR引脚;⑤
若CPU开中断,则在执行完当前指令后,CPU进入中断响应周期,发出两个中断响应信号;⑥8259A在收到第一个中断响应信号INTA#后,控制逻辑使相应的ISR位置1,相应的IRR位清0;⑦8259A在收到第二个中断响应信号INTA#
后,控制逻辑将中断类型号送数据总线。若8259A工作在AEOI(自动中断结束)模式,则使相应的ISR位清0。⑧CPU读取该中断类型号后,查中断向量表,转去执行相应的中断服务程序。⑨CPU执行中断服务程序,在中断返回前发
中断结束命令(非自动中断结束方式时),将ISR的相应位清0。注意:这里的中断结束,是指将8259A的ISR对应位复位,而不是结束用户的中断服务程序,中断服务程序要执行IRET指令后才能结束。第47页9.3.38259A的工作方式1.中断优先级方式2.中断嵌套方式3.中断屏蔽方式4.中断结束方式5.
中断触发方式6.与系统总线的连接方式7.级联工作方式8.查询方式第48页1.中断优先级方式IR7IR6IR5IR4IR3IR2IR1IR07654321032107654最低级最高级最高级最低级优先级IR7IR6IR5IR4IR3IR2IR1IR0默认优先级优
先级可编程改变两种优先级控制方式:固定优先级和循环优先级。①固定优先级方式:所有中断请求IRi的中断优先级固定不变;优先级排列顺序可编程改变;加电后8259A的默认方式,默认优先级顺序从高到低为IR0-IR7。
第49页1、中断优先级方式②循环优先级方式:中断源轮流处于最高优先级,即自动中断优先级循环;初始优先级顺序可用编程改变;某中断请求IRi被处理后,其优先级别自动降为最低,原来比它低一级的中断上升为最高级。IR7IR6IR5IR4IR3IR2IR1IR0765432102107654
3最低级最高级最高级最低级ISR内容IR7IR6IR5IR4IR3IR2IR1IR0IR4的服务结束以前0101000001000000IR4的服务结束以后ISRi第50页2.中断嵌套方式两种中断嵌套方式:普
通全嵌套方式和特殊全嵌套方式。①普通全嵌套方式(默认方式):一中断正被处理时,只有更高优先级的事件可以打断当前的中断处理过程而被服务。②特殊全嵌套方式:一中断正被处理时,允许同级或更高优先级的事件可以打断当前的中断处理过程而被服务。注:特殊全嵌套仅
用于多个8259A级联时的主8259A,而不能用于从属8259A或单8259A系统。第51页一般全嵌套方式与特殊全嵌套方式的区别D.主8259AIR0IR1IR2IR3IR4IR5IR6IR7一般嵌套方式:从片的INT被主片封锁,故更高级别
的IR0-IR2中断也无法得到响应特殊嵌套方式:因主片不封锁从片的INT,故级别高的IR0-IR2中断可以得到响应。(但IR3-IR7仍被本从片封锁)C.假定IR3发生中断,并获得服务一般嵌套方式:IR4的中断被服务时,这些中断将
被封锁。B.特殊嵌套方式:IR4的中断被服务时,只封锁IR5-IR7。A.INTE.从8259AINTIR0IR1IR2IR3IR4IR5IR6IR7去CPU第52页3.中断屏蔽方式两种优先级控制方式:普通屏蔽方式和特殊屏蔽方式。①普通屏蔽方式:当一个优先级较高的中断请求正在被处理时
,不允许优先级较低的中断进入正在处理的高级别中断。利用操作命令字OCW1,使屏蔽寄存器IMR中的一位或数位置1来屏蔽一个或数个中断源的中断请求。②特殊屏蔽方式:在某些场合,执行某一个中断服务程序时,要求允许另一个优先级比它低的中断请求被响应,特殊屏蔽方式提供了允许较低优先级的中断能够
得到响应的特殊手段。特殊屏蔽方式中只能用特殊EOI命令结束中断。第53页4.中断结束方式当某一IRi中断被服务时,ISR中的相应位ISRi=1。当服务结束后,则必须清零该ISRi位。使ISRi=0是通过向82
59A发出中断结束命令(EOI命令)实现的。三种EOI方式:①自动EOI方式②正常EOI方式③特殊EOI方式第54页1)中断自动结束方式该方式在第二个INTA负脉冲的后沿即完成对应的ISR位的复位。注意,该方式是在中断响应后,而不是在中断处理结束后将ISR位清0。此时,若有中断请求出现,且IF=
1,则无论其优先级如何,都将得到响应。尤其是当某一中断请求信号被CPU响应后,如不及时撤消,就会再次被响应(即二次中断)。所以,中断自动结束方式适合于中断请求信号的持续时间有一定限制以及不出现中断嵌套的场合。因不保留当前正在服务的中断的状态,故不能用于中断嵌套方式第55页2)一般中断结束方式该方式
用于全嵌套方式下的中断结束。CPU在中断服务程序结束时,向8259发常规中断结束命令,将8259的中断服务寄存器中最高优先级的ISR位清0。在级联情况下的:先结束从片上中所有服务后,再结束对应的主片上的服务。第56页3)特殊中断结束方式(SEOI)在非全嵌套方式下,根据
ISR的内容无法确定最后所响应和处理的是哪一级中断。这种情况下,就必须用特殊的中断结束方式,即在程序中要发一条特殊中断结束命令,该命令指出了要清除ISR中的哪一位。用于特殊屏蔽方式另外,还要注意在级联方式下,一般不用中断自动结束
方式,而是用一般结束方式或特殊结束方式。第57页5.中断触发方式两种触发方式:边沿触发方式和电平触发方式。①边沿触发:IRi出现上升沿表示有中断请求。跳变后高电平一直保持,直到被响应。②电平触发:IRi
出现高电平表示有中断请求。请求一旦被响应,该高电平信号应及时撤除。即在第1个INTA#结束前,IRi必须保持高电平。第58页6.与系统总线的连接方式两种连接方式:缓冲方式和非缓冲方式。①缓冲方式:一般
在多片8259A级联系统中,8259A通过总线驱动器与系统总线相连,而不是8259A直接与系统总线相连,这就是缓冲方式。8259的SP/EN作为输出(EN有效)。②非缓冲方式:当系统只有一片8259A或少量几片8259A时,一般将它直接与
数据总线相连。这就是所谓的非缓冲方式。第59页7.级联工作方式单片8259A可支持8个中断源;采用多片8259A级连,可最多支持64个中断源。n片8259A可支持7n+1个中断源;级连时只能有一片8259A为主片,其余的均为从属片;涉及到的8259A引脚包括:CAS0
-CAS2、SP#/EN#、IRi、INT。第60页级联电路连接方法8259A(从片1)D0-D7INTAINTSP/ENIR7IR0IR2IR3IR4IR5IR6IR1CAS0CAS1CAS28259A(从片2)D0-D7INTAINTSP/ENIR7
IR0IR2IR3IR4IR5IR6IR1CAS0CAS1CAS28259A(主片)D0-D7INTAINTSP/ENIR7IR0IR2IR3IR4IR5IR6IR1CAS0CAS1CAS2VCC系统总线AB、DB、CBA0CSA0A0CSCSRDWRWRRDWRRD
第61页第62页8.查询方式CPU禁止外部的中断请求(IF位为0)。外设仍然向8259A发中断请求信号,要求CPU服务,此时,CPU需要用软件查询方法来确认中断源,从而实现对外设的服务。8259A不提供中断类型号。CPU首先向8259A发查询命令,紧接着执行一条输入指令(
IN),从8259A的偶地址读出一个字节的查询字,由该指令产生的RD#信号使ISR的相应位置1。CPU读入查询字后,判断其最高位,若最高位为1,说明8259A的IR端已有中断请求输入,此时该查询字的最低三位组成的代码表示了当前中断
请求的最高优先级,CPU据此转入相应的中断服务程序。第63页9.3.48259A编程方法8259A有两种控制字:初始化命令字、操作命令字。8259A的编程:初始化编程、工作方式编程。8259A的初始化命令字有4个:ICW1~ICW4用于初始化8259A。8259A的操作命令字有3个:OCW1
~OCW3,用于设定8259A的工作方式及发出相应的控制命令。初始化命令字通常是计算机系统启动时由初始化程序设置的,一旦设定,在工作过程中一般不再改变。操作命令字由应用程序设定(如设备的中断服务程序),用于中断处理过程的动态控制,可多次设置。第64页7个CPU控制寄存器分成两组
:一组用做存ICW,另一组存OCW。两组7个寄存器占用2个I/O端口地址:A0命令字0ICW1、OCW2、OCW31ICW2、ICW3、ICW4、OCW19.3.48259A编程方法在PC/AT机中,主8
259A所占的端口地址为20H和21H,从8259A所占的端口地址为A0H和A1H。注意:当发出ICW或OCW时,CPU中断申请引脚INTR应关闭(使用CLI指令)。第65页D4D3命令字1×ICW100OCW201OCW3ICW1、OCW2、OCW
3由A0、D4和D3三位状态寻址:ICW2、ICW3、ICW4在ICW1后,按顺序写入。9.3.48259A编程方法第66页对8259A的编程分为两类:初始化编程操作过程编程8259A的软件编程必须按照先初始化编程,然后进行操作方式编程的顺序。9.3.48259A编程方法第
67页初始化编程初始化编程的主要任务:①复位芯片。②设定中断请求信号有效的形式。③设定是单片,还是级联。④设定中断类型号。⑤设定优先排队规则。⑥设定中断处理结束时的结束规则。9.3.48259A编程方法第68页ICW1ICW1称为:芯片控制初始化命令字,用于启动8259A中的初
始化编程。该字写入8位的芯片控制寄存器。写ICW1的标记为:A0=0,D4=1。9.3.48259A编程方法第69页第70页ICW1ICW1可完成初始化任务的前三项:①复位芯片。②设定中断请求信号有效的形式。③设定是单片,还是级联。注意:在写入ICW1后,除完成ICW1规定的
功能外,同时复位芯片,隐含有清IMR、默认中断优先级为IR0>IR1>……>IR7等的功能。9.3.48259A编程方法第71页举例:PC/XT机设置的ICW1=13H,端口地址为20H。MOVAL,1
3HOUT20H,AL;单片,上升沿有效,写ICW413H=000100119.3.48259A编程方法第72页写ICW1A0=0,D4=1写ICW2A0=1SNGL=1IC4=1写ICW3A0=1写ICW4A0=1是否是否按顺序对A0=1端口写入命令字
第73页ICW2ICW2:中断类型码命令字。该字写入8位的中断类型寄存器。写ICW2的标记为:A0=1。中断类型码的低3位由中断请求的引脚IR0~IR7决定(000~111)。9.3.48259A编程方法1T7T6T5T4T3
×××A0D7D6D5D4D3D2D1D0第74页IBMPC/XT机中由8259A管理的8级外部中断IR0~IR7的中断类型码为08H~0FH。举例:设置的ICW2=08H,端口地址为21H。MOVAL,08HOUT21H,ALIR3对应的中断类型码为0BH
。9.3.48259A编程方法1T7T6T5T4T3×××A0D7D6D5D4D3D2D1D0第75页ICW3ICW3:主片/从片的初始化命令字。它只用于级联方式。该字写入8位的主/从标志寄存器。写ICW3的标记为:A0=1。①对于主82
59A(输入端SP#=1)②对于从8259A(输入端SP#=0)9.3.48259A编程方法第76页ICW3①对于主8259A(输入端SP#=1)D7~D0(S7~S0):当某位为1时,表示该位对应的IRi端接一从片8259A。例如:当I
CW3=F0H时,则表示在IR7、IR6、IR5、IR4引脚上接有8259A从片,而IR3、IR2、IR1、IR0引脚上未接从片。注意:清0的位,其对应的IRi上可直接连接外设来的中断请求信号端。9.
3.48259A编程方法第77页ICW3②对于从8259A(输入端SP#=0)控制字格式如图所示9.3.48259A编程方法第78页CAS0IR0CAS1IR1CAS2IR2IR3INTAIR4IR5INTIR6IR7SP/ENCAS0INTACAS1CAS2INTI
R0IR1SP/ENIR7CAS0IR0CAS1IR1CAS2IR2IR3INTAIR4IR5INTIR6IR7SP/ENINTAINTR+5V8259级联工作示意图在多片级连的情况下,主片的CAS2-CAS0和从
片的CAS2—CAS0分别相连在第一个INTA时,主片在完成例行的三个动作外,还通过CAS2-CAS0向各从片发送编码ID2-ID0每个从8259A拿到这个标识符之后,与自己ICW3标识符进行比较,当两者相符合时第二个INTA时,相应的从片发送中断类型码第79页ICW4ICW4:方式控制
初始化命令字。该字写入8位的方式控制寄存器。写ICW4控制字标记为:A0=1。是否需要ICW4由应用决定,只有在需要特殊全嵌套方式、缓冲方式、中断自动结束方式时,才设置ICW4,否则,可不设置ICW4。同时,是否需要ICW4,应
在ICW1中指出。当不设置ICW4时,缺省为:非特殊全嵌套方式、非缓冲方式、非中断自动结束方式。9.3.48259A编程方法第80页第81页写ICW1A0=0,D4=1写ICW2A0=1SNGL=1IC4=1写ICW3A0=1写ICW4A0=1是否是否按顺序对A0=1端口写入命令字注意
:初始化从写入ICW1开始,然后顺序写入ICW2、ICW3、ICW4。虽然ICW2、ICW3、ICW4地址相同,但顺序是固定的,因而不会发生错误。ICW1、ICW2是必须写入的。是否写入ICW3、ICW4,分别由ICW1的SNGL和IC4位的状态决定。第82页操作过程编
程初始化完成后,8259A进入响应中断的工作状态,准备接收中断请求信号。在8259A工作其间,可以通过操作命令字OCW使其以不同的方式操作。操作过程编程主要完成以下任务:对中断请求的屏蔽、优先级循环控制、中断结束方式、对内部控制寄存器的查询等。8259A有
三个操作命令字:OCW1、OCW2、OCW3。9.3.48259A编程方法第83页OCW1写OCW1的标记为:A0=1。OCW1用来写入IMR寄存器。当某一位Mi=1时,则对应于该位的中断请求就受到屏蔽;当某一位Mi=0时,则对应
于该位的中断请求得到允许进入系统。例如:OCW1=15H,则IR4、IR2和IR0引脚上的中断请求被屏蔽,其他引脚上的中断请求则允许进入系统。9.3.48259A编程方法第84页OCW2OCW2用来设置中断优先级循环方式和中断结束方式
的操作命令字。写OCW2的标记为:A0=0、D3=D4=0。OCW2具有两方面的功能:①可以用来设置8259A采用优先级循环方式;②它可以组成中断结束命令。9.3.48259A编程方法第85页第86页OCW2R位:决定系统的中断优先级是否按自动循环方式设置。1:采用优先级自动循环方
式;0:采用优先级非自动循环方式。优先级自动循环方式用于多个中断源其优先级相等的场合。SL位:决定OCW2中的L2、L1、L0是否有效,如为1则3位都有效,否则为无效。9.3.48259A编程方法第87页OCW2EOI位:中断
结束命令。当EOI为1时,使当前ISR中的对应位ISRi复位。L2、L1、L0有两个功能:SL为1时,L2、L1、L0有效。一是当OCW2为特殊的中断结束命令时,L2、L1、L0将指出要清除当前ISR中的哪一位;二是当OCW
2为特殊的优先级循环方式命令时,L2、L1、L0将指出循环开始时哪个中断的优先级最低。第88页A00RSLEOI00L2L1L0D7D6D5D4D3D2D1D000001100201031104001510160117111001011101100000111110010特征位EOI特殊
EOI(按编码复位ISR)EOI命令,优先级自动循环优先级自动循环取消优先级自动循环EOI命令,优先级自动循环(按编码)优先级自动循环(按编码)无意义中断级别编码第89页OCW3OCW3是多功能操作命令字写OCW3的标记为:A0=0、D4=0、D3=1。OCW3命
令字有3项功能:①设置和撤消特殊屏蔽方式;②设置中断查询方式;③设置对8259A内部寄存器的读出命令。9.3.48259A编程方法第90页0ESMMSMM01PRRRIS0001101100011011D7D6D5
D4D3D2D1D0A0无用清除特殊屏蔽设置特殊屏蔽特征位无用随后读IRR随后读ISR查询命令非查询命令D7位:无关位,可设为任意值,一般设为0。D6位:ESMM位,即允许特殊屏蔽方式位。该位为1时SMM位才有意义。D5位
:SMM即特殊屏蔽方式位。1:设置特殊屏蔽方式;0:清除特殊屏蔽方式。D4、D3位:是特征位,01B。第91页D2位:P位。1:该OCW3用做查询命令0:非查询方式。D1、D0位:RR位和RIS位。这两位的组合用于指定对中断请求寄存器(IRR)和中断服
务寄存器(ISR)内容的读出。D1D0=10时,表明紧接着要读出IRR的值;D1D0=11时,表明紧接着要读出ISR的值。0ESMMSMM01PRRRIS0001101100011011D7D6D5D4D3D2D1D0A0无用清除特殊屏蔽设置特殊
屏蔽特征位无用随后读IRR随后读ISR查询命令非查询命令第92页特殊屏蔽方式的设置与清除ESMM、SMM=11时:选择特殊屏蔽方式ESMM、SMM=10时:清除特殊屏蔽方式选择特殊屏蔽方式:OCW3为01101000B(68H)清除特殊屏蔽方
式:OCW3为01001000B(48H)查询的设置与清除P=1时:选择查询方式P=0时:选择非查询方式选择查询方式:OCW3为00001100B(0CH)选择非查询方式:OCW3为00001000B(08H)9.3.48259A
编程方法第93页读8259A的状态(IMR、IRR、ISR)1、读IMR:INAL,21H(A0=1的端口)2、读IRR:MOVAL,00001010BOUT20H,ALINAL,20H3、读ISR:MOVAL,00001011BOUT20H,ALINAL,20H9.3
.48259A编程方法第94页在IBMPC/XT机中,只用1片8259A中断控制器,用来提供8级中断请求,其中IR0优先级最高,IR7优先级最低。它们分别用于日历时钟中断、键盘中断、保留、网络通信、异步通信中断
、硬盘中断、软盘中断及打印机中断。8259A片选地址为20H、21H。9.3.48259A编程方法第95页8259AINTR(8088)8288A0+5V时钟中断键盘中断保留COM2中断COM1中断硬磁盘中断软磁
盘中断打印机中断IR0D7~D0INTA0245总线缓冲器DBIR1IR2IR3IR4IR5IR6IR7INTARDWRCSEN/SPINTAIORIOWINTRCS第96页IBMPC/XT中8259A的使用步骤:1、初始化2、送中断向量入口地址3、中
断子程序结束4、中断嵌套第97页1、初始化MOVAL,13H;写ICW1,单片,边沿触发,要ICW4OUT20H,ALMOVAL,8;写ICW2,中断类型号从8开始OUT21H,ALMOVAL,0DH;写ICW4,缓冲工作方
式,;8088/8086配置OUT21H,ALMOVAL,0;写OCW1,允许IR0~IR7全部8级OUT21H,AL第98页2、送中断向量入口地址例如,异步通信中断(COM1)IR4。中断向量类型码
为8+4=12(0CH)。中断入口地址的偏移量(IP值)与段基址(CS)在入口地址表中的存放地址为:12×4=48(30H),49(31H),50(32H),51(33H)。其中30H、31H存放指令指针IP;32H,33H存放指令段码CS。第99页3、中断子程
序结束由于采用一般中断结束方式,因此,在中断子程序结束前必须发EOI命令和IRETMOVAL,20H;写OCW2命令,使ISR相应位;复位(即发EOI命令)OUT20H,ALIRET;开放中断允许,并从中断返回4、中断嵌套为了使中断嵌套,即在中断响应过程中,允许比本中断优先级高的
中断进入,只要在进入中断处理程序后,执行开中断指令STI即可达到此目的。第100页现行微机中断控制器连接示意图IRQ0IRQ2IRQ4IRQ1IRQ3IRQ5IRQ7IRQ6A0CSSP/ENINT主8259AINTARDWR~D7D0~20CASIRQ8IRQ10I
RQ12IRQ9IRQ11IRQ13IRQ15IRQ14A0CSINTARDSP/ENINTWR从8259A~D7D0~20CAS日时钟键盘串行口2串行口1并行口2软盘并行口1A0INTR1CS实时钟改向0AH中断保留保留协处理器硬盘保留A0INTR2CS保留+5V~D7D0
INTRCPUINTAIORIOW总线控制器第101页表IBMPC/AT机中断源和中断类型号7.3.58259A应用举例第102页作业9.69.9