版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、微机原理与接口技术主讲 易凡 武汉大学物理学院电子科学与技术系,第五章 中断系统,5.1 中断的基本概念,中断 处理器暂停执行现行的程序,转而处理随机事件,处理完毕后再返回被中断的程序处继续执行,这一全过程称为中断。,中断源 能够引发处理器中断的信息源称为中断源。 常见的中断源: 一般输入输出设备,如图像管终端, 打印机等。 数据通道,如磁盘、磁带等。 实时时钟,如定时器芯片 8253 产生的定时中断请求信号。 故障信号,如电源掉电等。 软件中断,如为调试程序而设置的中断。,5.1 中断的基本概念,中断系统 系统为实现中断而采用的硬件和软件措施。 计算机采用中断系统的目的 维持系统的正常工作,
2、提高系统效率。 实时处理。 为故障处理作准备。,5.1 中断的基本概念,中断系统应具备的基本功能 对于硬设备的中断请求,要具备屏蔽和开放功能,使得程序员能灵活控制。 系统响应中断后,能保护“现场” ,并自动转入中断处理。中断处理结束,能自动正确返回断点处。 能实现“中断判优”,即中断源优先权排队,当多个中断源同时提出中断请求时,高级别的请求被优先响应。 能实现中断嵌套,即高级别的中断源能够中断低级别的中断服务程序。,5.1 中断的基本概念,保护现场 是指CPU转去执行中断服务程序前的运行状态,包括CPU内部各寄存器、断点地址等。 断点 是指CPU执行的现行程序被中断时的下一条指令的地址,又称断
3、点地址 中断嵌套: 当CPU正在进行某一级别中断源的中断处理时,若有更高级别的新中断源发出请求,且新中断源满足响应条件,则CPU应中止当前的中断服务程序,保护此程序的断点和现场,转而响应高级中断。这种多级(重)中断的处理方式称为“嵌套”,5.1 中断的基本概念,断点概念,中断嵌套过程示意图,5.2 8086中断系统,8086系统可处理256个的中断,可分为软件中断和硬件中断两大类。 软件中断: 由处理器执行某些指令引起的中断 ,亦称内部中断 包括:除法出错、溢出、单步、断点和指令中断等 硬件中断: 由外部引脚NMI和INTR触发引起的中断,亦称外部中断,5.2.1 8086系统的中断分类,图示
4、,软件中断,除法出错中断0 类型中断 当除数为 0 或商超出了有关寄存器能表示的数值范围,则产生除法出错中断。,例如movbl,0 idivbl;除数 0 ,产生除法错中断 movax,200 h movbl,1 divbl;商 200 H ,不能用 AL 表达 ;产生除法错中断,由处理器执行某些指令引起的中断 ( 亦称内部中断) , 包括:除法出错、溢出、单步、断点和指令中断等,软件中断,单步中断1 类型中断 在单步标志 TF=1 且中断允许标志 IF=1 时,每执行一条指令就引起一次中断。 断点中断3 类型中断 主要用在除错调试程序中, 利用 “ INT 3” 设置断点, 目的是显示断点前
5、程序执行结果。 溢出中断 4 类型中断 当溢出标志OF=1时,执行指令INTO则产生溢出中断。,例如MOVAX ,2000 H ADDAX ,7000 H INTO ; 2000 H 7000 H 9000 H ,溢出:OF=1 ;因为OF=1 ,所以产生溢出中断,软件中断,中断指令 INT N INT N 是中断指令, N 是中断类型号 (0 0 FFH) DOS系统功能, 基本输入输出系统(BIOS)的功能即是用 INT N 指令中断调用。,硬件中断,由处理器外部引脚 NMI和INTR引起的中断称为硬件中断 ( 亦称为外部中断),非屏蔽中断 通过处理器的 NMI( 非屏蔽中断) 引脚进入,
6、它不受中断允许标志的屏蔽,微处理器无法禁止,将在当前指令执行结束予以响应; 8086 的非屏蔽中断的类型号为 2 ; 非屏蔽中断主要用于处理系统的意外或故障例如: 电源调电前的数据保护 存储器读写错误的处理,可屏蔽中断,中断请求信号通过CPU的INTR引脚进入; 中断响应信号从INTA引脚发出; IF=1时, CPU响应中断;IF=0, 中断请求被屏蔽 通常可屏蔽中断源经过中断控制器8259A管理再向CPU发INTR请求。,中断标志IF的状态 指令 CLI ,关中断,禁止中断,中断屏蔽复位,使IF 0 任何一个中断被响应,亦使IF 0 指令 STI ,开中断、允许中断、中断开放执行,使IF 1
7、 执行指令 IRET 恢复原IF状态,中断类型码,8086可以处理256个中断请求。每个中断请求均对应于唯一固定的类型号(码),亦称为中断类型码,IBM-PC/XT中断类型号的功能分配,5.2.2 中断处理过程,中断过程 分为:中断请求、中断响应两个过程 中断请求过程 中断源向处理器发出请求中断信号; 中断信号将被锁存,一直保持; 直到处理器响应中断后,中断请求信号才被能清除,中断过程(续),中断响应过程 处理器在执行每条指令的最后一个时钟周期检测中断请求信号若发现中断请求信号有效,在允许中断的条件下,处理器响应中断; 中断响应过程可细分为:响应、处理、返回3个子过程 响应过程:微处理器自动完
8、成 3 项任务: 标志寄存器(FLAGS)内容入栈保护 关闭中断(IF=0),以禁止其它中断请求; 断点 (IP和CS)栈保护; 获得中断服务程序入口地址,转入中断服务子程序。,处理过程 该过程是在中断子程序中完成,它位于中断子程序之首,主要包括3个部分: 保护现场 将相关工作寄存器的内容压栈保护; 开中断(使IF=1) 为了响应高级别的外部中断,则需要打开中断; 执行中断服务程序 中断子程序的主要部分,完成中断源的任务。,中断过程(续),返回过程 该过程也是在中断子程序中完成,位于子程序的尾部,它主要包括3个部分: 关中断(IF=0) 使得中断被禁止,可顺利恢复现场。 恢复现场 将压栈保护的
9、内容顺序出栈给相关寄存器 中断返回 中断服务子程序的最后是一条中断返回指令 IRET ,它执行后处理器自动从堆栈中弹出 IP、CS和FLAGS的内容, 返回主程序继续执行。,中断过程(续),中断响应过程图示,中断响应周期时序,CPU从引脚/INTA 发中断响应信号,接口芯片接收此信号,把中断类型号准备好; CPU再从引脚/INTA 发中断响应信号,接口芯片接此信号后,将中断类型号送至数据总线上; CPU从数据总线获取中断类型号。,中断源优先权,8086 各种中断源的优先权,实际上是指被识别出来的先后; CPU查询中断请求,而查询中断的顺序确定了中断源的优先权 8086系统的各种中断源的优先权顺
10、序为: 软件中断 除法错中断 指令中断 溢出中断 非屏蔽(NMI)中断 可屏蔽(INTR)中断 单步中断,查询中断源优先权顺序图示,中断向量与向量表,中断向量 中断服务子程序的入口地址亦称中断向量; 每个中断向量共占4个字节,它分为两部分 中断服务子程序所在段的段基址(2个字节) 中断服务子程序入口的偏移地址(2个字节),图示,中断向量表,一个中断向量为4个字节, 256种中断的中断向量总共占用 1K字节。 在 8086 系统中,将所有的中断向量按类型码顺序存放于内存的最低地址(00000 H003 FFH)的1K单元中。 存放中断向量的这1K内存单元区称为中断向量表,图示,中断向量在中断向量
11、表中的位置: 地址= N4( N43 ) N 4 字单元存放偏移地址 N 4 2 的字单元存放段基址,中断向量和中断向量表,中断向量表举例,例5.1 类型5的中断向量在向量表中的位置在: 54543=14H17 H 的 4 个单元中 14 H、15 H 单元存放中断服务子程序入口的偏移地址 16 H、17 H 单元存放中断服务子程序入口的段基址,例5.2 处理器执行INT 21H 指令时, 中断向量的引导过程。设21H型中断服务程序被放在地址为: XX:YY开始的内存区; 中断向量XX:YY存放在:421H421H3的单元中; 处理器取出INT 21H指令后,CS:IP为下一指令(标号NEXT
12、:) 存放单元的物理地址。,图示,处理器执行INT 21H 之后: FAGS、CS、IP的当前值被压栈保护; CPU从向量表的421H421H3的单元中取得中断向量,并写入IP, CS之中; CPU根据CS:IP值转向21H型中断服务程序。 中断程序执行完毕,执行 IRET 指令,退出中断: CPU从栈顶顺序弹出保护的断点给 IP 、 CS、FLAGS; 根据 CS: IP 返回断点 ( NEXT:) ,继续执行主程序。,中断向量表举例,中断向量表的初始化,由基本输出入系统提供的服务程序,其中断向量是在系统加电后由基本输出入系统负责设置。 由操作系统提供的服务程序, 其中断向量是在启动操作系统
13、时由操作系统负责设置。 用户开发的中断服务程序, 需要设置中断向量。,设置中断向量的方法,例5.3 设置类型N的中断向量, 其中断服务程序名为:INTHAND 。 直接将中断向量传送至中断向量表中相应单元存放,直接指令装入法,例 5.3 设置中断向量, 其中断服务程序名为INTHAND MOVAX , 0 MOVES , AX; set to base of interrupt vector MOVBX , N4; offset of type N interrupt MOVAX , OFFSET INTHAND MOVES: WORD PTR BX,AX; set addr of INTHA
14、ND MOVAX , SEG INTHAND MOVES:WORD PTR BX+2,AX INTHAND:; interrupt processing routine IRET,设置中断向量的方法,用DOS系统功能调用 (INT 21 H) 设置中断向量,25 H 功能:设置中断向量 预置:AH =25 H AL= 中断类型号(N ) DS: DX= 中断向量 执行:INT 21 H,设置中断向量的方法,35 H 功能:取中断向量 预置:AH =35 H AL= 中断类型号(N ) 执行:INT 21 H 返回:ES: BX= 中断向量,例5.4 使用DOS功能调用存取中断向量。 MOVAL
15、 , N; type N interrupt MOVAH , 35H; get interrupt vector INT21H PUSHES; save the old base and PUSHBX; offset of interrupt N MOV AX , SEG INTHAND MOV DS , AX; base of INTHAND in DS MOV DX , OFFSET INTHAND MOVAL , N; type N MOVAH , 25H; set interrupt vector INT21H,设置中断向量的方法(举例),POP DX; restore the old
16、 offset POP DS; and base of interrupt MOV AL , N; type N MOV AH , 25H; set interrupt vector INT 21H RET; return interrupt processing routine INTHAND: IRET,设置中断向量的方法(举例),5.2.3 中断程序的编写,中断程序的结构 为了实现中断,要编写主程序和中断子程序; 主程序包括:中断向量表初始化(先保存原中断向量的内容, 然后接管中断向量使其指向编制的新中断服务程序),开中断。在应用程序终止退出前, 从变量中获取原中断向量恢复到中断向量表中
17、。 中断子程序包括:保护现场,中断服务,发中断结束命令(EOI),中断返回,中断程序结构(举例),例5.5 实际中断程序的结构如下: ; 堆栈段 STACKSEGMENT STACK STACK DW128 DUP(0) STACKENDS ;数据段 DATASEGMENT DATA INT_SEGDW ? ; 定义变量,以保存中断向量段址 INT_OFFDW ? ; 定义变量,以保存中断向量偏移量 DATAENDS,;代码段 CODESEGMENT CODE ASSUMECS: CODE , DS: DATA , SS: STACK START: MOVAX , DATA; 建立数据段址 M
18、OVDS , AX MOVAL , N ; N为指定中断号 MOVAH , 35H; 获取中断向量 INT21H MOVINT_SEG , ES;保存中断向量段址 MOVINT_OFF , BX; 保存中断向量偏移量 CLI,中断程序结构(举例),MOVAL , N; N为指定中断号 MOVAH , 25H; 设置中断向量 MOVDX , SEG INT_PR MOVDS , DX; DS指向新中断向量段址 MOVDX , OFFSET INT_PR; DX指向新中断 INT21H; 向量偏移量 MOVAX , DATA MOVDS , AX; 恢复数据段寻址 STI ; 开中断 ; 主程序主
19、体(略),中断程序结构(举例),CLI ; 恢复中断向量前关中断 MOVAL , N; N为指定中断号 MOVAH , 25H; 恢复原中断向量 MOVDX , INT_OFF; DX指向原中断向量偏移量 MOVBX , INT_SEG MOVDS , BX; DS指向原中断向量段址 INT21H STI; 开中断 MOVAX , 4C00H; 主程序终止退出 INT21H; 返回DOS,中断程序结构(举例),;中断子程序 INT_PRPROC FAR; 新中断服务程序 STI;入口处开中断 PUSH ; 保存用到的寄存器 PUSH 中断服务程序主体(略) ,中断程序结构(举例), POP ;
20、 恢复入口寄存器 POP MOVAL , 020H; 发中断结束命令(EOI) OUT020H , AL IRET ; 中断返回 INT_PRENDP; 中断程序结束 CODEENDS; 主程序结束 END START,中断程序结构(举例),内部中断服务程序的编写,编写内部中断服务程序与编写子程序类似,利用过程定义伪指令PROC/ENDP 第1条指令通常为开中断指令STI 最后用中断返回指令IRET 通常采用寄存器传递参数,主程序需写的语句 主程序需要调用中断服务程序 调用前,需要设置中断向量 利用INT n指令调用中断服务程序,内部中断服务程序举例,例5.6编写80H号中断服务程序 功能:显
21、示以“0”结尾字符串的功能 利用显示器功能调用INT 10H(显示一个字符) 字符串缓冲区首地址为入口参数 DS:DX(段地址:偏移地址)传递参数,数据段,intoffdw ? intsegdw ? intmsgdb A Instruction Interrupt ! db 0dh,0ah,0,例5.6,以“0”结尾,回车、换行,保存中断向量,movax , 3580h int21h movintoff , bx;保存偏移地址 movintseg,es;保存段基地址,例5.6,获取中断向量(DOS功能调用INT 21H) 功能号:AH35H 入口参数:AL中断向量号 出口参数:ES:BX中断向
22、量(段地址:偏移地址),设置中断向量,push ds mov dx , offset new80h mov ax , seg new80h mov ds,ax mov ax , 2580h Int 21h pop ds,例5.6,设置中断向量(DOS功能调用INT 21H) 功能号:AH25H 入口参数:AL中断向量号 DS:DX中断向量(段地址:偏移地址),调用中断服务程序,mov dx , offset intmsg int 80h ;调用80H中断服务程序,例5.6,A Instruction Interrupt !,;设置入口参数:DS段地址(已设置) DX偏移地址,进入中断服务程序,
23、new80hproc sti;开中断 push ax;保护寄存器 push bx push si,例5.6,A Instruction Interrupt !,;80H号内部中断服务程序: ;显示字符串(以“0”结尾) ;入口参数:DS:DX缓冲器首地址,显示字符串,mov si,dx new1:mov al,si cmp al,0 jz new2 mov bx,0 mov ah,0eh int 10h inc si jmp new1,例5.6,A Instruction Interrupt !,退出中断服务程序,new2:pop si;恢复寄存器 pop bx pop ax iret;中断返
24、回 new80hendp,例5.6,A Instruction Interrupt !,主程序结束,mov dx , intoff mov ax , intseg mov ds , ax mov ax , 2580h int 21h mov ax , 4c00h int 21h,例5.6,A Instruction Interrupt !,5.2.4 外部中断源的管理,多个外部硬件中断源共用一条INTR线时,要在程序中采取一定措施或用外部硬件解决中断源的优先权排列和多级中断的嵌套。 中断优先权(优先级):就是为每个中断源所确定的响应级别,可通过软件排序或硬件排序方式实现,外部中断源的管理,软件
25、排序 CPU响应中断后,在程序中用查询的方法判定外设的中断请求的优先顺序。 软件查询排序的特点是: 查询次序即优先权排序 节省硬件 修改方便,只要改变程序中的查询次序即可 由询问转至真正的服务程序入口时间长,外部中断源的管理,硬件排序: 采用优先权的编码电路,对各种外部硬中断进行排队。 方法: 简单 排队编码电路 菊花链式硬件排序电路 中断控制集成芯片8259A,软件法排序的接口电路示意图,软件查询程序流程图,软件法排序程序,INAL,20H;读中断触发器的状态 TESTAL,80H;有电源故障请求? JZB1;没有,继续查询 JMPPWF;转至电源故障程序入口 B1:TESTAL,40H;有
26、磁盘请求吗? JZB2;无,继续查询 JMPDISS;转至磁盘服务程序 B2:TESTAL,20H;有磁带请求吗? JZB3;无,继续查询 JMPMT;转至磁带服务程序 B3:TESTAL,10H;有CRT请求? JZB4;无,继续查询,软件法排序程序,JMPCRT;转至CRT显示服务程序 B4:TEST AL,08H;有纸带请求? JZ B5;无,继续查询 JMP PIN;转至纸带输入服务程序 B5:TEST AL,04H;有纸带穿孔请求吗? JZ B6;无,继续查询 JMP PH;转至纸带穿孔服务程序 B6:TEST AL,02H;是键盘输入中断请求吗? JZ POUT;否,转打印中断服务
27、程序 JMP KEYIN;转至键盘输入中断服务程序 POUT: ,硬件优先权排序电路,菊花链优先排队,5.3 中断控制器8259A,8259A中断控制器由 INTEL公司设计。1片8259A管理8级中断源, 多片8259A用级连方式可使管理级别扩充。使用单一+5V电源供电。,5.3.1 8259A的结构及工作方式,8259A的内部结构,IRR中断请求寄存器(8位) 保存8个(IR0IR7)外部中断请求信号 Di1,表示IRi引脚有中断请求 Di0,表示IRi引脚无中断请求,图示,IR中断屏蔽寄存器(8位) 保存对中断请求信号IRi的屏蔽状态; Di1,则IRi引入的中断被屏蔽(关闭); Di0
28、,则IRi引入的中断被开放。,8259A的内部结构,PR优先权判别器(8位) 当IR7IR0端有多个中断请求同时发生时, 由PR判定其最高优先权; 在INTA脉冲期间将它置入中断服务寄存器ISR的相应位。,ISR中断服务寄存器(8位) 保存正在被8259A服务着的中断状态; Di1,表示IRi中断正在服务中; Di0,表示没有被服务。,数据总线缓冲器 8位双向三态缓冲器,构成8259A与系统数据线的接口。对8259A编程写入的命令字和读出8259A状态信息都是通过它传送。,读写控制逻辑 接收读/写控制信号RD / WR、片选信号CS和端口选择信号A0 。一片8259A在系统中占用2个口地址,
29、用地址线A0来选择端口;用高位地址线通过译码产生8259A的片选信号。,8259A的内部结构,控制电路 包括命令字(ICW1ICW4)寄存器,操作字(OCW1OCW3)寄存器和相关的控制逻辑; 通过INT端向CPU发中断请求信号, 从INTA端接收CPU的中断响应信号, 控制8259A进入中断状态。,级连缓冲/比较器 一片8259A只能接收8级中断, 当超过8级时,可用多片8259A级连使用, 构成主从结构,扩充到64级。,8259A的内部结构,中断级连方式的连接,一个系统中,8259A可以级连,有一个主8259A,若干个(最多8个)从8259A 级连时,主8259A的三条级连线CAS0CAS
30、2作为输出线,连至每个从8259A的CAS0CAS2 每个从8259A的中断请求信号INT,连至主8259A的一个中断请求输入端IRi 主8259A的INT线连至CPU的中断请求输入端INTR SP/EN在非缓冲方式下: 当SP1,该8259A是主片; 当SP0,该8259A是从片,动画,图示,8259A的引脚功能,D7D0 : 双向数据总线。传送控制、状态信息和中断类型号。 WR* : 写信号。输入, 低电平有效。当有效时, 8259A接收CPU送来的命令字。 RD* : 读信号。输入, 低电平有效。当有效时, 8259A将状态信息放入数据总线供CPU检测。 A0 : 内部地址信号,输入。8
31、259A只占两个地址, A0与CS* 一同构成8259A的端口奇/偶地址选择。 CS*: 片选信号。输入, 低电平有效。有效时, CPU可对该8259A进行读写。,与处理器接口引脚的逻辑功能,IR7IR0 : 外部中断请求信号,输入。 INT :中断请求信号,输出。当IR7IR0任一引脚有中断请求时, 8259A从INT向CPU发出中断请求信号。 INTA :中断响应信号,输入。当CPU接收到中断请求信号,在允许中断条件下, CPU响应中断, 并发出中断响应信号到INTA端。,8259A的引脚功能,CAS2CAS0 : 级连信号,双向引脚。用于控制多片8259A的级连使用。 主片: CAS2C
32、AS0 引脚输出 从片: CAS2CAS0 引脚输入 SP / EN : 双功能引脚。 当缓冲方式时, 该引脚输出, 它用于总线收发器的使能信号; 当非缓冲方式时, 该引脚输入, SP=1表示该片是主片, SP=0表示该片是从片。,8259A的引脚功能,8259A的中断过程,动画,8259A的中断管理方式,中断触发方式 电平触发方式 当IR7IR0 出现高电平时, 表示有中断请求。这个高电平应持续到8259A收到第一个中断响应脉冲之前。 边沿触发方式 当IR7IR0 出现由低电平到高电平的跃变, 表示有中断请求。,中断屏蔽方式 普通屏蔽方式 将IMR中某一位或几位置“1”, 即可将相应位的中断
33、请求屏蔽。例如,将11110000写入IMR, 即可屏蔽IR7IR4的中断,开放 IR3IR0 的中断。 特殊屏蔽方式 通常情况下,当一个中断被响应时,禁止同级或较低级别的中断请求。在特殊屏蔽方式下,当一个中断被响应时,仅屏蔽同级别的再次中断,较低或较高级别的中断请求可被允许进入。,8259A的中断管理方式,中断优先级别管理方式 完全嵌套方式(固定优先级方式) IR7IR0的优先级固定, IR0 为最高级, IR1次之,IR7为最低级。 CPU响应某一级中断时,8259A将ISR中与该中断源对应的那一位置“1”,并自动禁止通级和较低级的中断请求,但高优先级中断可中断当前的服务,实现中断嵌套。,
34、8259A的中断管理方式,8259A的中断管理方式,特殊全嵌套方式 当CPU正处理某级中断请求时,只禁止较低级别的中断请求,而允许同级或较高级的中断请求进入。 特殊全嵌套方式用于多片级连系统。当主片处于该方式,可响应来自同一从片的其它中断请求。,自动循环方式 IR7IR0中断源轮流为最高优先级,当任一级中断服务结束后,该中断源自动降为最低级,而它的下一级的中断源自动升为最高级。,特殊循环方式 用户可置优先权命令指定最低优先级。,例如:现正为IR3引入的中断服务,若中断服务程序完毕, IR3被赋予最低优先级,IR4被赋予最高优先级,各级中断源的优先级从高到低依次为: IR4 ,IR5 ,IR6
35、,IR7 ,IR0 ,IR1 ,IR2 ,IR3 。,例如:设置IRi为最低优先级,则最高优先级赋予 IRi1,其它各级按循环方式类推。,中断结束方式 把ISR寄存器的中断服务标志ISRi位清0,意味着结束IRi引入的中断服务。如何将ISRi位清0,8259A提供了6种中断结束方式。 自动EOI方式 8259A在收到第2个中断响应脉冲信号之后,自动把ISR中置1的最高优先级服务标志 ISRi位清0,不需要在中断服务程序中向8259A送中断结束(EOI)命令字。,8259A的中断管理方式,普通EOI方式 执行IRET之前,向8259A送一个 EOI 命令字,将把ISR中相应位清0。 在完全嵌套方
36、式下,采用普通EOI方式。,特殊中断结束方式 该种方式下,在中断服务程序结束,执行IRET之前,向8259A送一个“特殊EOI” 命令字,可将ISR中指定位清0。,8259A的中断管理方式,自动EOI,优先级循环方式 在CPU响应中8259A在收到第2个中断响应脉冲信号之后,自动把ISR中置1的最高优先级服务标志 ISRi位清0,并完成优先级循环。,普通EOI,优先级循环方式 执行 IRET之前,向8259A送一个“普通EOI,优先级循环方式” 命令字,将ISR中级别最高的置1位清0,同时完成优先级循环。,8259A的中断管理方式,特殊EOI,优先级循环方式 当前中断服务结束,执行IRET之前
37、,向8259A送一个“特殊EOI,优先级循环方式” 命令字,可将ISR中指定位清0。并完成优先级循环。,总线连接方式 缓冲方式 如果8259A通过总线驱动器和系统数据总线相连,则8259A应采用缓冲方式; 此时SP / EN为输出端,它输出一个低电平信号,可作为总线驱动器的启动信号。 非缓冲方式 如果8259A数据线和系统数据总线直接相连,则8259A应工作于非缓冲方式下。,8259A的中断管理方式,5.3.2 8259A的控制字及编程使用,初始化编程 8259A开始工作前,要进行初始化编程,写初始化命令字ICW,确定工作方式。 中断操作编程 在8259A工作期间可以写入操作命令字OCW,使8
38、259A按新的要求操作;还可以读取8259A的信息,以便了解其工作状态。,初始化命令字ICW,有4个初始化命令字ICW 8259A在开始工作前必须写入 必须按照ICW1ICW4顺序写入 ICW1和ICW2是必须写 ICW3和ICW4由工作方式决定是否写,ICW1中断请求触发方式设定 ICW1是第一个初始化命令字 ICW1使用偶端口(A0=0) D41,作为ICW1特征 写入 ICW1时,自动将中断屏蔽寄存器IMR清0,并恢复各中断源的优先级为IR0最高, IR1次高, ,IR7最低。,初始化命令字ICW,ICW1的格式,ICW1中断请求触发方式设定,D0 (IC4)位: 是否写ICW4选择。
39、D0= ,需要写ICW4 ; D0= , 不写ICW4。 D1 (SNGL)位:单片多片选择。 D1=0,多片级连使用; D1=1,单片使用。 D3 (LTIM)位:触发方式选择 D3=0,边沿触发; D3=1,电平触发。 D7、D6 、D5 、D2 4位:8086CPU不用(置0) D4位:特征位 D4=1,表示写 ICW1字,ICW2中断类型号设定,ICW2的功能是设置中断类型号; 它使用奇端口(A0=1); 紧跟在ICW1之后设置;,ICW2的格式,D7D3(T7T3) 中断类型号的高5位, 由用户写入 中断类型码的低3位由8259A自动设定 IR0为000、IR1为001、IR7为11
40、1 它在第一个INTA到来时, 将这个编码写入低3位 D2、D1、D0 三位固定为0,是特征位,ICW2中断类型号设定,ICW设置举例,例5.8 在PC系列中断系统中, 硬盘的中断类型号的高5位是08H, 它的中断请求线连到8259A的IR5上, 写ICW2字的程序段为: MOVAL , 08H; 中断类型号高5位 OUT21H , AL; 写入ICW2端口(A0=1),例5.7 若对8259A采用 电平触发, 单片使用, 需写ICW4, 则程序段为: MOVAL , 1BH; ICW1的内容OUT20H , AL; 写入ICW1端口(A0=0),ICW3使用奇端口(A0=1),仅在多片级连方
41、式中使用,ICW3中断级连方式设定,ICW3的格式,主8259A, 若Si=1, 表示IRi引脚上接有从片; 从8259A, 用ID2ID1ID0的编码表示本从片接在主8259A的哪根引脚上; IR0IR7对应的编码为000111。,ICW4中断结束, 嵌套方式设定,ICW4使用奇端口(A0=1); 它确定中断结束的方式和中断嵌套的方式,ICW4的格式:,D0 (PM)位: 系统选择。 D0 =0, 用于8085 系统;D0=1,用于8086系统 D1 (AEOI)位: 中断结束方式选择。 D1=0,普通EOI方式;D1=1,自动EOI方式 D3(BUF)位: 缓冲方式选择。 D3 =1,工作
42、于缓冲方式 D3=0,工作于非缓冲方式 在缓冲方式下, SP/EN引脚输出给总线收发器, 此时, 由M/S位来定义本8259A是主片或是从片。,ICW4中断结束, 嵌套方式设定,D2(M/S)位: 主/从片选择。 当BUF=1时(缓冲方式), D2=0为从片; D2=1表示主片; 当BUF=0时, M/S位无意义。 D4(SFNM)位: 中断嵌套方式选择。 D4=0表示普通全嵌套方式; D4=1表示特殊全嵌套方式。 D7D6D5=000,为特征位,ICW4中断结束, 嵌套方式设定,例5.9 多片8259A级连方式连接, 从片A和B的中断请求线INT分别接到主片的IR3和IR6, 故:,从片A的
43、ICW3=0000 0011B=03H 从片B的ICW3=0000 0110B=06H 主片的 ICW3=0100 1000B=48H 从片A程序段为: MOVAL , 03H; 写从片A的ICW3 OUT0A1H , AL; ICW3的端口地址 (A0=1),从片B的程序段: MOVAL , 06H; 写从片B的ICW3 OUT0B1H , AL; ICW3的端口地址 (A0=1) 主片的程序段: MOVAL , 48H;写主片的ICW3 OUT81H , AL; ICW3的端口地址 (A0=1),例5.10 PT86单板机中, CPU为 8086, 非自动结束方式;使用2片8259A, 非
44、缓冲方式; 主片为特殊全嵌套方式。 主片的 ICW4=0001 0101B=15H 程序段为: MOVAL , 15H ; ICW4的内容 MOVDX , 0FFDFH; ICW4的端口地址(A0=1) OUTDX , AL,操作命令字OCW,8259A工作期间,可以随时接受操作命令字OCW OCW共有3个:OCW1OCW3 OCW的写入时没有顺序要求,OCW1中断屏蔽字,OCW1占用奇地址(A0=1),IRi输入中断请求进行屏蔽控制; OCW1格式:,Di(Mi)=1, 则IRi位中断请求被屏蔽 Di(Mi)=0, 则IRi位中断请求被开放,例.5.11 要使IR3开放, 其余均被屏蔽, 则
45、 OCW1=1111 0111B=0F7H 程序段为: MOV AL , 0F7H OUT 21H , AL; 21H是8259A奇端口(A0=1),例5.12 IMR寄存器的内容可读出。 MOV AL , 0; 置IMR为全“0” OUT 21H , AL ; OCW1的口地址(奇地址) IN AL , 21H; 读IMR(奇地址) OR AL , AL; 检查是否为全“0” JNZ ERR; 不为“0” , 则转错误处理 MOV AL , 0FFH; 置IMR为全“1” OUT 21H , AL; OCW1的口地址 IN AL , 21H; 读IMR ADD AL , 1; 检查是否为全“
46、1” JNZ ERR ; 不为全“1”, 转错误处,OCW2 优先级循环及结束方式操作字,OCW2占用偶地址(A0=0),它设定8259A的中断优先级循环和结束方式 OCW2格式,OCW1格式说明,D7(R): 中断优先级循环设定 D7=0, 固定优先权方式 D7=1, 循环方式 D6(SL): 中断级别指定 D6=0, 不指定中断级,L0L2编码无效 D6=1, 用L0L2编码来指定中断优先级,D5(EOI): 中断结束命令位 当ICW4中的AEOI位=1时,D5=1可使 ISR寄存器中相应位清“0” 。 D2D1D0(L2L1L0): 中断等级编码。 L2L1L0的8种编码: 000B11
47、1B分别与IR0IR7 对应 D4D3:特征位 D4D3=00 ,表示是OCW2,OCW1格式说明,R, SL, EOI不同设置的意义说明,编码=001: 普通EOI命令。 在中断服务程序结束时发出。8259A接到该命令, 将ISR中优先级最高的置“1”位清“0” 。 编码=011: 特殊EOI命令。当中断处理结束, 8259A接收到该命令后, 将ISR中由L2L1L0编码指定的相应位清“0” 。 编码=101:普通EOI循环命令。将ISR中优先级最高的置“1”位清“0” , 并将刚结束的中断请求IRi赋予最低优先级, 把最高优先级赋予 IRi+1, 其它级别按循环排序。 编码=111: 特殊
48、EOI循环命令。将ISR中由L2L1L0编码指定的相应位清“0” , 并将最低优先级赋予这一中断请求, 最高优先级赋予它的下一级中断请求, 其它级别按循环方式改变。,编码=000和100: 使8259A取消自动EOI循环方式(复位)和设置自动EOI循环方式(置位) 。在自动EOI循环方式下, 8259A在接收到中断响应信号后, 将 ISR中相应位清“0”, 并将最低优先级赋予这一中断请求, 最高优先级赋予它的下一级中断请求, 其它级别按循环方式依次改变。 编码=110: 向8259A发置优先权命令,将最低优先级赋予由由L2L1L0编码指定的中断请求IRi, 其它中断请求的级别按循环方式分别赋给
49、。,R, SL, EOI不同设置的意义说明,OCW3查询中断方式和特殊屏蔽方式操作,OCW3的端口为偶地址(A0=0) OCW3格式为,D4D3=01是OCW3的特征位 D6(ESMM): 特殊屏蔽方式允许位 ESMM=0, 将SMM位屏蔽,使其无效; ESMM=1, 开放SMM位,使其有效。 D5(SMM): 特殊屏蔽方式设定 当ESMM=1时,若SMM=1, 选择特殊屏蔽方式; SMM=0, 不选择特殊屏蔽方式 D2(P): 查询命令标识位 P=1, CPU将执行一条读状态字指令,并使读其它寄存器命令无效; P=0, 不读中断状态字。,OCW3格式说明,D1(RR)D0(RIS): 读IS
50、R和IRR中的状态信息标识位,仅当P=0时有效。 RR=1, RIS=0 表示在下一条“IN”指令时从偶地址(A0=0)读IRR中的状态信息; RR=1, RIS=1 表示在下一条“IN”指令时从偶地址(A0=0)读ISR中的状态信息; RR=0, 则RIS位无效。 IMR中的信息可直接用“IN”指令从奇地址(A0=1)端口读出。,OCW3格式说明,查询中断状态字,当P=1时,表示向8259A发查询命令,可读出中断状态字,了解8259A当前的中断状态 中断状态字的格式:,D7(IR): 有无中断请求位 IR=1, 表示有中断请求; IR=0, 表示无中断请求。 D2D1D0(W2W1W0):
51、当前正在请求的中断的最高优先级编码: W2W1W0 = 000111分别与IR0IR7 对应,使用查询中断方式时,CPU应先关闭其中断请求,再发查询命令字(P=1的OCW3), 然后用“IN”指令读中断状态字。,中断状态字的格式说明,例5.13 若对IR3中断源采用非自动指定(特殊)中断结束方式,则: OCW2 = 0110 0011B=63H ; 程序段为: MOV AL , 63H ; 将OCW2写入偶端口20H(A0=0) OUT 20H , AL,例5.14 特殊屏蔽方式的编程。设系统正为IR4服务,同时允许级别较低的中断请求进入。 方法:先用特殊屏蔽命令将IR4中断暂时屏蔽,再响应较
52、低级别的中断请求,完成较低级别的中断服务后,解除对IR4的屏蔽,继续为IR4服务。 编程: 为IR4中断服务程序 ,CLI;关中断 MOV Al , 10H; 置OCW1的M4=1, 屏蔽IR4 MOV DX , PORT1; OCW1的口地址(A0=1) OUT DX , AL MOV AL , 68H; 置OCW3为特殊屏蔽方式 MOV DX , PORT2; OCW3的口地址(A0=0) OUT DX , AL STI; 开中断 CLI ; 关中断 MOV AL , 48H ;置OCW3为复位特殊屏蔽方式,MOV DX , PORT2; OCW3的口地址(A0=0) OUT DX , A
53、L MOV AL , 0 ; 置OCW1的M4=0, 开放IR4 MOV DX , PORT1; OCW1的口地址(A0=1) OUT DX , AL STI MOV AL , 01100 L2L1L0; OCW2 指定中断结束 MOV DX , PORT2; OCW2的口地址 OUT DX , AL IRET; 中断返回,例5.15 通过 OCW3读8259A的状态。 读IRR:OCW3=0000 1010B =0AH 读ISR: OCW3=0000 1011B =0BH 编程: MOVAL , 0BH; OCW3表示要读ISR OUT 20H , AL; 20H是OCW3的口地址 NOP
54、; 空拍延时 INAL , 20H; 读ISR的内容(偶地址A0=0) MOVAH , AL; 保存ISRAH ORAL , AH; 是否为全0? JNZAW_INT; 否,转硬件中断程序,5.3.3 8259A在IBM PC系列机上的应用,使用要求与特点: 采用2片8259A级连,共15级向量中断; 从片的INT接到主片的IR2; 主从片的中断请求信号均采用边沿触发; 采用完全嵌套方式,优先级排序为: 0、1、 815、 3、 4、5、6、7级; 采用非缓冲方式; 07级对应的中断类型号为80FH; 815级对应的中断类型号为70H77H,8259A在IBM PC系列机上的应用,8259A在
55、IBM PC系列机上的应用(续),对比在IBM PC/XT机的应用,硬件连接图 初始化编程 ;初始化8259A主片: (流程) INTA00 EQU 020H; 8259A主片端口0 INTA01 EQU 021H; 8259A主片端口1 MOV AL , 11; ICW1: 边沿触发、多片、写ICW4 OUT INTA00 , AL JMP SHORT $2; 端口延时要求 MOV AL , 8; ICW2: 中断类型号的高5位 OUT INTA01 , AL,JMP SHORT $2; 端口延时要求 MOV AL , 04H; ICW3:主片的 IR2上接从片 OUT INTA01 , A
56、L; (S2=1) JMP SHORT $2 ; 端口延时要求 MOV AL , 01H ; ICW4: 非缓冲,全嵌套 OUT INTA01 , AL; 非自动结束 ;初始化从片: INTB00 EQU 0A0H ; 8259A从片端口0 INTB01 EQU 0A1H ; 8259A从片端口1 ,MOV AL , 11; ICW1: 边沿触发、多片、写ICW4 OUT INTB00 , AL JMP SHORT $2; 端口延时要求 MOV AL , 70H; ICW2: 中断类型号的高5位 OUT INTB01 , AL JMP SHORT $2; 端口延时要求 MOV AL , 02H
57、; ICW3: 从片的INT接主片IR2 OUT INTB01 , AL; (ID2ID1ID0=010) JMP SHORT $2 ; 端口延时要求 MOV AL , 01H; ICW4: 非缓冲,全嵌套 OUT INTB01 , AL ; 非自动结束 ,5.3.4 外部中断服务程序,编写外部可屏蔽中断服务程序,需注意: 发送中断结束(EOI)命令 一般只能采用存储单元传递参数 不要使用DOS系统功能调用 中断服务程序尽量短小,编写主程序,需注意: 修改中断向量 控制CPU的中断允许标志 设置8259A的中断屏蔽寄存器,例5.16 可屏蔽中断服务程序的编写。要求:,8259A的IR0(中断类
58、型号:08H)中断请求来自定时器8253,每隔55ms产生一次; 本中断服务程序的功能为:每次中断显示一串信息,显示10次即退出 用内存单元在主程序与外部中断服务程序之间传递参数:中断次数 显示信息也安排在共同的数据段中,数据段,intmsgdb A 8259A Interrupt ! db 0dh,0ah,0 counterdb 0,例5.16,保存中断向量,mov ax,3508h int 21h push bx;保存偏移地址 push es;保存段基地址,例5.16,设置中断向量,cli push ds mov dx,offset new08h mov ax,seg new08h mov
59、 ds,ax mov ax,2508h int 21h pop ds,例5.16,设置中断寄存器,in al,21h push ax and al,0feh;允许IRQ0 out 21h,al mov counter,0;设置中断次数初值 sti;开中断,例5.16,循环等待中断,start1:cmp counter,10 jb start1;中断10次退出,例5.16,中断就在主程序循环当中,进入中断服务程序,new08hproc sti;开中断 push ax;保护寄存器 push bx push ds mov ax,data mov ds,ax;设置数据段DS,例5.16,中断处理,inc counter mov si,offset intmsg;显示信息 call dpstri,例5.16,显示字符串,dpstriproc;显示字符串子程序 push ax push bx dps1:lodsb cmp al,0 jz dps2,例5.16,显示字符串(续),m
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 反传销会议课件
- 2026秋小学人教版数学四年级上册第三单元学情测试练习卷及参考答案
- 防踩踏安全常识课件
- 分层理论的课件
- 妇产科科普课件
- 妇产科分娩课件
- 9H-carbazole-2-7-dicarboxylic-acid-生命科学试剂-MCE
- 帆船画教学课件
- 粉尘的教学课件
- 粉尘爆渣课件
- 和面机操作安全培训课件
- 《精密和超精密加工技术》课件-第9章 纳米技术与3D打印技术
- 医疗器械售后服务承诺书模板范文
- 反式肩关节置换术的护理
- QGDW11451-2015架空输电线路标识及安装规范
- 国家职业标准 4-07-03-02 劳动关系协调师 (2025年版)
- T-CNFPIA 3002-2024 T-CBIAS 2105-2024 无醛人造板及其制品
- 航天科工网上测评题库下载
- 9《生活离不开他们》(教学设计)2023-2024学年统编版道德与法治四年级下册
- 初中地理课标人教版分析
- 北师大版七年级英语上册教案(全册)
评论
0/150
提交评论