版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
大连理工大学自动化系微机原理第七章中断系统7.1计算机中断系统7.28086/8088的中断结构7.3中断控制器Intel8259A什么是中断?与生活场景的比较正在看书电话铃响接电话继续看书执行程序事件发生事件处理继续执行程序中断处理中断请求及响应实际场景计算机中断返回7.1计算机中断系统CPU执行程序时,由于发生了某种随机的事件(外部或内部),引起CPU暂时中断正在运行的程序,转去执行一段特殊的服务程序(称为中断服务程序或中断处理程序),以处理该事件,该事件处理完后又返回被中断的程序继续执行,这一过程称为中断。中断的作用并行操作,提高工作效率CPU与外设同时工作,多个外设同时工作。实现实时处理在控制系统中,有些参量要求计算机能快速处理,用中断方式容易实现。故障处理出现故障,提出中断申请,要求计算机及时响应。中断源任何能引发中断的事件都称为中断源,可分为:硬件中断源:I/O设备,系统时钟,故障源等软件中断源:程序中断指令(INT3),指令运行出错(INTO)等8086/8088的外部中断信号:INTR、NMIINTR——可屏蔽中断请求,高电平有效,受IF标志的控制。IF=1时,执行完当前指令后CPU对它作出响应。NMI——非屏蔽中断请求,上升沿有效,任何时候CPU都要响应此中断请求信号。中断工作过程中断请求中断响应关中断断点保护中断识别现场保护中断服务恢复现场开中断中断返回中断服务是进行数据交换的实质性环节外设通过硬件信号的形式向CPU引脚发送信号,该信号维持直至被响应为止。
满足一定条件,CPU进入中断响应周期CPU每条指令执行完将会检测中断输入引脚;对于可屏蔽中断请求,CPU应处于开中断状态;中断请求时,没有更高级别的中断请求发生;中断请求应保持到被响应为止。CPU响应中断后将自动关闭中断,不经用户打开,CPU将不再受理其他中断请求。
CPU响应中断后将自动保护断点地址,以便中断后继续执行原程序,并保护状态寄存器。
识别中断发生的原因,找到相应的中断服务程序入口。
对CPU的工作环境(主要是寄存器)进行保护,以便将来恢复。一般是将其压入堆栈。
针对不同的中断源所进行的特定的服务,CPU执行事先编制好的中断服务程序。完成中断服务后,CPU应返回断点去执行原来的工作,此时应恢复原来的工作环境。
CPU响应中断后,一般会自动关闭中断,用户要主动打开,否则,整个中断过程中,不会再响应其他中断利用IRET,CPU会将断点从堆栈弹出,于是程序返回断点继续执行原来的程序。中断系统的功能(一)实现中断及返回检测中断当中断允许时,CPU在每条指令的最后一个时钟周期检测中断请求。响应中断时保护断点和现场
断点自动保护,现场要在中断服务程序中保护断点:CPU响应中断时,会停止当前执行程序,转去执行中断处理程序,原程序被打断的地方断点地址:中断处理程序结束后,返回原程序恢复执行的第一条指令的地址,又称“返回地址”。现场是指进入中断服务程序之前CPU各个寄存器的状态。
中断服务完成时将中断申请信号撤销中断服务完成后恢复现场和断点,返回原程序中断服务程序返回断点中断处理断点CS:IP+1正常程序CS:IP继续执行流程中断传送流程返回(二)对中断进行控制对中断申请进行控制中断传送是一种效率更高的程序传送方式进行传送的中断服务程序是预先设计好的中断请求是外设随机向CPU提出的CPU对请求的检测是有规律的:一般是在每条指令的最后一个时钟周期采样中断请求输入引脚例1一个输入设备的中断接口电路CQD+5V160HD0AA
中断允许触发器B
中断申请触发器DCQRB
地址
译码
器INTR162HIOWA15~A0IORINTA
缓冲器
缓冲器中断类型码(0FH)三态三态D7~D0D7~D0EOC外设电路说明外设准备好数据后,发EOC信号(负脉冲),把数据放到接口线上,同时置“1”中断申请触发器。执行如下指令,置中断允许触发器为“1”,开放中断
MOVAL,01HMOVDX,160HOUTDX,AL若禁止中断,则执行如下指令
MOVAL,00HMOVDX,160HOUTDX,AL当INTR为高电平,且CPU中断开放(IF=1),则CPU响应中断。在中断响应周期,INTA有效,读取中断类型码,清除中断申请触发器。在中断服务程序中读取外设数据
MOVDX,162HINAL,DX对中断响应进行控制标志寄存器Flag中IF标志可控制CPU是否查询INTR引脚STIIF=1允许中断CLIIF=0禁止中断(三)实现优先权排队当系统中多个中断源同时发出中断请求时,CPU按照重要性和急迫性(中断优先级)择优响应:不同优先级同时请求时,CPU先响应高优先级中断;CPU在处理低优先级中断时,若出现高优先级中断请求,则转去处理高优先级中断(中断嵌套);CPU在处理高优先级中断时,若出现低优先级中断请求,暂不响应;CPU在处理中断时,若出现同级别中断请求,则等当前中断处理完后,才处理新的请求。(四)寻找中断源
有中断申请时需要查找中断源,以决定中断服务程序入口地址。预先约定当有中断申请时,则转到固定地址执行中断服务程序。电路简单,但一般只能为几个中断源服务。查询
在中断服务程序中查询中断源。向量中断(应答方式)响应中断时,CPU发中断响应信号,中断源收到此信号发出中断类型码(中断向量号),CPU根据中断类型码决定中断服务程序入口地址。中断源查找和中断优先级排队的实现软件查询中断源CPU响应中断后用软件查询申请中断的外设查询方法优点查询次序即是优先权次序;省硬件,不需要硬件排队电路。缺点:转至服务程序入口时间长A15A0~译码器地址IORINTRD7~D0源ABCDEFGH20H三态缓冲器中断申请触发器查询程序
INAL,20HLEABX,BRNTABCIRCLE:SHRAL,1JCGETABADDBX,2ORAL,ALJNZCIRCLEJMPERRORGETAB:JMPCS:[BX]BRNTABDWSUB1,SUB2,SUB3,SUB4DWSUB5,SUB6,SUB7,SUB8CF0DSTMSBLSB链式优先权排队电路(应答方式)电路说明每个接口有一个中断允许输入IEI和中断允许输出IEO,只有IEI为高电平时才允许该接口芯片发中断请求;IEO=IEI•INTINT表示该设备有中断请求;每个接口芯片的中断请求输出为OC门,具有负逻辑的“线或”关系;响应中断时由INTA从接口读取中断矢量。外设2IEIIEO接口2外设1IEIIEO接口1SEL1外设3IEIIEO接口3SEL2SEL3+5VD7~D0INTAINTRIORIOWINTAinCPUINTAINTR外设1外设2外设接口1菊花链逻辑电路外设接口2外设3外设接口3≥1菊花链逻辑电路菊花链逻辑电路┇IREQIREQIREQ中断确认链式优先权排队电路(应答方式)INTAinINTAin中断确认中断确认中断优先权编码电路中断请求寄存
器中断服务寄存
器优先权编码器优先权编码器B2B1B0A2A1A0A>B比较器INTRIR0IR1IR2IR3IR4IR5IR6IR7电路说明中断请求寄存器由IR0~IR7可分别引入8个外设的中断请求。优先权编码器把当前最高优先级的中断输入进行编码后输出。中断服务寄存器记录正在服务的中断申请。中断申请的最高级与正在服务的最高级比较,只有申请级高于服务级才能提出中断申请(INT)。7.28086/8088的中断结构8086中断8088的中断系统采用向量中断机制能够处理256个中断用中断类型码(中断向量号)0~255区别可屏蔽中断还需要借助专用中断控制器Intel8259A实现优先权管理8086CPU中断分为两类硬件中断:由外部请求引起的中断软件中断:由指令执行引起的中断非屏蔽中断源中断逻辑INTO指令单步中断除法错误INTN指令CPUINTRNMI可屏蔽中断源8259A中断控制器IR0IR1IR2IR3IR4IR5IR6IR7外设中断源
INTA内部中断除法错中断指令中断溢出中断单步中断外部中断非屏蔽中断可屏蔽中断(一)硬件中断可屏蔽中断可屏蔽中断申请输入为INTR引脚,高电平有效,该中断受IF控制,CPU在每条指令的最后一个T状态检测该引脚。由IF标志控制可屏蔽中断是否允许响应;中断类型码来自外部中断控制器。CPU响应中断后,使INTA有效,从外设读取中断类型码。可屏蔽中断主要用于主机与外设交换数据
8086/8088有256个中断类型,用1个字节进行编码称为中断类型码,每个中断类型码对应4个字节的中断服务程序入口地址。中断标志IF的状态IF=0:可屏蔽中断不会被响应关中断、禁止中断、中断屏蔽系统复位,使IF=0任何一个中断被响应,使IF=0执行指令CLI,使IF=0IF=1:可屏蔽中断会被响应开中断、允许中断、中断开放执行指令STI,使IF=1执行指令IRET恢复原IF状态明确IF标志的状态是关键非屏蔽中断非屏蔽中断申请输入为NMI引脚,上升沿有效,该中断不受CPU控制,中断类型码为2(INT2)。非屏蔽中断一般用于非常事件:PC/XT机中用于系统板上RAM奇偶错;I/O通道奇偶错和8087异常中断。(二)软件中断由于8086/8088内部执行程序出现异常引起的程序中断DIV和IDIV指令(INT0)INT指令(INTn)INTO指令(INT4)单步中断(INT1)
⑴除法错中断DIV和IDIV指令(INT0)若除数为0或商超过寄存器所能表达的范围,则产生类型为0的软件中断,称为除法错中断。例如:movbl,0idivbl ;除数BL=0,产生除法错中断movax,200hmovbl,1divbl ;商=200H,不能用AL表达 ;产生除法错中断⑵指令中断在执行中断调用指令INTn时产生的一个中断类型码为n(0~255)的内部中断,称为指令中断其中中断类型码为3的指令中断比较特别(生成一个字节的指令代码:11001100),常用于程序调试,被称为断点中断例如:DEBUG.EXE调试程序的运行命令G设置的断点,就是利用INT3指令实现的⑶溢出中断若OF=1,则指令INTO引起类型码为4的软件中断在执行溢出中断指令INTO时,若溢出标志OF为1,则产生一个中断类型码为4的内部中断,被称为溢出中断例如:movax,2000haddax,7000h
;2000H+7000H=9000H,溢出:OF=1into ;因为OF=1,所以产生溢出中断⑷单步中断若单步中断TF为1,则在每条指令执行结束后产生一个中断类型码为1的内部中断,称为单步中断例如:DEBUG.EXE调试程序的单步命令T就利用单步中断实现对程序的单步调试PC机的中断优先顺序NMIN软件中断INTRTF=1中断响应周期读中断类型码下条指令现行指令IF=1NNNNYYYYY查询中断的顺序,决定了各种中断源的优先权软件中断除法错中断指令中断溢出中断非屏蔽中断可屏蔽中断单步中断高低NYNYNNNNNYY执行指令执行完否?取指令IF=1?内部中断?NMI?INTR?TF=1?类型码=0~255类型码=2类型码=1中断响应,读类型码FLAG入栈TEMP←TFIF=TF=0CS、IP入栈计算向量表地址高字→CS,低字→IP执行中断服务程序NMI?TEMP=1?转入中断服务程序恢复CS和IP恢复FLAGS返回被中断的程序YYYYNIRET指令的操作8086/8088的中断处理流程PC机的中断向量中断向量:中断服务程序的入口地址(首地址)逻辑地址含有段地址CS和偏移地址IP(32位)。每个中断向量的低字是偏移地址、高字是段地址,需占用4个字节8086/8088微处理器从物理地址000H开始,依次安排各个中断向量,向量号也从0开始8086/8088CPU在内存00000H~003FFH的1KB地址空间内,为256个中断建立一个中断向量表,中断向量表就是中断服务程序入口地址表。类型255指针除数为0
单步非屏蔽断点溢出003FCH00000H00004H00008H0000CH00010HCSIP段地址偏移量每个中断类型码对应4个字节的程序入口地址,中断类型码乘以4便可得到中断向量表中存放中断服务程序入口地址的存储单元的偏移量。0~4:专用中断类型5~1FH:保留中断类型(可修改中断服务程序)20H~0FFH:用户可用中断类型其中:8~0FH是8个硬件中断中断类型码为N的中断向量的物理地址=N×4例:INT21H指令调用第21号中断服务程序,其入口地址存放在中断向量表中84H~87H的连续4个字节。(21H×4=84H)偏移量低8位偏移量高8位段地址低8位段地址高8位87H86H85H84HIPCSINTR引脚信号说明多个外设中断源通过8259A中断优先级管理器连接到INTR引脚,外设中断源的优先级由8259A进行管理
IR0~IR7优先级由高到低,通常对应的中断类型码为08H~0FH。(IR0~IR7的编号恰好对应中断类型码的低3位)例:IR0对应中断类型码08HIR0IR1IR2IR3IR4IR5IR6IR78259AINTINTR8086外设中断源1外设中断源8IBMPC/AT机中一般使用两片8259A级连8259级联后可管理15个外设,只能两级级联优先级:01(8……15)3…7
高低IR8~IR15的中断向量:70H~77HIR0IR1IR2IR3IR4IR5IR6IR7
主片8259AINTRINTRCPUIR8IR9IR10IR11IR12IR13IR14IR15从片8259AINTR中断响应过程中断检测
CPU在每条指令执行的最后一个时钟周期检测中断请求,如果出现以下之一,则进入中断响应周期。有软件中断有NMI中断信号有INTR中断信号,而且CPU允许中断响应,即IF=1获取中断类型码进入中断响应周期以后,若是INTR,则产生INTA信号,中断源通过数据总线的低8位将中断类型码传送给CPU;若是NMI,则类型码是2;若程序出错产生中断,则使用默认的类型码;若是中断指令,则指令中有类型码。保护断点系统自动将标志寄存器压入堆栈,清除TF和IF,并将断点处的CS和IP压入堆栈,先压CS后压IP。得到中断向量系统根据中断类型码形成中断服务程序的入口地址,转入中断服务程序执行,每个中断都有自己的处理程序。中断服务处理进入中断服务程序后,通常由以下步骤组成保护现场,开中断中断处理关中断,恢复现场,又开中断用中断返回指令(IRET)返回中断返回:从堆栈中恢复断点处CS:IP和FLAG内部中断服务程序编写内部中断服务程序与编写子程序类似利用过程定义伪指令PROC/ENDP第1条指令通常为开中断指令STI最后用中断返回指令IRET通常采用寄存器传递参数主程序需要调用中断服务程序调用前,需要设置中断向量设置必要的入口参数利用INTn指令调用中断服务程序处理出口参数例7.1编写80H号中断服务程序,并调用功能:具有显示以“0”结尾字符串的功能,利用INT10H实现字符显示字符串缓冲区首地址为入口参数:
DS:DX(段地址:偏移地址)传递参数光标处写字符(BIOS功能调用INT10H)功能号:AH=0EH入口参数:AL=字符的ASCII码;数据段intoff dw? ;用于保存偏移地址intseg dw? ;用于保存段基地址intmsg db‘AInstructionInterrupt!’,0dh,0ah,0以“0”结尾回车、换行;代码段movax,3580h ;利用DOS功能35H号int21h ;获取原80H中断向量movintoff,bx ;保存偏移地址movintseg,es ;保存段基地址获取中断向量(DOS功能调用INT21H)功能号:AH=35H入口参数:AL=中断向量号出口参数:ES:BX=中断向量(段地址:偏移地址);设置新中断向量pushdsmovdx,offsetnew80h;取中断程序偏移地址movax,segnew80h;取中断程序段地址movds,axmovax,2580hint21hpopds设置中断向量(DOS功能调用INT21H)功能号:AH=25H入口参数:AL=中断向量号DS:DX=中断向量(段地址:偏移地址);中断调用,设置入口参数:
DS=段地址(已设置)
DX=偏移地址movdx,offsetintmsg int80h
;调用80H中断服务程序AInstructionInterrupt!程序功能;主程序返回movdx,intoff ;恢复原中断向量movax,intsegmovds,ax ;改变DSmovax,2580hint21h ;因紧接着返回DOSmovax,4c00h ;故无需恢复DSint21h设置中断向量(DOS功能调用INT21H)功能号:AH=25H入口参数:AL=中断向量号DS:DX=中断向量(段地址:偏移地址);80H号内部中断服务程序:;显示字符串(以“0”结尾);入口参数:DS:DX=缓冲器首地址new80h proc ;过程定义
sti
;开中断
pushax ;保护寄存器
pushbx pushsi movsi,dxnew1: moval,[si];读取欲一个显示字符
cmpal,0;为结尾“0”,则结束
jznew2 movbx,0;采用ROM-BIOS功能调用
movah,0eh int10h incsi;准备显示下一个字符
jmpnew1光标处写字符(BIOS功能调用INT10H)功能号:AH=0EH入口参数:AL=字符的ASCII码new2: popsi ;恢复寄存器
popbx popax
iret;中断返回new80h endp;过程(中断服务程序)结束AInstructionInterrupt!程序功能7.3中断控制器INTEL8259A(一)功能简介8259A是与8086系列CPU兼容的可编程中断控制器(PIC),用于管理8086/8088的可屏蔽中断。具有8级优先权控制,通过级联可扩展至64级每一级中断都可以屏蔽和允许。中断响应时提供中断类型码。中断申请可以有电平触发,也可有边沿触发。中断响应周期,可提供相应的中断向量号有多种工作方式,可通过编程选择。(二)8259内部结构INTAINT数据总线
缓冲器读/写控制逻辑级连缓冲比较SP/EN控制电路控制逻辑初始化命令
寄存器组操作命令寄存器组
中断
请求
寄存
器(IRR)IR0IR1IR2IR3IR4IR5IR6IR7
中断服务寄存器(ISR)中断优先级分析器中断屏蔽寄存器
(IMR)D7~D0RDWRCSA0CAS1CAS2CAS0内部结构说明中断请求寄存器IRR保存8条外界中断请求信号IR0~IR7的请求状态Di位为1表示IRi引脚有中断请求;为0表示无请求中断服务寄存器ISR保存正在被8259A服务着的中断状态Di位为1表示IRi中断正在服务中;为0表示没有被服务中断屏蔽寄存器IMR保存对中断请求信号IR的屏蔽状态Di位为1表示IRi中断被屏蔽(禁止);为0表示允许中断优先级分析器决定中断申请的优先级;控制逻辑中包含两个寄存器组初始化命令寄存器组:ICW1~ICW4操作命令寄存器组:OCW1~OCW3级联逻辑控制8259A的主从工作方式。D7~D0双向,三态数据线,可直接与系统总线相连。IR7~IR08个外部中断请求输入引脚,可为高电平有效或上升沿有效。RD读信号,输入,低电平有效,若有效则把8259A内部寄存器数据读入到CPU。WR写信号,输入,低电平有效,若有效则把数据写入到8259A的内部寄存器。1234567891011121314CSWRRDD7D6D5D4D3D2D1D0CAS0CAS1GNDIntel8259A2827262524232221201918171615VccA0INTAIR7IR6IR5IR4IR3IR2IR1IR0INTSP/ENCAS2(三)8259A引脚图CS片选信号,低电平有效,给8259A分配地址。A0用于选择8259A内部不同寄存器。INT中断申请线,输出,高电平有效,8259A的中断申请输出引脚(可连接8086的INTR)。INTA输入,低电平有效,有效时8259A输出中断类型码1234567891011121314CSWRRDD7D6D5D4D3D2D1D0CAS0CAS1GNDIntel8259A2827262524232221201918171615VccA0INTAIR7IR6IR5IR4IR3IR2IR1IR0INTSP/ENCAS2CAS2~CAS0级联信号线,当8259A为主片时为输出引脚,从片时为输入引脚。收到第一个INTA时,主片通过这三根线通知有中断申请的从片在第二个INTA时送出中断类型码。1234567891011121314CSWRRDD7D6D5D4D3D2D1D0CAS0CAS1GNDIntel8259A2827262524232221201918171615VccA0INTAIR7IR6IR5IR4IR3IR2IR1IR0INTSP/ENCAS2SP/EN:在非缓冲工作方式时,SP有效,输入,决定8259A为主片还是从片。
SP=1表示是主8259A,SP=0表示是从8259A;在缓冲工作方式时,EN有效,输出,由它打开总线缓冲器。
EN=1表示允许总线缓冲器输入,
EN=0表示允许总线缓冲器输出;1234567891011121314CSWRRDD7D6D5D4D3D2D1D0CAS0CAS1GNDIntel8259A2827262524232221201918171615VccA0INTAIR7IR6IR5IR4IR3IR2IR1IR0INTSP/ENCAS28259A与计算机的连接(一)8259A单片工作方式的接口电路D7~D0D7~D0RDWRINTINTAA0CS8259ASP/ENIR0IR1IR2IR3IR4IR5IR6IR7CAS2CAS1CAS0IRQ0IRQ1IRQ2IRQ3IRQ4IRQ5IRQ6IRQ7日时钟键盘保留COM2COM1硬盘软盘打印机+5VIORIOWINTRINTAA1A13A15A14A10A12A1174LS3074LS04A9+5VA8A7A6A5+5VCBA74LS138Y1Y0G2AG2BG1电路说明8259A数据线与控制线对应连接到系统总线;由74LS30(8输入与非门)和74LS138(三-八译码器)对地址线进行译码决定端口地址,地址为020H~03FH;8086使用低8位数据线与8259A传递信息。8086的A1接到8259的A0线上,使用偶地址;CAS2CAS1CAS0未接,SP/EN接正电源;地址范围范围A15A14A13A12A11A10A9A8A7A6A5A4A3A2A1A0
00000000001XXXXX0020H~003FH(二)两片8259A级联工作管理15级中断+5VD7~D0INT8259ASP/ENIR0IR1IR2IR3IR4IR5IR6IR7IRQ0IRQ1IRQ2IRQ3IRQ4IRQ5IRQ6IRQ7CAS2CAS1CAS0D7~D0CS8259ASP/ENIR0IR1IR2IR3IR4IR5IR6IR7IRQ8IRQ9IRQ10IRQ11IRQ12IRQ13IRQ14IRQ15CAS2CAS1CAS0INTINTA2CS(020H
~03FH)(0A0H~0BFH)INTA1CSINTARDWRA0INTARDWRA0D7~D0实时钟改向INT0A协处理器CSINTRINTAIORIOWA1说明从片8259A的中断申请端INT接主片的IR2主片的SP/EN接+5V,从片的SP/EN接地,主从片的CAS2、CAS1、CAS0对应连接。主片的端口地址INTA1CS为020H~03FH,从片的端口地址INTA2CS为0A0~0BFH.8086系统主从芯片都用偶地址传递信息。三.8259A的工作方式1、设置优先级的方式:(1)全嵌套方式(2)特殊全嵌套方式(3)优先级自动循环方式(4)优先级特殊循环方式2、屏蔽中断源的方式:(1)普通屏蔽方式(2)特殊屏蔽方式3、中断结束处理方式(1)中断自动结束(2)一般的中断结束方式(3)特殊的中断结束方式4、连接系统总线的方式(1)缓冲方式(2)非缓冲方式5、引入中断请求的方式(1)边沿触发(2)电平触发(3)查询方式1.中断优先方式与中断嵌套中断优先方式
两类优先级控制方式:固定优先级和循环优先级固定优先级方式所有中断请求IRi的中断优先级固定不变优先级排列顺序可编程改变加电后8259A的默认方式,默认优先级顺序从高到低为IR0~IR7IR7IR6IR5IR4IR3IR2IR1IR07654321032107654最低级最高级最高级最低级优先级IR7IR6IR5IR4IR3IR2IR1IR0默认优先级优先级可编程改变循环优先级方式
中断源轮流处于最高优先级,即自动中断优先级循环初始优先级顺序可用编程改变某中断请求IRi被处理后,其优先级别自动降为最低,原来比它低一级的中断上升为最高级
IR7IR6IR5IR4IR3IR2IR1IR07654321021076543最低级最高级最高级最低级ISR内容IR7IR6IR5IR4IR3IR2IR1IR0IR4的服务结束以前0101000001000000IR4的服务结束以后ISRi中断嵌套方式在中断处理过程中允许被更高优先级的事件所中断称为中断嵌套。8259A有两种中断嵌套方式:普通全嵌套方式(默认方式)
一中断正被处理时,只有更高优先级的事件可以打断当前的中断处理过程而被服务。特殊全嵌套方式
一中断正被处理时,允许同级或更高优先级的事件可以打断当前的中断处理过程而被服务。注:特殊全嵌套仅用于多个8259A级连时的主8259A,而不能用于从属8259A或单8259A系统。D.主8259AIR0IR1IR2IR3IR4IR5IR6IR7一般嵌套方式:从片的INT被主片封锁,故更高级别的IR0-IR2中断也无法得到响应特殊嵌套方式:因主片不封锁从片的INT,故级别高的IR0-IR2中断可以得到响应。(但IR3-IR7仍被本从片封锁)C.假定IR3发生中断,并获得服务一般嵌套方式:IR4的中断被服务时,这些中断将被封锁。B.特殊嵌套方式:IR4的中断被服务时,只封锁IR5-IR7。A.INTE.从8259AINTIR0IR1IR2IR3IR4IR5IR6IR7一般全嵌套方式与特殊全嵌套方式的区别
去CPU8259A使用的优先级设置方式全嵌套方式8259A初始化之后未作其他优先级方式的设置,中断优先级0~7处理,0最高。特殊全嵌套方式基本与全嵌套方式相同,只是处理某一级中断时,如果有同级的中断请求,也给予响应,从而实现一种对于同级中断请求的特殊嵌套。一般用于8259A级联的系统中,主片工作在特殊全嵌套方式,从片处于其他优先级方式。优先级自动循环方式多个中断源优先级相当的场合。一个设备中断服务后,自动将优先级将为最低。初始化时,最高优先级为0。优先级特殊循环方式与优先级自动循环方式比,最低优先级由编程设定。如,设IR5为最低优先级,IR6则为最高。2.中断结束处理方式当某一IRi中断被服务时,ISR中的相应位ISRi=1。当服务结束后,则必须清零该ISRi位,即ISRi=0。使ISRi=0是通过向8259A发出中断结束命令(EOI命令)实现的。三种EOI命令自动EOI(AEOI)——(自动EOI方式)非指定EOI(NSEOI)——(一般EOI方式)指定EOI(SEOI)——(特殊EOI方式)
AEOI(自动EOI方式):在第2个INTA结束时,由8259A使ISRi自动复位;因不保留当前正在服务的中断的状态,故AEOI不能用于中断嵌套方式NSEOI(一般EOI方式):由CPU发出正常EOI命令,该EOI命令使ISRi=1的位中优先级最高的那一位复位。用于普通全嵌套方式
SEOI(特殊EOI方式):非全嵌套方式下,用当前的ISR无法确定哪一级中断为最后响应和处理的中断,所以要采用这种结束方式。由CPU发出一条SEOI命令,该EOI命令中指出了所要复位的ISR的位号。中断服务程序┇向从PIC发EOI命令读从PIC的ISR全0?向主PIC发EOI命令YIRET恢复现场N特殊全嵌套方式下的EOI处理只有当从PIC的中断全部处理完后,才能向主PIC发EOI命令3.屏蔽中断源的方式普通屏蔽方式:IMR屏蔽字决定了允许或禁止某位IRi所对应的中断:IMi=1禁止,IMi=0允许。特殊屏蔽方式:提供了允许较低优先级的中断能够得到响应的特殊手段。原理:假定当前正在处理IR6,先进入特殊屏蔽方式,然后设置IM6=1。这时,除IR6外的所有中断请求均能得到响应。一般在中断处理程序中使用。特殊屏蔽方式中只能用SEOI命令结束中断。4.中断触发方式边沿触发IRi出现上升沿表示有中断请求,中断请求输入端出现上升沿触发信号后,可一直保持高电平电平触发IRi出现高电平表示有中断请求中断得到响应后,输入端必须及时撤除高电平,以防不该有的第二次中断在第1个INTA结束前,IRi必须保持高电平
查询方式设备通过8259A发中断请求信号,但8259A不使用INT信号向CPU发中断请求CPU内部中断运行触发起复位,禁止外部对CPU的中断请求CPU使用软件查询确认中断源对外设来讲是中断方式请求服务,对CPU来讲是查询方式确定服务对象5.连接总线方式缓冲方式多片级联的系统中,8259A使用总线驱动器和数据总线连接。SP/EN端与总线驱动器的允许端连接,在输出状态字或中断类型码时,SP/EN为低电平,用于启动总线驱动器非缓冲触发用于单片或片数很少的级联系统中SP/EN作为输入端,表明8259A的主从关系6.级联工作方式单片8259A可支持8个中断源;采用多片8259A级连,可最多支持64个中断源。n片8259A可支持7n+1个中断源;级连时只能有一片8259A为主片,其余的均为从片;涉及到的8259A引脚包括:CAS0-CAS2SP/ENIRiINT四.8259A编程字8259A的控制命令分为初始化命令字ICWICW1~ICW4向8259A写入ICW过程称为初始化编程操作命令字OCW
OCW1~OCW3向8259A写入OCW过程称为操作方式编程(一)初始化命令字ICW1(InitialCommandWord,初始化字):芯片控制初始化命令字
A0=0,D4=1
表示对ICW1编程D0(IC4)D0=1需要ICW4;D0=0不需要ICW4(默认ICW4为全0)A00IC4SNGLADILTIM1A7A6A5D7D6D5D4D3D2D1D0D1(SNGL)D1=1为单片8259工作方式;D1=0为级联工作方式,此时要用ICW3指明级联端D2(ADI)指明8080/8085系统中地址间距,8086系统不用D3(LTIM)D3=1中断请求是电平触发方式;D3=0上升沿触发方式。A00IC4SNGLADILTIM1A7A6A5D7D6D5D4D3D2D1D0D5~D7(A5~A7)8080/8085系统中断服务程序页面地址,8086系统不用注:初始化命令字一般在初始化8259时才写入,而且写入有严格的顺序,先写ICW1,最后写ICW4A00IC4SNGLADILTIM1A7A6A5D7D6D5D4D3D2D1D0ICW2:中断类型码的初始化命令字A0=1,跟在ICW1后表示对ICW2编程T7~T3
为8086系统中的中断类型码的高5位,低3位根据申请端自动填充。T2~T0:最低3位为中断源的序号IRn000~111分别对应IR0~IR7由8259A根据中断源的序号自动填入
例若ICW2=00001000B,则8259A的IR3引脚上的中断请求的中断类型码为00001011即0x0BA01D7D6D5D4D3D2D1D0A15/T7A14/T6A13/T5A12/T4A11/T3A10A9A8ICW3(级联控制字):主/从芯片初始化命令字
A0=1,且ICW1的D1=0(SNGL),跟在ICW2表示对ICW3编程主片Si=1表示对应的IRi引脚接有从片从片ID2~ID0对应从片的标识位,ID2~ID0与从片连接到主片的输入端相对应。A0D7D6D5D4D3D2D1D01S7S6S5S4S3S2S1S0A0D7D6D5D4D3D2D1D0100000ID2ID1ID0主片从片ICW3必须与主从片的连接关系一致:
例如,主片的IR4与从片的INT线连接,主片的ICW3=10H(00010000B),从片的ICW3=04H(00000100B)。中断响应时,主片通过级连线CAS2-CAS0送出被允许中断的从片标识码,各从片用自己的ICW3与CAS2-CAS0比较,二者一致的从片才可发送中断向量码。ICW4(中断结束方式字):方式控制初始化命令字A0=1,且ICW1的D0=1,跟在其他初始化字后表示对ICW4编程D0(pm)
D0=1为8086/8088处理器体系;
D0=0为80/85处理器体系D1(AEOI)
D1=1自动结束中断方式,在第二个INTA清ISR中的对应位;D1=0非自动结束中断方式,中断结束时发EOI命令清ISR中的对应位A0AEOIM/SBUFD7D6D5D4D3D2D1D01000SFNMupmD2(M/S)在缓冲方式下(BUF=1),选择主片和从片,M/S=1为主片,M/S=0为从片。在非缓冲方式下,由SP/EN引脚设定主片和从片。D3(BUF)D3=1为缓冲工作方式,SP/EN为缓冲选通信号。单片系统都置1;D3=0为非缓冲工作方式。A0AEOIM/SBUFD7D6D5D4D3D2D1D01000SFNMupmD4(SFNM)D4=1特殊全嵌套方式,此时允许同级中断再次进入,一般用于多片级联方式;D4=0普通全嵌套方式,禁止同级中断再次进入。A0AEOIM/SBUFD7D6D5D4D3D2D1D01000SFNMupm(二)操作命令字
OCW用于设置8259的工作状态在初始化后写入OCW的写入顺序可任意写入地址要求:写入OCW1必须A0=1写入OCW2,OCW3必须A0=0
OCW1
(OperationCommandWord):中断屏蔽操作命令字
A0=1表示设置OCW1Mi=1表示屏蔽IRi输入中断请求例屏蔽键盘
IN AL,22H ORAL,02H/ANDAL,0FDH OUT22H,ALA0D7D6D5D4D3D2D1D01M7M6M5M4M3M2M1M0OCW2:设置优先级循环及中断结束方式A0=0,且D4D3
=
00,表示对OCW2编程R优先权循环状态
R=1优先权自动循环;R=0优先权不循环SL
设定标志,指明L2、L1、L0是否有效。
SL=1由L2、L1、L0指明中断号或最低优先权EOI
中断结束命令标志,为1,非自动结束方式时清ISi
一般EOI指令为MOVAL,20HOUT20H,ALA0D7D6D5D4D3D2D1D00RSLEOI00L1L0L2RSLEOI001非特殊EOI结束中断命令,清除当前的中断响应011特殊EOI命令,清除由L2L1L0指示的中断响应101特殊EOI命令,清除当前的中断响应,优先级循环一次100设置8259A在中断自动结束模式下按优先级自动循环方式工作000取消8259A在中断自动结束模式下的优先级自动循环工作方式111结束由L2~L0指示的中断,并使L2~L0为最低优先级110设定最低优先级特殊循环,此时由L2~L0指出最低优先级010无操作3.OCW3:设置/取消特殊屏蔽方式,设置中断查询方式,读内部寄存器A0=0,且D4D3
=
01,表示对OCW3编程ESMMSMM11设置特殊屏蔽,只要内部IF=1,无优先级,未屏蔽中断申请均可进入
10取消特殊屏蔽
0*SMM无任何作用A0D7D6D5D4D3D2D1D000ESMMSMM01RRRISPP=1,设置8259A为查询工作方式,此时8259A不发INT信号,CPU通过查询指令决定服务程序。 查询得到格式如下表所示I=1表示有中断请求W2W1W0为当前最高优先级的中断请求中断号A0D7D6D5D4D3D2D1D00W1W0W2IXXXXA0D7D6D5D4D3D2D1D000ESMMSMM01RRRISPP=0,由RR和RIS设置下一个读取的寄存器
RRRIS10在下一个A0=0端口读IRR11在下一个A0=0端口读ISR
若下一个A0=1,则读取IMR寄存器
例:读取ISR到AL中;读取IMR到AL中
moval,0BHmoval,0AHout20H,alout20H,alINal,20HINal,22H
A0D7D6D5D4D3D2D1D000ESMMSMM01RRRISP8259A的工作过程1.中断源通过IR0~IR7向8259A发中断请求,使得8259A的中断请求寄存器IRR的相应位置1。2.IRR中经中断屏蔽寄存器IMR允许后的置位位进入优先权判别器PR,PR将其中最高优先权的中断请求从INT输出,送至CPU的INTR端。3.若CPU处于开中断状态,则在当前指令执行结束后,启动中断响应总线操作,发出两个负脉冲作为响应信号。4.8259A接收到第一个负脉冲,完成如下工作:(1)使ISR相应位置1,表示CPU已为该中断请求服务。(2)使IRR的相应位清0。5.8259A接收到第二个负脉冲,将中断类型号送上数据总线。中断类型号由用户编程和中断请求引脚IRi的序号i共同决定(CPU读取中断类型号,经响应过程后,进入中断服务程序,直到服务结束返回)。6.若8259A工作在自动结束中断方式AEOI,则8259A清除ISR的相应位,否则直至中断服务结束,发出EOI命令,才能使ISR中的相应位清0。五.8259A初始化编程举例(一)8259A初始化编程顺序级联方式?ICW1ICW2ICW3要ICW4?ICW4NYYN(二)IBMPC/XT机单片8259A初始化要求:端口地址为20H和22H接收8个中断请求信号为边沿触发选择全嵌套方式,IR0为最高优先级,IR7为最低优先级,缓冲方式设定IR0中断类型码为08H注:8259A的地址线A0连接到系统地址总线的A1上A0AEOIM/SBUFD7D6D5D4D3D2D1D01000SFNMupmICW4A00IC4SNGLADILTIM1A7A6A5D7D6D5D4D3D2D1D0ICW1A01XXXT3T4T7T6T5D7D6D5D4D3D2D1D0ICW2初始化程序段INTA0_0EQU20HINTA0_1EQU22HMOV
AL,
13H;(00010011B)OUT
INTA0_0,AL;ICW1(边沿触发、单片、写ICW4)MOV
AL,
08H;(00001000B)OUT
INTA0_1,
AL
;ICW2(IR0中断类型码为08H)MOV
AL,
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年巴音郭楞年货运从业资格证
- 2025年池州货车上岗证理论模拟考试题库
- 2024年度医院陪护人员雇佣合同3篇
- 2025废料买卖交易合同
- 2024年信用卡借款条款3篇
- 2024年度金融投资生意合作合同协议3篇
- 2025建设工程施工承包合同农村饮水安全工程施工承包合同
- 2024年二次抵押借款房产合同3篇
- 2024年标准型吊车买卖合同
- 烟草企业烟草浸泡液水质维护条例
- 人工智能技术咨询行业可行性分析报告
- 2024 年度校长述职报告:坚守教育初心铸就卓越未来
- 2024年建筑施工起重机械设备安全管理制度(3篇)
- 2024年采购工作规划
- 机电传动控制自动运输线-课程设计
- 知行合一 - 社会实践•创新创业(江西师范大学)知到智慧树章节答案
- 城市排水系统维护员合同范例
- 人教版英语八年级上册《Unit 10 If you go to the party,you'll have a great time!》大单元整体教学设计2022课标
- 2024年度文化旅游产业投资与运营合同6篇
- 胸痛的诊断及护理
- 列管式(正丁醇)换热器设计
评论
0/150
提交评论