
汇编语言8259.ppt
22页6.5 8259 PIC(可编程中断控制器),静态NMOS工艺,单电源+5V,28脚DIP 与8080/8085、8086/8088兼容:边缘触发/电平触发、有/无缓冲 可编程的中断方式:全嵌套、循环优先级、特殊屏蔽、查询方式 8级优先控制,可级联(8+1)片扩充到64级硬件中断 可分别屏蔽中断请求(IMR) 中断响应时送出用户编程的中断类型码 内部寄存器状态可读(IRR、ISR、IMR),8259 PIC结构,8259的读写逻辑,读写逻辑,8259的编程,芯片控制,1:电平触发 0:边缘触发,调用间隔 1:间隔为4 0:间隔为8,1:单片 0:级联方式,1:需要ICW4 0:不需ICW4,(1)初始化命令字ICW1,(2)初始化命令字ICW2,1.ICW,中断向量(号):8085:ICW1.ADI=1 A15— A8 A7 A6 A5 A4 A3 A2 A1 A0 间隔4BICW1.ADI=0 A15— A8 A7 A6 A5 A4 A3 A2 A1 A0CALL A15~A08086: ICW2:T7 T6 T5 T4 T3 T2 T1 T0CPU处理:000000T7 T6 T5 T4 T3 T2 T1 T000 硬中断08H000000 0 0 0 0 1 0 0 0 00表入口:0020H,,IR编码 0 0,,CPU设置,,中断源IR编码,设置时可为000~111,,,,IR编码 0 0 0,,5.2.2,1:特殊全嵌套 0:一般全嵌套,0x:非缓冲方式 11:缓冲方式(主) 10:缓冲方式(从),1:自动EOI 0:正常EOI,1:8086/8088 0:8080/8085,(3)初始化命令字ICW3(主从控制),主: 从:,(4)初始化命令字ICW4(工作方式),1.ICW,A0,1:有从片 0:无从片,从片标志代码,,主从控制:主ICW3: Si=1→IRi上有从片的标记。
从ICW3: ID2ID1ID0这最低3位为联向主IRi的从片标志代码主从片都存在自己的级联缓冲/比较器级联响应时: :主片输出响应从片的标记对应的标志代码,从片都把CAS2~CAS0上代码与自己标志代码比较确认被响应的从片输出中断向量号1. ICW,全嵌套:(1)一般全嵌套:IRi响应→ISRi=1,屏蔽IRi—IR7IRi接从8259,主ISRi=1时, IRi上来自从8259上更高的中断请求不能响应2)特殊全嵌套: IRi响应→ISRi=1,屏蔽IRi+1—IR7,允许同级和高级请求中断结束中断:EOI送从片清ISR位→读从片ISR为全0时→EOI送主片清ISR位5)初始化命令字的编程顺序,开始,ICW1(A0=0,D4=1),ICW2(A0=1),SNGL=0? (级联方式),ICW3(A0=1),IC4=1?,ICW4(A0=1),准备接受中断,,,,,Y,Y,N,N,,,,,,,,,,,,,,,,,,,,,,,开始,ICW1(A0=0,D4=1),ICW2(A0=1),SNGL=0? (级联方式),ICW3(A0=1),IC4=1?,ICW4(A0=1),准备接受中断,中断屏蔽:,2.OCW,Mi=1→IRi被屏蔽, Mi=0允许IRi产生INT;屏蔽IRi,不影响其它IR。
OCW1:,2.OCW,设置L2L1L0指定的IR,L2L1L0 :IR的优先级码(BCD),1:循环优选级 0:固定优选级,0:自动中断结束EOI,A0,,,1:中断完成之后需要发送中断结束命令OCW2:,2. OCW,(2) 优先级,(a)固定优先级:IR0~~IR7(最低),(1) 中断结束,,OCW2的编程:,2. OCW,(2) 优先级(续),(b)循环优先级:,,置1:允许SMM,置1:特屏,置1:查询命令,RR: RIS:,2.OCW,A0,OCW3:,,,3. OCW的编程,(1) 特殊屏蔽,(a)一般屏蔽通过OCW1,使8259A中的屏蔽寄存器IMR中的一位或若干位置1来屏蔽IRR对应位的中断源一个中断源的屏蔽不影响其他中断源的请求当某一中断请求被响应时,ISR中相应位置1,屏蔽了同级(一般全嵌套方式)和较低级中断请求IMRi=1→IRi被屏蔽,不影响IR上操作ISRi=1→IRi—IR7被屏蔽(FUM)/ IRi+1—IR7被屏蔽(SFUM),3. OCW的编程,(1) 特殊屏蔽(续),(b)特殊屏蔽方式在某些希望一个中断服务程序能动态改变系统优先级结构的场合,常采用特殊屏蔽方式。
即在此中断服务程序中,用OCW1将屏蔽寄存器中本级中断的对应位置1,即将本级中断屏蔽;然后写入OCW3,使ESMM=1、SMM=1,这样使中断服务寄存器中当前对应位自动清0,为开放较低级中断请求提供可能特殊屏蔽方式总是在中断处理程序中使用的采用这种方式后,由于本级中断在中断服务程序中被屏蔽,对外界来说,好像CPU未处理任何中断这样即使是最低级中断请求,也会得到响应需要特殊屏蔽方式复位时,给8259A送OCW3,使ESMM=1、SMM=0;然后送OCW1,使本级中断的屏蔽位清除,最后向8259A送中断结束命令结束服务OCW3——ESMM,SMM=11IMRi=1 IRi被屏蔽,允许未被IMR屏蔽ISRi=1 的中断请求,,3. OCW的编程,(2) 查询中断,IF=0 随后的 (当 =0)作为 →ISR位置1OCW3 P=1 IN的IRR中最高级IR二进制代码→DB(A0=0)I x x x x W2 W1 W00:无中断 1: 有中断 二进制码→转入相应中断服务程序用途:1.无需中断响应,节省存储空间 2.把中断扩大到64级以上,一种用软件确定中断请求位的方式,一般在一个中断服务程序可为几个中断设备服务的场合使用。
其特点是外设仍通过8259A申请中断(可为边沿触发或电平触发,由ICW1设置)但8259A却不使用INT信号向CPU申请中断;CPU内部将IF复位,禁止CPU用硬件响应中断请求;CPU用软件查询确定中断源,从而实现对设备的中断服务CPU的查询命令是通过OCW3的P=1设置来实现的,CPU随后的IN指令作为中断响应若有中断请求,便识别出最高级的中断请求,使ISR中相应位置位,转入相应的中断服务程序1.连接 1个主片,至多8个从片(7n+1级中断),从片INT→主片IRi上,主片INT→CPU INTR上 非缓冲方式:主片 →Vcc, 从片 →GND 主从片都有各自独立的I/O空间都接CPU系统的 ,主从CAS2~CAS0互连,主片输出,从片输入 从片的IRi上可带下级8259的INT,但不能用向量中断,只能查询中断地址空间另设, 、 CAS2~CAS0不用, 作响应输入,8259的级联,8259的级联图,8259的级联,2.初始化 主、从8259都要分别设置 ICW1—SNGL←0 ICW2:各自分别设置 ICW3:主片设置连从片的IRi的标记从片设置连主片的IRi的标志代码 ICW4:主片SFUM ←1,从片SFUM ←0BUF和M/S根据情况设置 其它各自按情况设置 3.中断过程 (1)IR0~IR7中1或几条请求有效,IRRi←1 (2)优先级判优电路根据IRR、IMR、ISR的状态选出未屏蔽的最高优先级的IRRi作为INT→CPU INTR (3)当IF=1,在指令结束时,CPU响应中断。
8259的级联,(4)CPU处理中断向量号,保护现场,转入中断服务程序 (5)中断嵌套 中断服务程序中IF=1,允许嵌套 优先级高的中断请求可以中断优先级低的中断服务 主片SPUM方式下允许同一从片实行中断嵌套 (6)中断服务 (7)中断结束 非AEOI要发EOI命令,清除ISRi位,恢复标志和断点返回主程序 在SPUM要发送两次EOIEOI→从8259,测试从8259的ISR 为全0,EOI →主8259不为0,不向主8259发EOI,,中断处理程序举例,…… OLD0C DD ? …… CODE SEGMENT…… MOV AX, 350CH ; 保存原来的0CH中断向量 INT 21H MOV WORD PTR OLD0C,BX MOV WORD PTR OLD0C+2,ES MOV AX, CODE ; 写入新的0CH中断向量 MOV DS,AX MOV DX,OFFSET SERVICE MOV AX,250CH INT 21H …… ; 其它程序段 ; 中断处理子程序,; 中断处理子程序 SERVICE PROC PUSHA ; 保护现场PUSH DSSTI ; 打开中断……; 串口数据处理程序 ……CLI ; 关闭中断POP DS ; 恢复现场POPAIRET SERVICE ENDP,。
