六章输入输出和中断技术2ppt课件.ppt

上传人:本田雅阁 文档编号:2588707 上传时间:2019-04-13 格式:PPT 页数:66 大小:654.01KB
返回 下载 相关 举报
六章输入输出和中断技术2ppt课件.ppt_第1页
第1页 / 共66页
六章输入输出和中断技术2ppt课件.ppt_第2页
第2页 / 共66页
六章输入输出和中断技术2ppt课件.ppt_第3页
第3页 / 共66页
亲,该文档总共66页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《六章输入输出和中断技术2ppt课件.ppt》由会员分享,可在线阅读,更多相关《六章输入输出和中断技术2ppt课件.ppt(66页珍藏版)》请在三一文库上搜索。

1、8259A的功能,1. 向CPU的引脚INTR发中断申请信号 当有多个外设同时发出中断请求时,能按照一定的优先级顺序,向CPU发出中断申请,使CPU能优先响应优先级最高的外部设备的中断申请。 2. 送中断类型号 在CPU中断响应周期,针对不同外设的中断请求, 向CPU传送不同的中断类型号,使CPU执行相应的中断子程。,中断申请管理接口的主要功能:,在IBM PC机由8259A可编程中断控制器(PIC)来完成。,8259A的功能,8259A可编程中断控制器可用于管理Intel 8080/8085、8086/8088、80286/80386的可屏蔽中断 8259A的基本功能 一片8259A可以管理

2、8级中断,可扩展至64级 每一级中断都可单独被屏蔽或允许 在中断响应周期,可提供相应的中断向量号 8259A设计有多种工作方式,可通过编程选择,8259A的内部结构,8259A的内部结构 1.中断请求寄存器IRR 保存从IR0IR7来的中断请求信号,某位=1表示对应的IRi有中断请求 2.中断服务寄存器ISR 保存所有正在服务的中断源,某位=1表示对应的IRi中断正在被服务 3.中断屏蔽寄存器IMR 存放中断屏蔽字,某位=1表示对应的IRi输入被屏蔽 4.中断优先权判别电路 确定是否向CPU发出中断请求,中断响应时确定ISR的哪位应置位及把相应中断的类型码放到数据总线上,8259A的内部结构

3、5. 读/写控制电路 用于控制对8259A的读、写操作。 6. 数据总线缓冲器 双向8位3态缓冲器,由它构成8259A与CPU之间的数据接口。 7. 级联缓冲/比较器 多片8259A可级联使用,最多可以组成64级中断优先级控制,此时一片8259A做主片,另外8片做从片,主从片的CAS0CAS2并接在一起,作为级联总线 8. 控制逻辑 向CPU发INT信号,接收CPU发来的INTA信号,控制8259A进入中断服务状态。,定时器,8259A的工作过程,返回,8259A的时序,8259A的工作方式,中断触发方式,优先级控制方式,两类优先级控制方式:固定优先级和循环优先级 固定优先级方式(普通全嵌套方

4、式和特殊全嵌套方式) 所有中断请求IRi的中断优先级固定不变 优先级排列顺序可编程改变 加电后8259A的默认方式,默认优先级顺序从高到低为IR0IR7,IR7,IR6,IR5,IR4,IR3,IR2,IR1,IR0,7,6,5,4,3,2,1,0,3,2,1,0,7,6,5,4,最低级,最高级,最高级,最低级,优先级,IR7,IR6,IR5,IR4,IR3,IR2,IR1,IR0,默认优先级,优先级可编程改变,固定优先级下的中断嵌套 在中断处理过程中允许被更高优先级的事件所中断称为中断嵌套。8259A有两种中断嵌套方式: 普通全嵌套方式(默认方式) 一中断正被处理时,只有更高优先级的事件可以

5、打断当前的中断处理过程而被服务。 特殊全嵌套方式 一中断正被处理时,允许同级或更高优先级的事件可以打断当前的中断处理过程而被服务。 注: 特殊全嵌套仅用于多个8259A级连时的8259A,而不能用于从属8259A或单8259A系统。,D.,主8259A,IR0 IR1 IR2 IR3 IR4 IR5 IR6 IR7,一般嵌套方式: 从片的INT被主片封锁,故更高级别的IR0-IR2中断也无法得到响应,特殊嵌套方式: 因主片不封锁从片的INT,故级别高的IR0-IR2中断可以得到响应。(但IR3-IR7仍被本从片封锁),C.,假定IR3发生中断,并获得服务,一般嵌套方式:IR4的中断被服务时,这

6、些中断将被封锁。,B.,特殊嵌套方式:IR4的中断被服务时,只封锁IR5-IR7。,A.,INT,E.,从8259A,INT,IR0 IR1 IR2 IR3 IR4 IR5 IR6 IR7,一般全嵌套方式与特殊全嵌套方式的区别,去CPU,循环优先级方式(自动循环方式和特殊循环方式) 中断源轮流处于最高优先级,即自动中断优先级循环 某中断请求IRi被处理后,其优先级别自动降为最低,原来比它低一级的中断上升为最高级 初始优先级顺序可用编程改变(特殊循环方式),IR7,IR6,IR5,IR4,IR3,IR2,IR1,IR0,7,6,5,4,3,2,1,0,2,1,0,7,6,5,4,3,最低级,最高

7、级,最高级,最低级,ISR内容,IR7,IR6,IR5,IR4,IR3,IR2,IR1,IR0,IR4的服务结束以前,0,1,0,1,0,0,0,0,0,1,0,0,0,0,0,0,IR4的服务结束以后,ISRi,结束中断处理方式,当某一IRi中断被服务时,ISR中的相应位ISRi=1。当服务结束后,则必须清零该ISRi位。使ISRi=0是通过向8259A发出中断结束命令(EOI命令)实现的。 三种EOI命令 自动EOI(AEOI)(自动EOI方式) 非指定EOI(NSEOI)(普通EOI方式) 指定EOI(SEOI)(特殊EOI方式),AEOI:在第2个INTA#结束时,由8259A使ISR

8、i自动复位; 因不保留当前正在服务的中断的状态,故AEOI不能用于中断嵌套方式 NSEOI:由CPU发出正常EOI命令,该EOI命令使ISRi=1的位中优先级最高的那一位复位。 用于普通全嵌套方式 SEOI:由CPU发出一条SEOI命令,该EOI命令中指出了所要复位的ISR的位号。 用于非全嵌套方式,中断服务程序,向从PIC发EOI命令,读从PIC的ISR,全0?,向主PIC发EOI命令,Y,IRET,恢复现场,N,特殊全嵌套方式下的EOI处理 只有当从PIC的中断全部处理完后,才能向主PIC发EOI命令,屏蔽中断源的方式,普通屏蔽方式: IMR屏蔽字决定了允许或禁止某位IRi所对应的中断:I

9、Mi=1 禁止, IMi=0 允许。 特殊屏蔽方式: 提供了允许较低优先级的中断能够得到响应的特殊手段。 原理:假定当前正在处理IR6,先进入特殊屏蔽方式,然后设置IM6=1。这时,除IR6外的所有中断请求均能得到响应。 特殊屏蔽方式中只能用SEOI命令结束中断。,特殊屏蔽例: ;IR4中断处理程序 CLI MOV AL,68H ;OCW3:0 1 1 0 1 0 0 0 OUT 0C0H,AL ;设置特殊屏蔽方式 IN AL,0C2H OR AL,10H ;屏蔽IR4 OUT 0C2H,AL STI ;IR7请求,响应,返回 CLI ;为设命令字 IN AL,0C2H ;读出屏蔽字 AND

10、AL,0EFH ;清除IMR4 OUT 0C2H,AL MOV AL,48H ;OCW3:0 1 0 0 1 0 0 0 OUT 0C0H,AL ;取消特殊屏蔽 STI ;继续IR4中断服务 MOV AL,20H ;OCW2:0 0 1 0 0 0 0 0 (EOI) OUT 0C0,AL IRET,中断触发方式,边沿触发 IRi出现上升沿表示有中断请求 电平触发 IRi出现高电平表示有中断请求 在第1个INTA#结束前,IRi必须保持高电平,中断的级连,一个系统中,8259A可以级连,有一个主8259A,若干个(最多8个)从8259A 级连时,主8259A的三条级连线CAS0CAS2作为输出

11、线,连至每个从8259A的CAS0CAS2 每个从8259A的中断请求信号INT,连至主8259A的一个中断请求输入端IR 主8259A的INT线连至CPU的中断请求输入端 SP*/EN*在非缓冲方式下,规定该8259A是主片(SP*1)还是从片(SP*0),CAS0 IR0 CAS1 IR1 CAS2 IR2 IR3 INTA IR4 IR5 INT IR6 IR7 SP/EN,CAS0 INTA CAS1 CAS2 INT IR0 IR1 SP/EN IR7,CAS0 IR0 CAS1 IR1 CAS2 IR2 IR3 INTA IR4 IR5 INT IR6 IR7 SP/EN,INTA

12、,INTR,+5V,8259级连工作示意图,返回,CPU,8259A,8259A,8259A,8259级联工作示意图,返回,8259A的编程,8259A的控制命令分为 初始化命令字ICW ICW1ICW4 向8259A写入ICW的过程称为初始化编程 操作命令字OCW OCW1OCW3 向8259A写入OCW的过程称为操作方式编程,8259A的编程,8259A内部寄存器的寻址方法,需要CS#、A0、RD#、WR#和D4、D3的配合 内部寄存器的访问方法如下表:,8259A的初始化顺序,8259的初始化流程如图 注意次序不可颠倒,写ICW1,写ICW2,级连?,写ICW3,需ICW4?,写ICW4

13、,N,N,Y,Y,8259A的控制命令字,初始化8259A必须从ICW1开始 写ICW1意味着重新初始化8259A 写入ICW1后,8259A的状态如下: 清除ISR和IMR(全0); 将中断优先级设成初始状态:IR0最高,IR7最低; 设定为一般屏蔽方式; 采用非自动中断结束方式; 状态读出逻辑预置为读IRR。 准备顺序接收其他ICW,ICW1初始化字,表示可以任意 为1为0都可以(建议为0),1只能为1,作为标志,中断触发方式: LTIM1,电平触发方式 LTIM0,边沿触发方式,规定单片或级连方式: SNGL1,单片方式 SNGL0,级连方式,是否写入ICW4 IC41,要写入ICW4

14、IC40,不写入ICW4,即ICW4规定的位全为0,A0 = 0,ICW2中断向量码,A0 = 1,设置中断向量号 T7T3为中断向量号的高5位 低3位由8259A自动确定: IR0为000、IR1为001、IR7为111,ICW3级连控制字,级连命令字 主片8259A:Si1对应IRi接有从片;否则IRi没有连接从片 从片8259A:ID0ID2编码说明从片INT引脚接到主片哪个IR引脚,A0 = 1,ICW3级连控制字(续),ICW3必须与主从片的连接关系一致: 例如,主片的IR4与从片的INT线连接,则主片的ICW3=10H,从片的ICW3=04H。 中断响应时,主片通过级连线CAS2-

15、CAS0送出被允许中断的从片标识码,各从片用自己的ICW3与CAS2-CAS0比较,二者一致的从片才可发送中断向量码。,ICW4中断结束方式字,嵌套方式: 特殊全嵌套方式(SFNM1) 普通全嵌套方式(SFNM0),数据线的缓冲方式: 缓冲方式(BUF1) 非缓冲方式(BUF0),主片/从片选择: 主片(M/S=1) 从片(M/S=0),中断结束方式: 自动中断结束(AEOI1) 非自动中断结束(AEOI0),微处理器类型: 16位80x86(PM1) 8位8080/8085(PM0),A0 = 1,例1、试按照如下要求对8259A设置初始化命令字:系统中仅用一片8259A,中断请求信号采用边

16、沿触发方式;中断类型码为08H0FH;用全嵌套、缓冲、非自动结束中断方式。8259A的端口地址为20H和21H。 该片8259A的初始化设置的程序段如下: MOV AL, 13H ;ICW1=00010011 OUT 20H, AL MOV AL, 8 ;ICW2=00001000 OUT 21H, AL MOV AL, 0DH ;ICW4=00001101 OUT 21H, AL,例2、试对一个主从式8259A进行初始化命令字的设置。从片的INT与主片的IR2相连。从片的中断类型码为70H77H,端口地址为A0H和A1H;主片的中断类型码为08H0FH,端口地址为20H和21H。中断请求信号

17、采用边沿触发,采用全嵌套、缓冲、非自动结束中断方式。 主8259A: mov al,11h ;ICW1=00010001 out 20h,al mov al,08h ;ICW2=00001000 out 21h,al mov al,04h ;ICW3=00000100 out 21h,al mov al,0dh ;ICW4=00001101 out 21h,al,从8259A: mov al,11h ;ICW1=00010001 out 0a0h,al mov al,70h ;ICW2=01110000 out 0a1h,al mov al,02h ;ICW3=00000010 out 0a1

18、h,al mov al, 09h ;ICW4=00001001 out 0a1h,al,8259A的操作命令字OCW,OCW用于设置8259的工作状态 在初始化后写入 OCW的写入顺序可任意 写入地址要求: OCW1必须写入奇地址端口(A0=1) OCW2,OCW3必须写入偶地址端口(A0=0),OCW1中断屏蔽字,Mi=1 中断请求线IRi被屏蔽(不允许中断) =0 允许该IRi中断 OCW1将写入IMR寄存器。 A0=1时读OCW1可读出设置的IMR内容。,A0 D7 D6 D5 D4 D3 D2 D1 D0 1 M7 M6 M5 M4 M3 M2 M1 M0,OCW2中断结束和优先级循环

19、,L2L0: 优先级编码 R: 优先级是否循环(0:固定; 1:循环) SL: 指定优先级 EOI: 结束中断命令 R SL EOI(P258,图6-39) 0 0 1 非指定EOI 命令(NSEOI),全嵌套方式 0 1 1 指定EOI 命令(SEOI),全嵌套方式,按L2-L0编码复位ISR 1 0 1 NSEOI 命令,优先级自动循环 1 1 1 NSEOI 命令,按L2-L0编码循环优先级(L2-L0设为最低优先级) 1 0 0 自动EOI时,设置优先级自动循环 0 0 0 自动EOI时,取消优先级自动循环(固定优先级) 1 1 0 特殊循环优先级,L2-L0设为最低优先级,A0 D7

20、 D6 D5 D4 D3 D2 D1 D0 0 R SL EOI 0 0 L2 L1 L0,OCW3屏蔽方式和读出控制字,ESMM: 允许使能特殊屏蔽方式 SMM: 特殊屏蔽方式 ESMM SMM 1 1 特殊屏蔽方式置位 1 0 特殊屏蔽方式复位 0 x 非特殊屏蔽方式 P(Polling): =1 查询方式 =0 非查询方式,A0 D7 D6 D5 D4 D3 D2 D1 D0 0 0 ESMM SMM 0 1 P RR RIS,RR: 读寄存器 RIS: ISR/IRR选择 RR RIS 1 1 读ISR 1 0 读IRR 0 x 无效,OCW3(续),查询方式允许8259A不工作于中断

21、方式,而是以查询方式工作。 CPU先写一个D2=1的OCW3,再对同一地址读入,即可得到如下状态字节: I x x x x R2 R1 R0 I=1表示有中断请求,优先级最高的中断请求号为R2-R0 此查询步骤可反复执行,以响应多个同时发生 的中断。 读IRR/ISR:写入此命令后,随后再对同一地址读,即可得到IRR或ISR的内容。,8295A的应用,18259A在IBMPC/XT上的应用 28295A在IBM PC/AT上的应用,1. 8259A在IBM PC系列机上的应用,在IBM PC/XT中,采用1片8259A来管理可屏蔽中断 ROM BIOS中规定使用20H(A0=0)和21H(A0

22、=1)I/O端口 初始化规定的工作方式:边沿触发、缓冲方式、普通EOI方式、全嵌套方式 可屏蔽中断类型号为08H-0FH,IBM PC/XT的8259A连接示意图,IBM PC/XT机的外中断的中断源和中断类型码,ROM-BIOS对8259A的初始化程序: MOV A1,00010011H ;写入ICW1,设定边沿触发,OUT 20H,A1 ;单片方式 MOV A1,00001000H ;写入ICW2,设定IRQ0的中断OUT 21H,A1 ;向量号为08H MOV A1,00001101H ;写入ICW4,设定普通全嵌套 OUT 21H,A1 ;方式,普通EOI,选用8086/8088CPU

23、 设置中断屏蔽寄存器: IN AL,21H ;读IMR AND AL,011111100H ;只允许IR0和IR1 OUT 21H,AL ;写入OCW1,中断结束时的处理: MOV AL,00100000H ;OCW2=20H OUT 20H,A1 IRET 读IRR(ISR): MOV AL,00001010H ;写OCW3,读IRR OUT 20H,AL NOP ;延时 IN AL,20H ;读IRR,2. 8259A在IBM AT系列机上的应用,在IBM PC/AT中,采用2片8259A来管理可屏蔽中断 主片端口地址为20H和21H,从片端口地址为A0H和A1H 初始化规定的工作方式:边

24、沿触发、非缓冲方式、普通EOI方式、全嵌套方式 主片可屏蔽中断类型号为08H-0FH,从片为70H-77H,初始化(P262) 结束中断: ;从片发EOI命令 MOV AL,00100000H OUT 0A0H,AL ;写从片EOI命令 ;读ISR MOV AL,00001011h ;写OCW3,读ISR OUT 0A0H,AL NOP IN AL,0A0H ;读ISR AND AL,AL ;不为0则不向主片发EOI命令 JNZ L1 ;主片发EOI命令 MOV AL,00100000H OUT 20H,AL ;写主片EOI命令 L1: IRET,6.6 中断服务程序设计,中断程序设计的一般过

25、程(p264): 1、设置中断向量表 2、设置中断控制器 3、设置CPU的中断允许标志IF 4、设计中断服务程序,18259A时钟中断程序,时钟信号连接在IR0上,申请的中断类型号为08H。 时钟信号是一个频率为18.2HZ的方波信号, 即每秒向8259A发出18.2次的中断申请。 如果CPU响应该中断申请,则以每秒18.2次的频率执行08H类型的中断子程。,分析,中断申请的任务是每5秒显示一个字符A 1秒执行18.2次,则5秒执行18.25=91次, 只在执行到第91次时显示A,其它不显示。 在中断子程中用一个量来计数中断子程被执行的次数, 即CPU响应IR0中断申请的次数。 当达到91次,

26、则显示A,并将计数值清0,重新计数; 其它情况只计数,不显示A。 中断子程的最后应发中断结束命令EOI。,IN AL, 21H ;设置8259A中断屏蔽字, AND AL, 1111 1110B ;允许IR0中断 OUT 21H, AL MOV CX, 0 ;置中断子程计数器初值为0 STI ;CPU开中断 MOV SI, 8000H ;用双重循环延时, w2: MOV DI, 8000H ;模拟CPU对其他任务的处理 w1: DEC DI ;DI,SI的值可修改,控制主程执行时间 JNZ w1 DEC SI JNZ w2 POP DX ;恢复系统08H类型中断向量 POP DS MOV AL

27、, 08H MOV AH, 25H INT 21H MOV AH, 4CH ;返回DOS INT 21H,display PROC ;自编的08H类型中断子程 PUSH AX ;保护现场 INC CX ;执行中断子程一次,计数值加1 CMP CX, 91 JNZ exit ;到91次了吗?未到跳转至exit MOV DL, A ;到,显示 A MOV AH, 02 INT 21H MOV CX, 0 ;清计数值为0,重新计时 exit: MOV AL, 20H ;发中断结束命令EOI OUT 20H, AL POP AX ;恢复现场 IRET ;中断返回 display ENDP code E

28、NDS END start,例2 编写09H类型的键盘中断子程,完成每操作键盘上任意键,屏幕上显示 HeLLo!,2键盘中断程序,说明: 键盘接口通过8259A的IR1发中断申请, 类型号09H 键盘接口对按下键和释放键都向8259A发出中断申请, 即若CPU满足响应条件,对键盘上的一个按键操作, CPU将执行两次09H类型的中断子程:按下键一次,释放键一次 CPU可从60H端口读取操作键的扫描码, 每个键对应有一个扫描码 由扫描码的D6D0判断操作的是哪一个键, 由扫描码的D7位判断是按下键,还释放键。 D7=1,释放键(断码); D7=0,按下键(通码) 键盘中断子程中应发中断结束命令,I

29、N AL, 21H ;设置8259A中断屏蔽字 AND AL, 11111101B ;允许IR1键盘中断 OUT 21H, AL STI ;开中断, IF= 1 MOV SI, 8000H ;用双重循环延时 w2: MOV DI, 8000H ;模拟CPU对其他任务的处理 w1: DEC DI ;DI,SI的值可修改,控制主程执行时间 JNZ w1 DEC SI JNZ w2 POP DX ;恢复系统09H类型中断向量 POP DS MOV AL, 09H MOV AH, 25H INT 21H MOV AH, 4CH ;返回DOS INT 21H,display PROC ;自编的09H类型中断子程 PUSH AX ;保存现场 IN AL, 60H ;读入字符扫描码 TEST AL, 80H ;判断是否是按下键操作? JNZ exit MOV AX, data ;是,显示 Hello! MOV DS, AX LEA DX, string MOV AH, 09 INT 21H exit: MOV AL, 20H ;发中断结束命令EOI OUT 20H, AL POP AX ;恢复现场 IRET ;中断返回 display ENDP code ENDS END start,作业,6-4,6-5,6-18,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 其他


经营许可证编号:宁ICP备18001539号-1