您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 项目/工程管理 > 第6章 中断处理技术及应用
第6章中断处理技术及应用6.1中断的基本概念6.28086/8088的中断系统6.38259A中断控制器6.48259A的综合应用举例6.1中断的基本概念中断是微处理器CPU与外部设备交换信息的一种方式。计算机在执行正常程序的过程中,当出现某些异常事件、某种外部请求或程序预先安排的事件服务时,处理器就暂时中断正在执行的正常程序,而转去执行对异常事件或某种外设请求的处理操作或预先安排的事件服务的程序中去。当处理完毕后,CPU再返回被暂时中断的程序继续执行,这个过程称为中断。6.1.1中断的定义6.1.2中断的处理过程•中断的处理过程:中断请求、中断响应、中断处理和中断返回。1.中断请求当外部设备要求CPU为它服务时,发出一个中断请求信号给CPU进入中断申请,CPU在执行完每条指令后都要检测中断请求输入线,看是否有外部发来的中断请求信号,是否响应取决于CPU允许中断还是禁止中断。若允许中断,则用STI开中断指令打开中断触发器IF,若禁止中断,则用关中断指令CLI关闭中断触发器IF。2.中断响应•当CPU检测到外部设备有中断请求时,即INTR高电平有效,CPU又处于允许中断状态,则CPU就进入中断响应周期,在中断响应周期,CPU将自动完成如下操作:(1)连续发出两个中断响应信号完成一个中断响应周期。(2)关中断,CPU一旦响应中断,便要立即将IF位清零,以避免在中断过程中或进入中断服务程序后受到其他中断源的干扰,只有中断处理程序中出现开中断指令STI时,才允许CPU接收其他设备的中断请求。(3)保护处理的现行状态,即保护现场。这包括将断点地址及程序状态字PSW(即FLAGS内容)压入堆栈。所谓断点,是指CPU响应中断前指令指针IP及代码段寄存器CS中所保留的下一条指令的地址。程序状态字是现行程序运行结果产生的状态标志和控制标志,在执行中断处理程序前,通过内部硬件自动将断点地址及PSW压入堆栈保存起来,从而保证当中断处理程序执行完后能返回原程序。(4)在中断响应周期的第二个总线周期中,读取中断类型号,找到中断服务程序的入口地址,自动将程序转移到该中断源设备的中断处理程序的首地址,即将中断处理程序所在段的段地址及第一条指令的有效地址分别装入CS及IP,一旦装入完毕,中断服务程序就开始执行。6.1.3中断源、中断识别及其优先级1.中断源:是指发出中断申请的外部设备或引起中断的内部原因。2.中断识别及优先级方案:软件查询硬件菊花链式优先级排队电路矢量中断优先级硬件优先级编码比较电路6.1.4中断向量•中断向量与中断向量表:中断服务程序的入口地址。•中断向量表:每一个中断服务程序部有一个唯一确定的入口地址,我们把系统中所有的中断向量集中起来存放到存储器的某段区域内,这个存放中断向量的存储区就叫中断向量表。6.1.5中断嵌套6.28086的中断系统6.2.18086/8088的中断系统结构•8086/8088CPU有一个强有力的中断处理系统,能处理256种不同的中断类型。•8086CPU系统中的中断(源)类型分为两大类,分别是外部中断和内部中断。外部中断是由外部硬件中断源引起的中断。8086CPU共有两条外部中断请求线,分别是INTR和NMI。内部中断是在系统运行程序时硬件出错或某些特殊事件发生而引起的中断,它们均属专用中断,其类型号分别力0、1、3、4。•8086/8088的中断系统中优先级最高的是内部中断(单步中断除外),其次是外部非屏蔽中断和可屏蔽中断,优先级最低的是单步中断。优先级按从高到低的顺序排列如下:•除法出错中断→INTn→溢出中断→NMI→INTR→单步中断6.38259A中断控制器6.3.18259A的外部特性和内部结构6.3.28259A的工作方式•8259A中有两种中断嵌套方式:全嵌套方式和特殊全嵌套方式。全嵌套方式是8259A最常用的一种工作方式。如果对8259A进行初始化后没有设置其他优先级方式,那么8259A就按全嵌套方式工作。此时中断优先权的级别是固定的,按IR0~IR7逐级次之,IR0最高,IR7最低。特殊全嵌套方式。特殊全嵌套方式和全嵌套方式基本相同。惟一不同的地方在于:在特殊全嵌套方式下,当处理某一级中断时,如果有同级的中断请求,那么它也会给予响应,从而实现一种对同级中断请求的特殊嵌套。而在全嵌套方式下,在处理某一级中断时,同级的中断请求是要被屏蔽的,不能予以响应,故而不能嵌套。•8259的循环优先方式分为:优先权自动循环方式和优先权特殊循环方式。优先权自动循环方式一般用于系统中有多个相同优先权的中断源的场合。在这种方式下,当某一个中断源受到中断服务后,它的优先权就自动降为最低,而与之相邻的优先级就升为最高。优先权特殊循环方式与优先权自动循环方式相比仅有一点不同,就是在优先权特殊循环方式下,一开始的最低优先权是由编程确定的,而不是自动规定,从而也就确定了最高优先权。例如,编程时确定IR5为最低优先权,则IR6就是最高优先级。•中断屏蔽方式分为:普通屏蔽方式和特殊屏蔽方式普通屏蔽方式是通过编程将中断屏蔽字写入IMR而实现的。若写入某位为1,对应的中断请求被屏蔽,为0则对应的中断请求被开放。特殊屏蔽方式是用于这样一种特殊要求的场合,即在执行较高级的中断服务时,希望开放较低级的中断请求。1、8259A的编程结构8259A的编程结构中,中断管理是通过8259A初始化时写入初始化命令字和操作命令字来设置的。6.3.28259A的控制字及中断操作能力操作命令字OCW命令字8259的编程,是通过对8259中两类命令字的设置来实现的.ICW1--芯片控制初始化命令字ICW2--设置中断类型号初始化命令字ICW3--标识主/从片初始化命令字ICW4--方式控制初始化命令字OCW1----中断屏蔽操作命令字OCW2----优先权循环方式和中断结束方式操作字OCW3----特殊屏蔽方式和查询方式操作字处始化命令字ICW(1)ICW1--芯片控制初始化命令字(必须写入偶地址端口)格式:0XX1LTIM0SNGLIC4X8086/8088系统中不使用1:电平触发(高电平)0:边沿触发(上升沿)1:单级使用0:级联使用1:需要设置ICW40:不需要设置ICW4例:ICW1EQU13H;13H=00010011BMOVAL,ICW1;OUT20H,AL;单片8259,上升沿触发,要求设置ICW4ICW4方式控制初始化ICW11、处始化命令字ICW2)ICW2--设置中断类型号初始化命令字(必须写入奇地址端口)对应IR0-IR7中响应哪级中断(000-111)1T6T5T4T3000T7用户自己设定注:8259中IR0端对应的中断类型号为中断类型号的基值,它是可以被8整除的正整数。例1:ICW2的值为20H,则提供外部中断的类型号为:IR0---20HIR1---21HIR7---27HPC/XT系统中T7—T3的值为00001则提供外部中断的类型号为:IR0---08HIR1---09HIR7---0FH即编程为:MOVAL,08HOUT21H,AL格式:ICW23)ICW3--标识主/从片初始化命令字(必须写入奇地址端口)说明:8259有级联时才设置,即ICW3才有意义ICW1的D1位(SNGL=0)时,才设置ICW3ICW3的具体格式与本片是主/从有关格式1IR7IR4IR5IR3IR2IR1IR0IR6IRi=0:表示IRi端上未接8259从片1:表示IRi端上接有8259从片主片10000ID2ID1ID00从8259的识别地址从片例:对于主片ICW3=F0H(11110000)上述特征表示:IR7,IR6,IR5,IR4接有从片IR3,IR2,IR1,IR0没接从片对于从片ID2--ID0=000--111表示从片接在主片的哪个中断请求输入端上,如ID2--ID0=011则说明从片接在主8259的IR3端上ICW34)ICW4--方式控制初始化命令字(必须写入奇地址端口)说明:ICW1的IC4=1时,要求预置ICW4,8086/8088系统必须预置1000SFNMBUFM/SAEOIuPM1:特殊完全嵌套方式0:非特殊完全嵌套方式1:与86/88配和0:与80/85配和1:自动EOI方式0:非自动EOI方式非缓冲方式0X缓冲方式从825910主825911格式:ICW48259初始化流程用ICW1设置是否级联请求信号格式后面是否用ICW4用ICW2设置中断类型码是否为级联方式?本片为主片吗?设ICW3,各位对应IR0-IR7的连接情况设ICW3,高五位为0低三位为标识码要用ICW4吗?用ICW4设置是否为特殊全嵌套方式是否为缓冲方式是否为自动结束中断方式是否为86/88系统NENDNY•8259工作必须对其初始化ICW1必须写入偶地址端口,ICW2--ICW4必须写入奇地址端口ICW1--ICW4的设置次序是固定的不可颠倒.每片8259都需设置ICW1,ICW2.而ICW3,ICW4则不一定.有级联时,需设置ICW3(主/从)86/88系统需要设置特殊全嵌套方式、缓冲方式、中断自动结束方式方式下,需设ICW4ICW1--初始化命令字ICW2--设置中断类型号ICW3--主/从初始化ICW4--中断方式控制字功能8259有3个操作命令字OCW1--OCW3设置时端口地址有严格的规定:OCW1必须写入奇地址端口,OCW2--OCW3必须写入偶地址端口,1M7M6M5M4M3M2M1M0Mi=1:屏蔽由IRi引入的中断请求0:允许由IRi引入的中断请求例:现OCW1=06H(00000110)则表示的特征是:IR1,IR2引腿上的中断请求受到屏蔽2、操作命令字OCW—操作命令字是在应用程序内部设置的,设置时,次序上没有严格的要求.1)OCW1----中断屏蔽操作命令字(写入奇地址端口)(可读)格式:2)OCW2----优先权循环方式和中断结束方式操作字(写入偶地址端口)功能:•决定8259是否采用优先级循环方式,•中断结束采用普通/特殊的EOI结束方式0RSLEOI00L0L1L2RSLEOI三位的含义:R-决定了系统的中断优先级是否按循环方式设置1:中断优先级按循环方式设置(每个中断轮流成为最高级)0:设置为固定优先级(0级最高,7级最低)SL-决定了OCW2中L2--L0是否有效1:L2-L0有效0:L2-L0无效EOI-中断结束命令位1:执行中断结束命令0:不执行中断结束命令L2-L0的用处:当OCW2设置为特殊EOI结束命令时,它具体指出了要清除当前ISR中的那一位.当OCW2设置为特殊优先级循环方式命令时,它指出了循环开始时设置的最低优先级001--普通EOI方式CPU向8259发普通EOI指令011--特殊EOI方式CPU向8259发特殊EOI指令(含清除的中断级别101--普通EOI循环方式,(被响应后降为最低)111--特殊EOI循环方式(最低级由程序确定)000--自动EOI循环(复位)第二个INTA后自动对ISR位清0,改变级别与普通EOI循环方式相同100--自动EOI循环(置位)110--置位优先权命令010--无效000--IR0001--IR1010--IR2011--IR3100--IR4101--IR5110--IR6111--IR70RSLEOI00L0L1L2OCW2的格式:MOVAL,20HOUT20H,AL3)OCW3----特殊屏蔽方式和查询方式操作字(写入偶地址端口)功能:设定特殊屏蔽方式设置对8259寄存器的读出设置中断查询工作方式格式:0XESMMSMM01PRRRIS0X:无效10:特殊屏蔽方式复位11:特殊屏蔽方式置位1:查询8259状态0:不查询0X:无效10:下次RD有效,读IRR11:下次RD有效,读ISR例6-1设定8259A各命令字的口地址为20H、21H。8259A初始化设定的工作方式为:边沿触发方式、缓冲器方式、EOI方式、中断全嵌套优先权管理方式。根据以上要求,对8259A初始化的程序段如下:MOVAL,
本文标题:第6章 中断处理技术及应用
链接地址:https://www.777doc.com/doc-3404612 .html