微机原理:第6章 中断剖析

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

第6章中断技术中断:举个日常生活中的例子,比如说我正在厨房用煤气烧一壶水,这样就只能守在厨房里,苦苦等着水开——如果水溢出来浇灭了煤气,有可能就要发生一场灾难了。等啊等啊,外边突然传来了惊奇的叫声“怎么不关水龙头?”于是我惭愧的发现,刚才接水之后只顾着抱怨这份无聊的差事,居然忘了这事,于是慌慌张张的冲向水管,三下两下关了龙头。门外忽然又传来了铿锵有力的歌声,我最喜欢的古装剧要开演了,真想夺门而出,然而,听着水壶发出“咕嘟咕嘟”的声音,我清楚:除非等到水开,否则没有我享受人生的时候。这个场景跟中断有什么关系呢?第6章中断技术§1中断概述§280x86中断系统§3中断控制器8259A学习指导和要求掌握:中断的基本概念;中断的处理过程;中断类型和中断向量表;8295A的工作方式,初始化编程和应用。一、中断系统的功能中断:由于某种外部或内部事件的作用,强迫CPU停止当前正在执行的程序,转去为该事件服务,待服务结束后,又能自动返回到被中断的程序中继续执行。§1中断概述请求中断IRET中断服务程序入口断点程序一个完整的中断系统:•设置中断源,确定它们中断请求的方式•识别中断源,并能转去执行其中断服务程序•确定中断源的优先级和中断的嵌套方式•中断现场的保护和恢复中断技术可以实现:•CPU与外部设备并行工作•实时信息监测和处理•故障自动监测和处理•分时操作中断处理过程:•中断请求:由中断源向CPU发中断请求信号•中断响应:CPU在当前指令执行结束后查询是否有中断请求,若有,在条件满足的条件下响应中断请求,并做相应处理•中断处理:执行中断处理程序•中断返回:由IRET指令从堆栈中弹出断点STI;IF=1IRET断点中断请求中断处理中断响应:硬件完成:•标志位入栈•关中断IF=0•断点入栈•取中断程序入口中断返回入口(INTR)§280x86中断系统中断控制逻辑8259AIR0IR1IR7NMIINTRINTAINTINTA……一、中断类型不可屏蔽中断可屏蔽中断内部中断(异常)CPU80x86CPU能处理的中断类型共256种(见教材表6-1),每一种中断分配一个中断类型号,即0~255(或00H~FFH)。其中,0~17分配给内部中断(2号分配给不可屏蔽中断NMI);18~31保留,供开发使用;32~255分配给可屏蔽中断INTR,供用户使用。1.外部中断由外部设备通过硬件触发请求的方式引起的中断。有如下两种:NMI:不可屏蔽中断,边沿触发(低到高跳变),一旦NMI有效,CPU立即响应。INTR:可屏蔽中断,电平触发(高有效)当IF=1(STI开中断)时,允许CPU响应INTR请求;当IF=0(CLI关中断)时,禁止CPU响应INTR请求。STI;IF=1IRET断点(INTR)中断请求中断处理中断响应硬件完成:•标志位入栈•关中断IF=0•断点入栈•取中断程序入口中断返回入口INTR中断处理过程:2.内部中断(异常)根据CPU对中断的处理方法不同分为下列3种:(1)故障:指令启动后执行前检测到的异常,异常处理后返回该指令继续执行。(2)陷阱:断点或中断指令引起。异常处理后返回该指令的下一指令继续执行。(3)终止:硬件错误或系统错误引起。由于无法确定异常的位置,程序不能继续执行,异常处理需重新启动系统。二、中断优先级及中断处理流程1.中断类型优先级:内部中断(单步执行除外)高NMI:不可屏蔽中断TNTR:可屏蔽中断单步执行:TF=1低中断相关的指令STIIF=1,允许可屏蔽中断请求进入CLIIF=0,不允许可屏蔽中断请求进入INTn,软中断IRET,中断返回INTO,溢出中断NMI?INTR?TF=1?取下一条指令IF=1?中断响应取中断类型号标志入栈清除IF,TF断点入栈取中断服务程序入口地址中断处理断点、标志位出栈2.中断处理流程有无有无有无是有无IRET类型号2IF=1?类型号1是当前指令内部中断?类型号n三、实模式下的中断调用特点:由中断向量表提供中断服务程序的入口地址。中断向量表建立在内存最低端的1KBRAM区,地址范围为000H~3FFH,可存放256个中断向量。0000H1004H2008H300CH4010H5014H6018H322553FCH除法错中断单步中断NMI中断断点中断溢出中断类型5H中断类型FFH中断…………中断向量表地址:V=4n4n+04n+14n+24n+3入口偏移地址入口段基址0~17:内部中断18~31:备用32~255:用户中断向量表类型号n中断向量表地址:4n中断服务程序入口地址设置中断向量——25H功能调用入口参数:(AH)=25H(AL)=n(中断类型码)(DS:DX)=中断向量程序:CLI;IF=0,关中断MOVAL,40HMOVDX,SEGINT-PMOVDS,DXMOVDX,OFFSETINT-PMOVAH,25HINT21HSTI;IF=1,开中断INT-P:;中断服务程序IRET;中断返回…………..设置中断向量——直接地址传送程序:CLI;IF=0,关中断MOVAX,0MOVES,AXMOVBX,40H*4MOVAX,OFFSETINT-PMOVES:WORDPTR[BX],AXMOVAX,SEGINT-PMOVES:WORDPTR[BX+2],AXSTI;IF=1,开中断INT-P:;中断服务程序入口IRET;中断返回………..…获取中断向量——35H功能调用入口参数:(AH)=35H(AL)=n(中断类型码)出口参数:(ES:BX)=中断向量获取中断向量程序段如下:MOVAL,40HMOVAH,35HINT21H;(ES:BX)=中断向量§3中断控制器8259A一、8259A引脚信号与结构1.引脚信号12345678910111213142827262524232221201918171615VCCA0INTAIR7IR6IR5IR4IR3IR2IR1IR0INTSP/ENCAS2CSWRRDD7D6D5D4D3D2D1D0CAS0CAS1GND8259A级联线,双向,主片为输出,从片输入数据总线缓冲器读/写逻辑级连缓冲/比较器DO--D7RDA0CSwRCAS0CAS1CAS2SP/ENINTAINT控制逻辑中断优先权中断服务电路请求寄存器(PR)寄存器(ISR)(IRR)中断屏蔽寄存器(IMR)2.内部结构……IR0IR1IR7内部寄存器:8259A可访问的内部寄存器有11个:IRR、ISR、IMR和状态寄存器(IRR、ISR、和状态寄存器只能读出,IMR可读写)命令字寄存器:ICW1~ICW4(只能写入)操作字寄存器:OCW1~OCW3(只能写入)端口分配:A0=0:ICW1、OCW2、OCW3、IRR、ISRA0=1:ICW2~ICW4、OCW1、IMR、状态寄存器IRR、ISR、IMR的格式:IRRIR7IR1IR0ISRIMR当IRi有请求时,Di=1;INTA有效时,Di位被清除。当IRi进入服务时,Di=1;服务完毕由硬件或软件清除。当Di=1,IRi请求禁止;当Di=0,IRi请求允许。IR7……IR0IR7……IR0二、8259A的连接方式1.单片方式INTRINTA82C59AINTAINTIR0IR1IR7D7~D0WRRDA0D7~D0WRRDA0CS……译码器A1~A15SP+5V端口地址:直接寻址:A7……A1A0间接寻址:A15……A1A0CSA08259A0偶地址1奇地址I/O指令:直接寻址:A7……A1A0,8位地址由指令提供INAL,nnHOUTnnH,AL间接寻址:A15……A1A0,16位地址由DX提供MOVDX,nnnnHINAL,DXOUTDX,AL2.级联方式CAS0CAS1CAS2CAS0CAS1CAS2SPSP+5VINTAINTIR7……IR1IR0IR7……IR0INTA数据/地址线从片主片INTAINTRINT(1)固定优先级(基本方式)IR7IR6IR0普通自动循环(2)自动循环(OCW2设置)特殊自动循环IR7IR6IR0……高低……三、8259A的工作方式1.优先级高低2.中断嵌套方式(1)完全嵌套方式(基本方式)特点:允许高级中断请求嵌套。适用:单片或级联中的从片。(2)特殊完全嵌套方式(OCW3设置)特点:允许高级和同级的中断请求嵌套。适用:级联中的主片。允许从片完全嵌套3.中断屏蔽方式(1)普通屏蔽方式(IMR设置)通过编程设定IMR中的某些位置“1”,对相应的IRi请求进行屏蔽。(2)特殊屏蔽方式(OCW3设置)只对同级的中断请求进行屏蔽,用于级连方式。4.中断结束方式有三种中断结束方式:(1)自动结束方式(硬件)INTA第二个负脉冲信号自动将ISR中的相应位清除。(2)普通结束方式(软件)由中断服务结束EOI命令(OCW2),清除ISR中当前优先级别最高位。(3)特殊结束方式(软件)由中断服务结束EOI命令(OCW2),清除ISR中指定位。适合无多极中断嵌套适合完全嵌套如何对ISR清零M7M6M5M4M3M2M1M0操作命令字OCW的格式1.OCW1格式功能:设置中断屏蔽字,写入IMR中。当Mi=1,对应的IRi被屏蔽。例如:若屏蔽IR1、IR4请求:MOVAL,00010010BOUT21H,AL;IMR的地址为21HA0=12.OCW2格式功能:设置中断结束命令和自动循环方式A0=0RSLEOI00L2L1L0001:普通EOI方式000IR0011:特殊EOI方式001IR1101:自动循环普通EOI方式111:自动循环特殊EOI方式100:设置优先级自动循环命令000:清除优先级自动循环命令110:置位优先权命令(设置最低优先级)111IR7010:无操作……特殊自动循环方式如:设置优先级自动循环方式MOVAL,80HOUT20H,AL;设置自动循环MOVAL,00HOUT20H,AL;复位自动循环…..…………3.OCW3格式功能:设置或清除特殊屏蔽方式和读取寄存器的状态A0=0ESMMSMM01PRRRIS0X:无效0X:无效10:读IRR10:复位特殊屏蔽11:读ISR11:设置特殊屏蔽1:查询状态RIRi1:有请求0:无请求L2L1L0当前处理的最高优先级IRi编码状态寄存器读取IRR寄存器的内容:MOVAL,00001010B;读IRR命令OUT20H,AL;写OCW3INAL,20H;读IRR的内容读取ISR寄存器的内容:MOVAL,00001011B;读ISR命令OUT20H,AL;写OCW3INAL,20H;读ISR的内容读取查询状态寄存器的内容:MOVAL,00001100B;读查询状态寄存器命令OUT20H,AL;写OCW3INAL,20H;读状态寄存器的内容如:设置特殊屏蔽方式MOVAL,68HOUT20H,AL;8259工作在特殊屏蔽方式,MOVAL,48HOUT20H,AL;复位特殊屏蔽…..…………四、8259A的初始化编程ICW1~ICW4:初始化命令字,用于设定8259A的连接和触发方式、中断类型码、中断的结束方式等,初始化编程时写入。写入ICW1写入ICW2级联方式?写入ICW3写入ICW4ynA0=0A0=1A0=1A0=1ICW命令字格式1.ICW1格式(A0=0)功能:设置连接和中断请求的触发方式///1LTIMADISNGLIC41:写入ICW40:不写ICW41:单片0:级联1:间隔为40:间隔为81:电平触发0:边沿触发未用标志位80X86无效T7T6T5T4T3ID2ID4ID0中断向量码高五位000——IR0001——IR1111——IR72.ICW2格式(A0=1)功能:设置中断类型码基址……例如:设ICW2为40H,IR0~IR7的中断类型码为40H~47HS7S6S5S4S3S2S1S03.ICW3格式(A0=1)功能:确定级联时主、从片的接入方式。主片格式:从片格式:00000ID2ID1ID0若IRi上连接从片,则Si=1,否则Si=0从片INT连接至主片的IRi(i=0~7)4.ICW4格式(A0=1

1 / 57
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功