七年级英语下册-unit-5-topic-3-section-C-school-life课件-新版_第1页
七年级英语下册-unit-5-topic-3-section-C-school-life课件-新版_第2页
七年级英语下册-unit-5-topic-3-section-C-school-life课件-新版_第3页
七年级英语下册-unit-5-topic-3-section-C-school-life课件-新版_第4页
七年级英语下册-unit-5-topic-3-section-C-school-life课件-新版_第5页
已阅读5页,还剩99页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第10章中断技术第10章中断技术主要内容中断的概念

8088CPU的中断系统中断控制器8259A主要内容§10.1中断概念什么是中断

所谓中断,就是指当CPU正在执行程序时,外设(或其它中断源)向CPU发出请求,CPU暂停当前程序的执行,转向该外设服务(或称中断服务)程序,当中断服务程序运行结束后,返回原程序继续执行的过程。

处理:外部紧急事件、异常情况§10.1中断概念中断服务程序(Interrupt-servicerouting),处理随机事件的特殊程序,又被称为中断处理程序(interrupthandler)。中断源,引起CPU中断的随机事件,或能发出中断请求的其它来源。中断服务程序(Interrupt-servicerouti中断技术是现代计算机系统中很重要的一项功能,可以应用于以下几个方面的处理。1)故障检测和自动处理2)实时信息处理3)并行操作,控制和管理多台外设记终端4)分时操作中断技术是现代计算机系统中很重要的一项功能,可以应用于以下几一什么是中断断点主程序中断服务程序中断请求对外设进行处理继续执行返回断点???中断源有哪些怎样识别中断源怎样进入中断服务怎样返回断点怎样管理中断源一什么是中断断点主程序中断服务程序中断请求对外设继续执行返中断的过程向CPU发出中断CPU允许响应此中断压栈保护现场及断点找到中断服务程序的入口地址执行中断服务程序恢复现场及断点即包括:中断请求,中断判优,中断响应,中断处理,中断返回。中断的过程关于中断优先级和优先权的概念中断优先级:决定是否能够实现中断嵌套(即高优先级的中断源可以中断低优先级的中断服务。)中断优先权:决定多个中断源同时请求时先响应哪个中断请求。主要两种设置方法:

1、多个优先级,每个优先级一个中断源,在这种情况下优先级包含优先权。

2、优先级不太多,每个优先级中多个中断源,同一优先级中优先权不同,同级不嵌套。关于中断优先级和优先权的概念中断优先级问题的解决方法

解决优先级的问题一般可有三种方法:软件查询法、简单硬件方法及专用硬件方法。中断优先级问题的解决方法中断系统应具有的功能(1)实现中断及返回(2)能实现优先权排队(3)高级中断源能中断低级的中断处理中断系统应具有的功能怎样管理中断源1、中断源较少时可使用固定中断服务入口地址。如51单片机2、中断源较多时,可以由外设给出低位地址,由CPU提供高位(页)地址,合成中断服务出入口地址。如Z80CPU3、中断源更多时,则可根据中断类型号找出中断服务出入口地址。如8086CPU怎样管理中断源中断响应与调用子程序的区别调用子程序事先安排好的主动行为保护断点为主程序服务一般与外设无关中断响应随机的、被动行为保护断点及现场为外设服务为处理各种事件服务软件中断和调用子程序很相似,调用方便中断响应与调用子程序的区别调用子程序中断响应§10.28086的中断技术8088的中断系统采用向量中断机制能够处理256个中断用中断向量号0-255区别可屏蔽中断还需要借助专用中断控制器Intel8259A实现优先权管理§10.28086的中断技术8086提供两条外部中断请求线,和一条与中断有关的控制线:NMI,INTR,INTA(中断响应)。8086中断有两大类(1)软件中断(内部中断),由指令的执行所引起的中断;(2)硬件中断(外部中断),由外部主要是外设的请求引起的中断。8086提供两条外部中断请求线,和一条与中断有关的控制线:N一、中断类型和中断向量表1、中断类型号

8086用0-255来区分256个不同中断源,并对应给出中断向量。0~4:5个内部中断,有固定的定义和处理功能;5~31:系统保留,用户一般不应使用32~255:用户使用作为硬件或软件中断,也可不用,作为数据存储区。一、中断类型和中断向量表2、中断向量表

8086/8088系统支持最多256个中断,对应每一个中断,都有一个中断服务程序,该中断服务程序的入口地址称为中断向量。每个中断向量占用4个字节,前两个字节为服务程序的IP(偏移量),后两个字节为服务程序的CS(段地址)。

2、中断向量表每个中断类型对应一个中断向量。256个中断类型,其中断向量构成一个中断向量表,放在0段的0~3FFH区域内,每个占4个字节(共1KB)。存放中断向量的位置=中断类型号×4(0段)开始的4个内存单元。向量号为N的中断向量的物理地址=N×4每个中断类型对应一个中断向量。向量号为N的中断向量的物理地址8086的中断向量表返回向量号255的CS值用户中断(向量号255)3FCH向量号255的IP值……向量号2的CS值非屏蔽中断(向量号2)008H向量号2的IP值向量号1的CS值单步中断(向量号1)004H向量号1的IP值向量号0的CS值除法错中断(向量号0)000H向量号0的IP值8086的中断向量表返回向量号255的CS值用户中断3FCH例:20H号中断的中断服务程序的入口地址(中断向量)4030H:2010H,则此中断向量占用的内存单元为:0000H:0080H开始的4个单元0080H0081H0082H0083H10H20H30H40HIPCS例:20H号中断的中断服务程序的入口地址(中断向量)4030二、中断指令和中断屏蔽1、中断指令CLI:清中断标志,IF=0,禁止可屏蔽中断;STI:中断标志置位,IF=1,开放可屏蔽中断;INTn:软件中断CPU工作:(Flags)((SP)-2)

先复制TF状态,然后TF,IF=0(CS)((SP)-4)(4*n+2)(CS)(IP)((SP)-6)(4*n)(IP)二、中断指令和中断屏蔽IRET:中断返回CPU的工作:((SP))IP((SP)+2)CS((SP)+4)flag(SP)+6SPINTO溢出中断(INT4)HLT暂停等待外部中断或复位IRET:中断返回2、中断的屏蔽中断允许标志位(IF),只能影响可屏蔽外部中断,不影响软件中断、内部中断以及非屏蔽的外部中断。系统响应中断时,使IF=0,保证响应过程不被打断。若有优先级高的中断,在服务子程序中使IF=1。2、中断的屏蔽3、IF中断标志IF=0,关中断、禁止中断、中断屏蔽,因此可屏蔽的中断不会被响应。系统复位任何一个中断响应执行CLI将使IF=0IF=1,开中断、允许中断、中断开放,可屏蔽的中断会被响应。执行STI将使IF=1执行IRET,恢复原IF3、IF中断标志非屏蔽中断源中断逻辑INTO指令(4)单步中断(1)除法错误(0)INTN指令CPUINTRNMI(2)可屏蔽中断源8259A中断控制器IR0IR1IR2IR3IR4IR5IR6IR7外设中断源

INTA内部中断除法错中断指令中断溢出中断单步中断外部中断非屏蔽中断可屏蔽中断三、中断的功能INT3指令非屏蔽中断源中断逻辑INTO单步除法INTNCPUINTR1.内部中断内部中断是由于8088内部执行程序出现异常引起的程序中断利用内部中断,微处理器为用户提供了发现、调试并解决程序执行时异常情况的有效途径例如,ROM-BIOS和DOS系统利用内部中断为程序员提供了各种功能调用1.内部中断除法错中断,类型0中断在执行除法指令时,若除数为0或商超过了寄存器所能表达的范围,则产生一个向量号为0的内部中断,称为除法错中断。自动转到0000H~0003H存放的地址执行。例如:movbl,0idivbl ;除数BL=0,产生除法错中断movax,200hmovbl,1divbl ;商=200H,不能用AL表达 ;产生除法错中断除法错中断,类型0中断在执行除法指令时,若除数为0或商超过了溢出中断,类型4中断在执行溢出中断指令INTO时,若溢出标志OF为1,则产生一个向量号为4的内部中断,被称为溢出中断有必要时用INTO引入,用于测试溢出标志。跟在有符号数的计算后面,程序员知道是否为有符号数,对于无符号数则无所谓。例如:movax,2000haddax,7000h

;2000H+7000H=9000H,溢出:OF=1into ;因为OF=1,所以产生溢出中断溢出中断,类型4中断在执行溢出中断指令INTO时,若溢出标单步中断,类型1中断若单步中断TF为1,则在每条指令执行结束后产生一个向量号为1的内部中断,称为单步中断例如:DEBUG.EXE调试程序的单步命令T就利用单步中断实现对程序的单步调试单步中断,类型1中断若单步中断TF为1,则在每条指令执行结束断点中断,类型3中断在调试程序时使用,将某处的一条指令替换为INT3指令。需要保存原内容,调试完后回复原指令。比较特别(生成一个字节的指令代码:11001100),常用于程序调试,被称为断点中断例如:DEBUG.EXE调试程序的运行命令G设置的断点,就是利用INT3指令实现的断点中断,类型3中断在调试程序时使用,将某处的一条指令替换为2、软件(指令)中断在执行中断调用指令INTn时产生的一个向量号为n(0~255)的内部中断,称为指令中断。被成为向量化的子程序调用,一般会是功能比较复杂的仿真子程序。所有的外部中断也可以用指令调用。2、软件(指令)中断3、外部中断外部中断是由于8088外部提出中断请求引起的程序中断利用外部中断,微机系统可以实时响应外部设备的数据传送请求,能够及时处理外部意外或紧急事件外部中断的原因是处理器外部随机产生的,所以是真正的中断(Interrupt)内部中断的原因是处理器执行程序出现异常,所以经常被称为异常(Exception)3、外部中断⑴非屏蔽中断通过非屏蔽中断请求信号向微处理器提出的中断请求,微处理器无法禁止,将在当前指令执行结束予以响应,这个中断被称为非屏蔽中断8088的非屏蔽中断的向量号为2,非屏蔽中断请求信号为NMI非屏蔽中断主要用于处理系统的意外或故障。例如:电源调电前的数据保护存储器读写错误的处理⑴非屏蔽中断通过非屏蔽中断请求信号向微处理器提出的中断请求⑵可屏蔽中断外部通过可屏蔽中断请求信号向微处理器提出的中断,微处理器在允许可屏蔽中断的条件下,在当前指令执行结束予以响应,同时输出可屏蔽中断响应信号,这个中断就是可屏蔽中断8088的可屏蔽中断请求和响应信号分别是INTR和INTA*;由IF标志控制可屏蔽中断是否允许响应;向量号来自外部中断控制器。⑵可屏蔽中断外部通过可屏蔽中断请求信号向微处理器提出的中断申请在INTR线上发出信号,可以被CPU查到,有要在服务完成前及时撤销,以防重复触发。INTA*作为中断应答信号,送出两个负脉冲,第一个通知外设得到响应,第二个将中断类型号送上数据线。8088通常需要配合中断控制器8259A共同处理可屏蔽中断可屏蔽中断主要用于主机与外设交换数据明确IF标志的状态是关键申请在INTR线上发出信号,可以被CPU查到,有要在服务完成8086/8088的中断响应过程NMIN软件中断INTRTF=1中断响应周期读中断向量号下条指令现行指令IF=1NNNNYYYYY查询中断的顺序,决定了各种中断源的优先权软件中断除法错中断指令中断溢出中断非屏蔽中断可屏蔽中断单步中断高低8086/8088的中断响应过程NMIN软件中断INTRTFY还有NMITEMP=1标志寄存器入栈TEMP=TF,IF=TF=0CS:IP入栈获取中断向量执行服务程序弹出CS:IP弹出标志寄存器返回被中断程序(1)(2)(3)(4)(5)NNY(6)Y还有NMITEMP=1标志寄存器入栈TEMP=TF,IF=内部中断服务程序编写内部中断服务程序与编写子程序类似利用过程定义伪指令PROC/ENDP第1条指令通常为开中断指令STI最后用中断返回指令IRET通常采用寄存器传递参数主程序需要调用中断服务程序调用前,需要设置中断向量设置必要的入口参数利用INTn指令调用中断服务程序处理出口参数内部中断服务程序编写内部中断服务程序与编写子程序类似§10.3中断控制器8259A§10.3中断控制器8259A中断申请管理接口的主要功能:1.

向CPU的引脚INTR发中断申请信号当有多个外设同时发出中断请求时,能按照一定的优先级顺序,向CPU发出中断申请,使CPU能优先响应优先级最高的外部设备的中断申请。2.

送中断类型号

在CPU中断响应周期,针对不同外设的中断请求,向CPU传送不同的中断类型号,使CPU执行相应的中断子程。中断申请管理接口的主要功能:Intel8259A是可编程中断控制器用于管理Intel8080/8085、8086/8088、80286/80386的可屏蔽中断8259A的基本功能一片8259A可以管理8级中断,可扩展至64级每一级中断都可单独被屏蔽或允许在中断响应周期,可提供相应的中断向量号8259A设计有多种工作方式,可通过编程选择Intel8259A是可编程中断控制器8259A的引脚

双列直插式芯片,28个引脚方波键盘保留串口2

硬盘软盘打印机IOW18.2HzA0CS8259A总线A0数据线IORRDWR片选译码IR0IR1IR2IR3IR4IR5IR6IR7A5~A9D0~D7D0~D7VccSP/ENCA0CA1CA2GND+5V20~3FH用于多片8259A级连情况INTAINTINTAINTR串口1

8259A的引脚双列直一、8259A的引脚、结构和工作原理引脚1、D0~D7:8条数据线,与CPU数据总线相连,进行数据交换,写入控制字或送出类型号。2、INT:中断请求,与CPUINTR相连发出中断申请。INTA*:接收来自CPU的响应信号,一般两个负脉冲。RD*:读信号,读CPU某个内部寄存器的内容WR*:写信号,通知CPU接收命令字。一、8259A的引脚、结构和工作原理CS*:片选信号A0:1片8259A占用两个端口地址,一个偶地址(A0=0)较低,一个奇地址(A0=1)较高。IR0~IR7:分别接8个外设中断请求或从片中断请求。CAS0~CAS2:主从结构时,区分不同的从片。SP*/EN*:双向线,(由初始化命令字设置)非缓冲方式:输入SP*=1本片主片,SP*=0本片主片缓冲方式:输出EN*=0有效,数据从8259传向8086,一般用于驱动一个总线驱动器CS*:片选信号关于数据线和地址线的连接8259A只有8根数据线,一般与8086的低8根数据线相连,因此必须把8086地址线的A1与8259A的A0相连。其中A0=0为偶地址

A0=1为奇地址。关于数据线和地址线的连接8259A的内部结构D7~D0INTAINT中断请求寄存器中断屏蔽寄存器数据总线缓冲器IR0IR7读/写控制逻辑级联缓冲器比较器RDWRA0CSCAS0CSA1CAS2SP/EN优先权判别电路中断服务寄存器控制逻辑*保存8条外界中断请求信号IR0~IR7的请求状态;*Di位为1表示IRi引脚有中断请求;为0表示无请求.*保存对中断请求信号IR的屏蔽状态*Di位为1表示IRi中断被屏蔽(禁止),为0表示允许;*各自独立.*保存正在被8259A服务着的中断状态;*Di位为1表示IRi中断正在服务中,为0表示没有被服务.*用以比较正在处理的中断和刚刚进入的中断请求之间的优先级别,以决定是否产生多重中断或中断嵌套.8259的内部控制器。1根据中断请求寄存器IRR、中断屏蔽寄存器IMR的设置情况,通过优先级比较器判定优先级;2向其他部件发出控制信号;3并发出中断请求信号INT;4接受中断响应信号INTA,使中断服务寄存器ISR的相应位置1,IRR的相应位清0;5在INTA第二个负脉冲到来的时候送出中断类型号;6根据中断结束类型对ISR的相应位清0。8259A的内部结构D7~D0INTAINT中断请求寄存器中8259A的内部寄存器中断请求寄存器IRR保存8条外界中断请求信号IR0~IR7的请求状态Di位为1表示IRi引脚有中断请求;为0表示无请求中断服务寄存器ISR保存正在被8259A服务着的中断状态Di位为1表示IRi中断正在服务中;为0表示没有被服务中断屏蔽寄存器IMR保存对中断请求信号IR的屏蔽状态Di位为1表示IRi中断被屏蔽(禁止);为0表示允许8259A的内部寄存器中断请求寄存器IRR优先级比较器(裁决器)用以比较正在处理的中断和刚刚进入的中断请求之间的优先级别,以决定是否产生多重中断或中断嵌套。数据总线缓冲器它是8259A与系统数据总线的接口,是8位双向三态缓冲器。CPU与8259A之间的控制命令信息、状态信息以及中断类型信息,都是通过该缓冲器传送的。读/写控制逻辑CPU通过它实现对8259A的读/写操作。优先级比较器(裁决器)级连缓冲器:用以实现8259A芯片之间的级连,使得中断源可以由8级扩展至64级。控制逻辑电路对整个芯片内部各部件的工作进行协调和控制。8259的中断控制部分有7个寄存器,根据初始化命令字和操作命令字工作。级连缓冲器:中断响应过程CPU在INTA*上给出两个负脉冲第一个负脉冲使8259A作如下的工作:使IRR寄存器暂时失效,不再接收新的申请,第二个负脉冲恢复使当前的ISR中的相应位置1使IRR中的相应位清0第二个负脉冲使中断类型寄存器的ICW2的内容送D0~D7(中断类型码)如果ICW4中的自动结束位为1,则使ISR的相应位清0。中断响应过程CPU在INTA*上给出两个负脉冲1.熟悉8088的中断类型、中断响应过程、中断向量表2.掌握内部中断服务程序的编写补充习题:

1.8088中断允许标志IF在什么情况是0,如何使其为1?

2.8088CPU各种中断的优先权顺序是什么?

3.说明IRET指令的功能。

1.熟悉8088的中断类型、中断响应过程、中断向量表三、8259A的工作方式8259A有多种工作方式,这些工作方式,可以通过编程设置或改变。1.优先级的管理方式(1).全嵌套方式这是8259A默认的优先权设置方式,在全嵌套方式下,8259A所管理的8级中断优先权是固定不变的,其中IR0的中断优先级最高,IR7的中断优先级最低。CPU响应中断后,请求中断的中断源中,优先级最高的中断源,在中断服务寄存器ISR中的相应位置位,而且把它的中断矢量送至系统数据总线,在此中断源的中断服务完成之前,与它同级或优先级低的中断源的中断请求被屏蔽,只有优先级比它高的中断源的中断请求才是运算的,从而出现中断嵌套。

三、8259A的工作方式(2).特殊全嵌套方式特殊全嵌套方式与全嵌套方式基本相同,所不同的是,当CPU处理某一级中断时,如果有同级中断请求,那么CPU也会作出响应,从而形成了对同一级中断的特殊嵌套。特殊全嵌套方式通常应用在有8259A级连的系统中,在这种情况下,对主8259A编程时,通常使它工作在特殊全嵌套方式下。这样,一方面,CPU对于优先级别较高的主片的中断输入是允许的,另一方面,CPU对于来自同一从片的优先级别较高(但对于主片来讲,优先级别是相同的)的中断也是允许、能够响应的。(2).特殊全嵌套方式(3).优先级自动循环方式在实际应用中,中断源优先级的情况是比较复杂的,要求8级中断的优先级在系统工作过程中,可以动态改变。即一个中断源的中断请求被响应之后,其优先级自动降为最低。系统启动时,8级中断优先级默认为IR0—IR7,这时,刚好IR4发出了中断请求,CPU响应之后,若8259A工作在优先级自动循环方式下,则中断优先级自动变为IR5、IR6、IR7、IR0、IR1、IR2、IR3、IR4。(3).优先级自动循环方式(4).优先级特殊循环方式优先级特殊循环方式与自动循环方式相比,只有一点不同,即初始化的优先级(最低)是由程序控制的,而不是默认的IR0—IR7。(4).优先级特殊循环方式2.中断源的屏蔽方式CPU对于8259A提出的中断请求,都可以加以屏蔽控制,屏蔽控制有下列几种方式:(1).普通屏蔽方式:8259A的每个中断请求输入,都要受到屏蔽寄存器中相应位的控制。若相应位为“1”,则中断请求不能送CPU。屏蔽是通过对屏蔽寄存器IMR的编程(操作命令字OCW1),来加以设置和改变的。2.中断源的屏蔽方式(2).特殊屏蔽方式:有些场合下,希望一个中断服务程序的运行过程中,能动态地改变系统中的中断优先级结构,即在中断处理的一部分,禁止低级中断,而在中断处理的另一部分,又能够允许低级中断,于是引入了对中断的特殊屏蔽方式。设置了特殊屏蔽方式后,用OCW1对屏蔽寄存器中的某一位复位时,同时也会使中断服务寄存器ISR中的相应位复位,这样就不只屏蔽了正在处理的等级中断,而且真正开放了其它优先级别较低的中断请求。特殊屏蔽是在中断处理程序中使用的,用了这种方式之后,尽管系统正在处理高级中断,但对外界来讲,只有同级中断被屏蔽,而允许其它任何级别的中断请求。(2).特殊屏蔽方式:3.结束中断处理的方式按照对中断结束(复位中断响应寄存器ISR中相应位)的不同处理,8259A有两种工作方式,即自动结束方式(AEI)和非自动结束方式。而非自动结束方式又可进一步分为一般的中断结束方式和特殊的中断结束方式。3.结束中断处理的方式(1).中断自动结束方式这种方式仅适用于只有单片8259A的场合,在这种方式下,系统一旦响应中断,那么CPU在发第二个INTA脉冲时,就会使中断响应寄存器ISR中相应位复位,这样一来,虽然系统在进行中断处理,但对于8259A来讲,ISR没有相应的指示,就象中断处理结束,返回主程序之后一样。CPU可以再次响应任何级别的中断请求。(2).一般的中断结束方式一般的中断结束方式适用用在全嵌套的情况下,当CPU用输出指令向8259A发一般中断中断结束命令OCW2时,8259A才会使中断响应寄存器ISR中优先级别最高的位复位。(1).中断自动结束方式(3).特殊的中断结束方式在特殊全嵌套模式下,系统无法确定哪一级中断为最后相应和处理的中断,也就是说,CPU无法确定当前所处理的是哪级中断,这时就要采用特殊的中断结束方式。特殊的中断结束方式是指在CPU结束中断处理之后,向8259A发送一个特殊的EOI中断结束命令,这个特殊的中断结束EOI命令,明确指出了中断响应寄存器ISR中需要复位的位。这里,我们还要指出一点,在级联方式下,一般不用自动中断结束方式,而需要用非自动结束中断方式,一个中断处理程序结束时,都必须发两个中断结束EOI命令,一个发往主片,一个发往从片。(3).特殊的中断结束方式4.系统总线的连接方式按照8259A与系统总线的连接方式来分,有下列两种方式:(1).缓冲方式在多片8259A级连的大系统中,8259A通过外部总线驱动器和数据总线相连,这就是缓冲方式。在缓冲方式下,8259的输出信号作为缓冲器的启动信号,用来启动总线驱动器,在8259A与CPU之间进行信息交换。(2).非缓冲方式当系统中只有一片或几片8259A芯片时,可以将数据总线直接与系统数据总线相连,这时8259A处于非缓冲方式下。在这种方式下,8259A的作为输入端设置,主片应接高电平,从片应接低电平。4.系统总线的连接方式5、引入中断请求的方式按照引入中断请求的方式,8259A有下列几种工作方式:

(1).边沿触发方式8259A将中断请求输入端出现的上升沿,作为中断请求信号,上升沿后相应引脚,可以一直保持高电平。

(2).电平触发方式

8259A将中断请求输入端出现的高电平作为中断请求信号,在这种方式下,必须注意:中断响应之后,高电平必须及时撤除,否则,在CPU响应中断,开中断之后,会引起第二次不应该有的中断。5、引入中断请求的方式(3).中断查询方式当系统中的中断源很多,超过64个时,则可以使8259A工作在查询方式下,中断查询方式的特点是:中断源仍往8259A发中断请求,但8259A却不使用INT信号向CPU发中断请求信号。CPU内部的中断允许标志复位,所以CPU对INT引脚上出现的中断请求呈禁止状态。CPU用软件查询的方法来确定中断源,从而实现对设备的中断服务,可见,中断查询方式,既有中断的特点,又有查询的特点,从外设的角度来看,是靠中断的方式来请求服务,但从CPU的角度来看,是用查询方式来确定发中断请求的中断源。查询是通过CPU向8259A发查询命令OCW3来实现的。(3).中断查询方式四、初始化命令字和操作命令字8259根据收到的CPU的命令进行工作,奇命令分为两类:初始化命令字(预置命令字ICW):8259A在进入操作之前,必须由预置命令字来使它处于初始状态。操作命令字OCW:在8259初始化之后,来控制8259A执行不同的操作方式。其可在初始化之后的任何时刻写入8259A。四、初始化命令字和操作命令字(一)初始化命令字(4个)开机时,由初始化程序按一定的顺序写入设8259有两个地址:偶地址、奇地址1、ICW1:芯片控制命令字,偶地址D7~D5:8086不用,随机D4:总是1,与A0=0结合,表示ICW1D3:LTIM设置中断请求的方式LTIM=0,边沿触发LTIM=1,电平触发D7D6D5D4D3D2D1D0XXX1LTIMADISNGLIC4A00(一)初始化命令字(4个)D7D6D5D4D3D2D1D0XD2:ADI8086不用D1:SNGL决定本片是否级联D1=1,只有一片8259AD1=0,多片D0:IC4表明后面是否使用ICW4D0=1,用ICW4D0=0,不用注:16位系统必须使用ICW4,所以对于8086、8088,D0=1常见的命令字为00010011B,即13HD2:ADI8086不用2、ICW2设置中断类型码,奇地址D7D6D5D4D3D2D1D0T7T6T5T4T3XXXA00中断类型码的高5位000IR0001IR1111IR7中断类型码的高5位由用户在32~255的范围内任选,低3位由引脚区别自动插入。即高5位可填,低3位自动生成。2、ICW2设置中断类型码,奇地址D7D6D5D4D3D2D例:00111000B,则:IR0--38HIR1--39HIR2--40HIR7--3FH例:00111000B,3、ICW3,主从片命令字,奇端口当系统有多片级联时,有意义。ICW1D1=0时要设,否则不必设。而且主从片不同。主片D7D6D5D4D3D2D1D0IR7IR6IR5IR4IR3IR2IR1IR0A01=1,表示本引脚上连1从片=0,表示本引脚上未连从片3、ICW3,主从片命令字,奇端口D7D6D5D4D3D2D从片D7D6D5D4D3D2D1D0×××××ID2ID1ID0A01不用,一般写0作为从片的标识码,表示连主片的哪一个引脚实际操作时,主片从CAS0~CAS2发出申请中断的引脚号码,个从片均接收,与自己的ID0~ID2对照,相同则送出中断类型码。从片D7D6D5D4D3D2D1D0×××××ID2ID1I4、ICW4方式控制命令字,奇端口ICW1D0=1时才设,8086系统必须使用D7D6D5D4D3D2D1D0000SFNMBUFM/SAEOIμPMA01标识码D4(SFNM):=1特殊全嵌套方式,主从结构时使用 =0非特殊的全嵌套方式D3(BUF):=1缓冲方式,EN*=0启动数据总线 =0非缓冲方式4、ICW4方式控制命令字,奇端口D7D6D5D4D3D2DD2(M/S):D3=1时,D2有意义D3=1,D2=1,表本片是主片

D2=0,表本片是从片D1(AEOL):=1自动结束方式=0非自动结束方式,因此需要中断结束命令。D0(μPM):=1,用于8086/8088系统=0,用于8080/8085系统

常用控制字01H或03H(01H非自动结束03H自动结束)D2(M/S):D3=1时,D2有意义8259初始化流程用ICW1设置是否级联请求格式信号是否需要设置ICW4用ICW2设置中断类型码是否为级联方式本片设为主片吗?设置ICW3,各位对应IR0~IR7设置ICW3,高5位为0,低3位为标识码需要用到ICW4吗?用ICW4设置是否为特殊全嵌套方式是否为缓冲方式是否为自动结束中断方式是否为16位系统结束,进行中断服务NYNYNY8259初始化流程用ICW1设置是否级联用ICW2设置中断类注意“偶地址低,奇地址高,占用两个连续的地址或两个连续的偶地址。ICW1~ICW4的顺序不能乱ICW3、ICW4可省级联时,ICW3主从片的意义不同,地址不同,一般先写主片,后些从片。注意“例1,设某8259A的端口地址80H,82H,分析下列命令。MOVAL,13HOUT80H,AL;设ICW1MOVAL,18HOUT82H,AL;设ICW2,中断类型码MOVAL,1DHOUT82H,AL;设ICW4,00011101例1,设某8259A的端口地址80H,82H,分析下列命令。例2、设主中断控制器IR0~IR3接外部中断,IR4~IR7接从片。写ICW3ICW3=0F0H,11110000B例2、设主中断控制器IR0~IR3接外部中断,IR4~IR7(二)操作命令字,3个8259A用初始化命令字命令编程后,就进入工作状态,准备好接收输入的中断请求信号。在工作期间,可以通过操作命令字来使它按不同的方式工作。因此可以在任何时候以任意顺序输出。(二)操作命令字,3个1、OCW1中断屏蔽命令字,奇地址D7D6D5D4D3D2D1D0M7M6M5M4M3M2M1M0A01Mi=1,屏蔽本位请求Mi=0,允许本位请求1、OCW1中断屏蔽命令字,奇地址D7D6D5D4D3D2D2、OCW2设置优先级循环及结束中断方式命令字,偶地址D7D6D5D4D3D2D1D0RSLEOI00L2L1L0

A00优先级是否循环=1,循环=0,不循环=1,L2-L0有效(用特殊优先级循环或特殊结束时)=0,L2-L0无效中断结束命令位=1,ISR中优先级最高的位清0标志位IR~IR7的编码2、OCW2设置优先级循环及结束中断方式命令字,偶地址D7DD7,D6,D5配合使用RSLEOI100优先级自动循环000不再使用优先级自动循环110特殊的优先级自动循环,L2~L0指明最低010无意义D7,D6,D5配合使用RSLEOI100优先级自动循环00RSLEOI101清当前ISRn,系统按优先级自动左移一位继续工作111清当前ISRn,并指定最低优先级011特殊的中断结束,L2~L0指明对应ISRn001清当前ISRn,一般的中断结束。(常用的20H)RSLEOI101清当前ISRn,系统按优先级自动左移一位继3、OCW3,偶地址D7D6D5D4D3D2D1D00ESMMSMM01PRRRISA00D6=D5=1,按特殊屏蔽方式工作,系统可响应任何中断D6=1,D5=0,结束特殊屏蔽,系统恢复原优先级D6=0时,D5无意义D3=1,与OCW2区别标志位3、OCW3,偶地址D7D6D5D4D3D2D1D00ESMD2(P)查询方式位。D2=1,8259A工作于中断查询方式。查询方式时用读指令读入查询字,从偶地址。D7D6D5D4D3D2D1D0I

W2W1W1A00表明8259A中当前中断请求的最高优先级当前有无中断请求D2(P)查询方式位。D7D6D5D4D3D2D1D0ID2=0,用RR(D1)和RIS(D0)表明读8259A内部寄存器中的内容(从偶地址)。D1=1,D0=0下一条输入指令读的是IRR的内容。D1=1,D0=1下一条输入指令读的是ISR的内容。D1=0无操作。IMR中的内容可以从奇地址随时读取。OCW1~OCW3的内容可以随时改变,一旦改变,前面的状态将不复存在。D2=0,用RR(D1)和RIS(D0)表明读8259A内部五、8259A使用举例1、中断全嵌套方式的流程(P288)主程序要有开中断指令使IF=1中断响应时自动关中断,所以要嵌套,在服务子程序中要开中断中断结束时一般要发中断结束命令2、使用中断结束命令的例子(P289)中断服务中执行STI,才可嵌套使用中断结束命令清ISRn如提前结束则嵌套未必符合规律五、8259A使用举例3、编程举例,用8259A作单个中断控制器,类型号32~39,用IR3。INT1 PROCNEARICW1 EQU00010011B;边沿触发,一片,用ICW4ICW2 EQU00100000B;类型号20HICW4 EQU00000001B;8086非自动结束OCW1 EQU11110111B;保留IR3,其余屏蔽PORT_AEQU0C0H;偶地址PORT_BEQU0C2H;奇地址3、编程举例,用8259A作单个中断控制器,类型号32~39 MOVDX,PORT_A MOVAL,ICW1 OUTDX,AL;送ICW1 MOVDX,PORT_B MOVAL,ICW2 OUTDX,AL;送ICW2 MOVAL,ICW4 OUTDX,AL;送ICW4 MOVAL,OCW1 OUTDX,AL;送OCW1 RETINT1ENDP MOVDX,PORT_A

4、装入中断服务程序入口地址的方法;(1)设入口的地址为1000H:2000H

PUSHDSXORAX,AXMOVDS,AXMOVAX,2000HMOVWORDPTR[n*4],AX;n必须有具体数字MOVAX,1000HMOVWORDPTR[n*4+2],AXPOPDS4、装入中断服务程序入口地址的方法;(2)调用DOS中的25H号功能,装入中断服务程序的入口地址入口条件:DS=服务程序入口地址段基址

DX=服务程序入口地址偏移地址PUSHDSMOVDX,OFFSETINT1MOVAX,SEGINT1MOVDS,AXMOVAL,n(2)调用DOS中的25H号功能,装入中断服务程序的入口地址

MOVAH,25HINT21POPDSMOVAH,25H(3)借用DI、ES装中断服务入口地址XORAX,AXMOVES,AXMOVBX,OFFSETINT1MOVAX,SEGINT1MOVDI,nSHLDI,1SHLDI,1MOVES:[DI],BXMOVES:[DI+2],AX

(3)借用DI、ES装中断服务入口地址6、8253和8259A的综合举例在计算机系统中用8253作计数器1、计数器2分别为生产线上A、B两处通过的工件进行计数。每生产一个工件,A处的红外传感器向计数器1送入一个脉冲。生产出的工件在B处进行检验,每出现一个废品,B处的红外传感器向计数器2送入一个脉冲。8253的计数器0作为定时器使用,每隔一分钟通过8259A的IR0向8088CPU申请中断。在中断服务程序中,读取计数器1、2的内容,计算出合格产品数,并累加到BUF开始的4个内存单元中,同时清零1、2两个计数器。设CLK0的时钟频率为1KHz。6、8253和8259A的综合举例8253的端口地址:0800H~0803H8259的端口地址:0820H~0821H中断类型码的高5位00111B。要求:1、编写完成上述功能的8253,8259A的初始化程序2、编程设置中断服务子程序的入口地址3、编写中断服务子程序完成上述功能8253的端口地址:0800H~0803H 1、8259A的初始化

CLIMOVDX,0820HMOVAL,13HOUTDX,AL;送ICW1MOVDX,0821HMOVAL,38H;00111100BOUTDX,AL;送ICW2MOVAL,01H;

OUTDX,AL;送ICW4INAL,DX;从奇地址读屏蔽寄存器

ANDAL,0FEH;开放IR0OUTDX,AL 1、8259A的初始化8253的初始化(x=T*F=60*1K=60000=0EA60H)MOVDX,0803HMOVAL,00110100B;计数器0,先低8位后高8位,模式2,二进制OUTDX,AL;MOVDX,0800HMOVAL,60HOUTDX,ALMOVAL,0EAHOUTDX,AL;计数器0的初始化8253的初始化MOVDX,0803HMOVAL,01110000B;计数器1,先低8位后高8位,模式0,二进制OUTDX,ALMOVDX,0801HMOVAL,0HOUTDX,ALOUTDX,AL;计数器1的初始化MOVDX,0803HMOVAL,10110000B;计数器2,先低8位后高8位,模式0,二进制OUTDX,ALMOVDX,0802HMOVAL,0HOUTDX,ALOUTDX,AL;计数器2的初始化MOVDX,0803H2、送入口地址

PUSHDSMOVAX,0MOVDS,AX;0段MOVSI,38H*4MOVAX,OFFSETINC-PROCMOV[SI],AX;送偏移量MOVAX,SEGINC-PROCMOV[SI+2],AX;送段地址POPDS2、送入口地址3、中断子程序INT-PROCPROCFARPUSHAXPUSH

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论