接口_第5章中断技术_第1页
接口_第5章中断技术_第2页
接口_第5章中断技术_第3页
接口_第5章中断技术_第4页
接口_第5章中断技术_第5页
已阅读5页,还剩58页未读 继续免费阅读

下载本文档

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

文档简介

1、第第5 5章章 中断技术中断技术5.1 中断是指CPU在正常运行程序时,由于内部/外部事件或由程序,而转到为中断事件服务的程序中去,服务完毕再返回执行原程序,这一过程称为中断。硬件中断: 由外部硬件产生的中断。软件中断: 由程序预先安排的中断。中断的特征:具有随机性。5.2 中断的类型 分为硬件中断(外部中断)和软件中断。1、硬件中断l 可屏蔽中断INTR 通过中断控制器向微处理器申请而产生的中断,它可以用指令屏蔽与开放。l 不可屏蔽中断NMI 通过中断请求线NMI向微处理器申请而产生的中断,它可以用指令屏蔽与开放。2、软件中断 软中断由用户在程序里发出中断指令INT nH产生的,指令中的操作

2、数n称为软中断号。lDOS功能调用 例如:INT 21H调用。lBIOS功能调用l软中断的应用 由软件中断指令引起的中断,无中断响应周期,中断号由指令中给出,该中断无法被屏蔽。5.3 中断号1、中断号 系统给每个中断与异常分配了一个中断号,以便识别与处理。微机支持256个中断号,并对硬件中断和软件中断统一编号在0-255号内。在向量中断中,CPU可通过它找到中断服务程序的入口地址,实现程序的转移。2、PC微机系统的中断号分配PC微机系统的中断号分配表5.4 中断触发方式与中断排队1、中断触发方式 指外部设备以什么逻辑信号去向中断控制器申请中断,一般有边沿触发和电平触发两种。2、中断排队方式l按

3、优先级排队 按任务的轻重缓急确定响应优先级,实际应用较多。l循环轮流排队 具有相同的优先级。3、中断嵌套 当CPU正处理某个中断时,出现更高级中断源的申请,CPU必须暂停该中断服务,转而去处理更高级中断的服务,待处理完后,再返回到被中断的服务程序继续执行。 高级中断可中断低级中断响应1响应2中断服务返回返回主程序中断服务5.5 中断向量与中断向量表1、中断向量 CPU响应中断后,中断源提供地址信息,由此地址信息对程序的执行进行导向,引导到中断服务程序中去执行,所以把这个地址称为中断向量。 中断向量包括中断服务程序的段基址CS,偏址地址IP共4个字节。 2、中断向量表 所有的中断向量集中存放到存

4、储器的某一区域,这一区域称之为中断向量表。 PC微机系统规定: 存储器的000H-03FFH作为中断向量存储区(共1024个字节),每个中断向量包含4个字节,可容纳256个中断向量,即可处理256个中断服务程序。中断向量表每个中断服务程序的入口地址占4个字节3、中断向量的填写 对于没有填写中断向量表的系统,需由用户自己填写中断向量。例:用MOV指令填写中断类型号为60H的中断向量CLICLD ;内存地址加MOV AX,0MOV ES,AXMOV DI,4*60H ;中断向量指针DIMOV AX,OFFSET INTR60 ;中断服务程序的偏移地址AXSTOSW ;AXDIDI+1中,然后DI+

5、2MOV AX,SEG INTR60 ;中断服务程序的段基址AX STOSW ;AXDI+1DI+2STI5.6 中断处理过程1、可屏蔽中断的处理过程它包括4个阶段:l 中断申请与响应握手l 标志位的处理与断点保存l 向中断服务程序转移并执行中断服务程序l 返回断点中断控制器8259A中断类型号为60H的设备IR0INTRINTACPU开中断,接收INTR请求CPU发INTA响应,在第二个INTA周 期中,外部中断控制器送中断类型号OLDFLAG STACKOLDCS STACK(60H*4+2)=(182H)=1240H CSOLDIP STACK (60H*4)=0200H=(180H)

6、IP执行在CS=1240H,IP=0200H处的中 断服务程序执行IRET中断返回指令 OLDIP退栈 OLDCS退栈 OLDFLAG退栈继续执行当前程序中的下一条指令CPU外设RAMCS1240HIP0200H类型为60H的中断服务程序0200H1240H0180H0182HOLDIPOLDCSOLDFLAGSS3000HSP0100HCSOLDCSIPOLDIPINTR当前程序堆栈中断服务程序中断向量表可屏蔽中断的处理过程2、不可屏蔽中断和软中断的处理过程也包括4个阶段l 中断申请与响应握手 必须立即响应,但不发中断响应信号。l 标志位的处理与断点保存 与可屏蔽中断类似。l 向中断服务程序

7、转移并执行中断服务程序 NMI中断向量的两个字放在0008H和000AH处。l 返回断点5.7 中断控制器1、82C59A外部特性和内部寄存器l外部特性面向CPU的信号面向外设的8根中断请求线面向同类芯片的中断请求级联线82C59A的内部结构图5.3 82C59A的外部引脚与内部寄存器数据总线缓冲器读/写逻辑级联缓冲/比较器控制逻辑正在服务寄存器ISR优先级分析器PR中断请求寄存器IRR中断屏蔽寄存器 IMRIR0IR1IR2IR3IR4IR5IR6IR7D0D7INTA0CAS0CAS1CAS2SP/ENCSWRRDINTAl内部寄存器 中断请求寄存器(IRR) 它存放IR线上提出了中断请求

8、的中断源,该寄存器8位(D0D7)对应于连接在IR0IR7线上的外设所产生的中断请求。哪 一根输入线有请求,哪位就置“1”。 中断屏蔽寄存器(IMR) 是对中断请求IRi起屏蔽作用,即对中断请求IRi是屏蔽还是允许,寄存器8位对应8级中断屏蔽。哪一级中断被屏蔽,哪位就写“1”,即禁止IRi提出中断请求。Di=0 开中断1 关中断 正在服务寄存器ISR 在中断响应之后,第一个获准中断请求的中断级在相应的ISR中置位(如IR3获准,ISR中的IS3置位,表明IR3正处于服务)。因此,ISR被用来存放正在被服务的所有中断级,包括尚没服务完而中途被别的中断所打断了的中断级。 在非自动中断结束方式下,I

9、SR的复位,要有中断结束命令EOI来执行。 优先权分析器(PR) 优先排队当在IRi输入端有中断产生时,送到PR,PR检查进来的中断请求的优先级并和“正在服务中的中断”进行比较,确定是否让这个中断请求送给处理器。 2、82C59A的工作方式l 中断触发方式确定中断请求的启动方式边沿触发方式。IR0-IR7线上出现由低到高的跳变,表示有中断请求。电平触发方式。 IR0-IR7线上出现高电平时变,表示有中断请求。l 中断级联方式 82C59可以单片使用,也可以多片使用,级联方式应用时有主片和从片的问题。82C59在PC微机上的级联l 中断优先级排对方式 完全嵌套方式 只能高优先级中断低优先级的中断

10、。 特殊完全嵌套方式 同级优先级的中断可以相互中断。 优先级轮换方式 被服务完的中断源优先级将自动变为最低,而其后的中断源的优先级将变为最高。优先级轮换方式有两种 优先级自动轮换方式:当一个中断被服务后,自动降为最低,初始顺序是:IR0,IR1, 优先级指定轮换方式:与的差别是,初始轮换的优先级可以由程序指定。l 中断结束方式 自动结束方式 在中断响应周期,就自动清零了该中断源的ISR寄存器中被置1的位。这常用于没有中断嵌套的系统。 非自动结束方式 在中断服务程序后,必须使用中断结束命令EOI才能清除ISR中的相应位。这是最常用的中断结束方式。它有两种形式: 指定结束命令:即要指定结束中断请求

11、线IRi的编号。 常规结束命令:不指定IRi的编号。3、82C59A的编程命令中断操作功能: 请求 屏蔽 排队 结束 级联 中断类型号 查询 下面讨论为实现这些功能的各个命令字的含义,为编程使用82C59A提供一些思路。l初始化命令字( ICW1 ICW4 ) 必须在对82C59A初始化时完成。需要按顺序发送ICW1 ICW4 中断请求触发方式的设定(ICW1)功能:设定中断请求的触发方式(电平触发或边沿触发)、级联和CPU的特性。 ICW10A00001LTIMADISNGLIC416位机无效特征位 电平触发 无效单片使用需要ICW4D7D6D5D4D3D2D1D0ICW1的格式:A0:最低

12、位地址线,A0 =0即为偶地址。例.若8259A采用电平触发,单片使用,需要 ICW4(对16位机以上,D0=1),则: MOV AL,00011011B ;ICW1的内容 OUT 20H,AL ;写入ICW1端口 ;(A0=0) 微机主片的端口(地址A0=0) 中断类型号的设定(ICW2) 功能:提供给CPU的中断类型号ICW21A0T7T6T5T4T3000中断类型号的高5位16位机无效D7D6D5D4D3D2D1D0设:硬盘中断号:0DH 即 00001101 00001000注意:向ICW2写入中断类型号只写高5位,低3位写0,即08H。 MOV AL,08H ;中断类型号的高5位 O

13、UT 21H,AL ;写入ICW2的端口(A0=1)接到IR5上高5位中断类型号产生的示意图:ICW2CPU8259AIR0IR1IR2IR3IR4IR5IR6IR7编码000001010011100101110111由硬件完成由软件完成中断类型号 中断级联方式的设定(ICW3)(1)级联的结构形式ICW3的格式: a.主片ICW3主片ICW31S7S6S5S4S3S2S1S0A0D7D6D5D4D3D2D1D0表示主片的哪个IRi上接有从片的中断请求INTb.从片ICW3从片ICW3A0D7D6D5D4D3D2D1D01ID2ID1ID0从片标志码 ID2ID0有8种编码,表示从片的INT接

14、到 主片的哪一个IRi位。以下图连接为例(82C59在PC微机上的级联)PC机的82C59采用级联方式,且从片的INT接到主片的IRQ2上。程序设计为(从片的请求线INT连到主片的IRQ2):主片的ICW3=00000100B=04HMOV AL,04H;主片的ICW3OUT 21H,AL 从片的ICW3=00000010B=02H MOV AL,02H ;从片的ICW3 OUT 0A1H,AL;从片的地址由译码决定(0A1H为从片的端口地址) 优先级:IR0,1,8-15,3,4,5,6,7 中断优先级和中断结束设定(ICW4)A0=1lD5-D7高3位为0lD4(SFNM)=1 主片为特定

15、完全嵌套方式 =0 一般完全嵌套方式lD3(BUF) =1 为缓冲方式 ,SP/EN 作输出 线,用于控制缓冲器的方向 =0 为非缓冲方式,SP/EN作输入线ICW41000SFNMBUFM/S AEOI PMA0D7D6D5D4D3D2D1D0lD2(M/S)= 1 为缓冲方式下作主片 = 0 为缓冲方式下作从片 注:非缓冲方式(BUF=0时),则M/S无意义, 此时主/从由SP端决定。lD1(AEOI)=1 自动结束方式,ISR有自动 复位(清0)功能 =0 为非自动结束方式,要发EOI命令lD0(uPM)=1 用于16位以上微机 =0 用于8位微机例1. 某计算机的CPU为80286,而

16、8259A与系统总线之间采用缓冲器连接,非自动结束方式,只用1片8259A,正常完全嵌套。则:ICW4=00001101B=0DH相应的初始化程序段:MOV AL,0DH OUT 21H,AL初始化命令字的设置顺序: 在系统运行之前,系统中的每个8259A必须按先后次序接收CPU的2-4个ICW初始化命令字进行初始化。初始化命令字必须按规定的顺序写入。 对PC微机,且多片,则主片与从片的ICW3要分别写。l 操作命令字( OCW1-OCW3 ) 初始化后,即在程序执行中,使用OCW命令对中断控制器进行动态控制。 不需要按顺序发送,在程序中任意安排。 中断屏蔽操作(OCW1) 格式为:OCW11

17、M7M6M5M4M3M2M1M0A0D7D6D5D4D3D2D1D01=屏蔽 0=开放 例1. 要使中断源IR3开放,其余被屏蔽。则:OCW1=11110111B=F7H相应的程序段: MOV AL,0F7H OUT 21H,AL ;OCW1内容送端口此程序的最大问题是影响了其它中断屏蔽为如果不影响其它中断,应该写成下列程序段: IN AL,21H ;回读21H端口的内容 AND AL,11110111BOUT 21H,ALOCW20A0RSLEOI00L2L1L0指定中断等级特征位中断结束D7D6D5D4D3D2D1D0优先级轮换中断等级编号 中断结束控制和中断优先级排队控制操作(OCW2)

18、其命令格式:中断结束控制(OCW2格式中的D5) 当在初始化命令ICW4选用非自动结束方式时(即AEOI=0),就利用OCW2来控制中断结束。当EOI=1,且: SL(D6)=0 不指定中断结束(清最高优先级) L2-L0=000,OCW2=00100000B SL(D6)=1,指定中断结束(特殊屏蔽) L2-L0编码是被指定的中断等级 即:OCW2=01100L2L1L0例:指定IR5的中断结束,则: OCW2=01100101B=65H作中断优先级排队控制(OCW2格式中的D7)D7(R)1:需要轮换优先权,分二种 SL=0:优先级固定方式,则为完全嵌套方式=1:优先权 指定轮换=0:自动

19、轮换注意:中断结束方式和中断排队方式都用OCW2命令来实现,因此它的某些位功能相互交叉显然比较复杂,但其作用只有两个:l控制中断结束方式l控制中断优先权轮换方式OCW2的组合功能:l 不指定EOI命令,全嵌套方式:00100000l 指定EOI命令,全嵌套方式: 01100L2L1L0l 不指定EOI方式,优先级自动轮换:10100000l 自动EOI方式,优先级自动轮换:10000000l 自动EOI方式,取消优先级自动轮换:00000000l 指定EOI方式,优先级特殊轮换:11100L2L1L0l 优先级特殊轮换:11000L2L1L0lOCW3的功能 用来设置查询中断方式 设置特定屏蔽

20、方式 读取8259A的IRR,ISR寄存器的内容OCW3的格式:D7D6D5D4D3D2D1D0OCW30A0XESMMSMM01PRIS特定屏蔽允许特征位查询方式读ISR读寄存器允许RR特定屏蔽设置不用读状态操作(OCW3格式中的D1 D0 ) 8259A内部有3个寄存器IRR,ISR,IMR可供CPU读出当前的内容。(1)读IRR和ISR的方法 CPU先指定读哪个寄存器,然后再发IN指令,才能读取ISR和IRR中的内容。当8259A初始化后,自动指向读IRR寄存器。(2)读IMR的方法 不需要先发指定命令,只要读奇地址端口。例:读ISR寄存器的内容分两步: 通过OCW3指定被读的寄存器 O

21、CW3为00001011B,表示下个RD要读ISR 用IN指令读出ISR寄存器的内容程序段如下: MOV AL,0BH ;OCW3表示读ISR OUT 20H,AL ;20H为OCW3的口地址 IN AL,20H ;读ISR寄存器 8259A的编程命令的使用 8259A有两类编程命令,初始化命令字ICW和操作命令字OCW。ICW: 在初始化里完成,必须按一定的顺序。 在PC机中已有系统软件完成,不需要 也不允许由用户自己去设置。 一般只对于没有配置完善操作系统的 单板微机上进行。OCW: 没有一定的顺序,一般也不安排在程 序的开头。 在初始化后的任何时候进行动态控制。5.9 用户对系统中断资源

22、的使用1、修改中断向量当使用PC机的某个中断号时,需分三步修改: 用35H号功能,获取原中断向量。 用25H号功能,设置新中断向量,取代原中断向量。 新服务程序执行完毕后,利用25H号功能恢复原中断向量。MOV AH,35H;取原中断向量MOV AL,60H;60H为原中断号INT 21HMOV AX,ESMOV OLD_SEG,AX ;保存原中断向量MOV OLD_OFF,BX例:修改中断号为60H的中断向量。 第步:获取原中断向量第步:置入新的中断向量MOV DX,SEG INTRnew ;INTRn是新中断程序的入口地址MOV DS,DX ;DS指向新中断程序段地址MOV DX,OFFS

23、ET INTRnew ;DX指向新中断程序偏移地址MOV AL,60H ;中断号MOV AH,25H ;设置新中断向量INT 21H第步:置入原来的中断向量MOV DX,OLD_SEGMOV DS,DX ;DS指向旧中断程序段址MOV DX,OLD_OFF ;DX指向旧中断程序偏移地址MOV AH,25H ;恢复旧的中断向量MOV AL,60H ;中断号INT 21H例:在PC机环境下,中断向量的修改方法。l 在数据段中定义DATA SEGMENT OLD_SEGDW?;原中断服务程序的段地址 OLD_OFFDW?;原中断服务程序的偏移地址DATA ENDSl在代码段写程序CODE SEGME

24、NT MOV AH,35H ;取原中断向量 MOV AL,60H ;60H为原中断号 INT 21H MOV OLD_SEG,ES ;保存原中断向量 MOV OLD_OFF,BX MOV AH,25H ;设置新中断向量 MOV AL,60H ;中断号 MOV DX,SEG INTRn ;INTRn是新中断程序的入口 MOV DS,DX ;DS指向新中断程序段地址 MOV DX,OFFSET INTRn ;DX指向新中断程序偏移地址 INT 21H ;程序主体 MOV AH,25H ;恢复旧的中断向量 MOV AL,60H ;中断号 MOV DX,OLD_SEG MOV DS,DX ;DS指向旧

25、中断程序段址 MOV DX,OLD_OFF ;DX指向旧中断程序偏移地址 INT 21H MOV AH,4CH INT 21HINTRn PROC PUSHAX ;中断服务程序的主体 POP AX IRET CODE ENDS 2、中断的屏蔽与开放开放IRQ2中断的方法: IN AL,21H ;读IMR寄存器 AND AL,0FBH ;对应IRQ2的位置0 OUT 21H,AL关闭IRQ2中断的方法: IN AL,21H ;读IMR寄存器 OR AL,04H ;对应IRQ2的位置1 OUT 21H,AL3、编写中断服务程序中断程序编写应注意下列格式INT-P PROC FARPUSH ;保护寄存器的内容 PUSH STI ;中断服务程序体 MOV AL,20H ;不指定中断结束方式 OUT 20H,AL ;发EOI命令,对微机 POP ;恢复寄存器的内容 POP IRETINT-P ENDP例:中断用于数据采集系统 电

温馨提示

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

评论

0/150

提交评论