接口技术-8259A中断控制器原理及应用.ppt_第1页
接口技术-8259A中断控制器原理及应用.ppt_第2页
接口技术-8259A中断控制器原理及应用.ppt_第3页
接口技术-8259A中断控制器原理及应用.ppt_第4页
接口技术-8259A中断控制器原理及应用.ppt_第5页
已阅读5页,还剩72页未读, 继续免费阅读

下载本文档

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

文档简介

8259A中断控制器原理及应用 6 3节 2 8259A中断控制器 Intel8259A是可编程中断控制器PIC可用于管理Intel8080 8085 8086 8088 80286 80386的可屏蔽中断8259A的基本功能一片8259A可以管理8级中断 可扩展至64级每一级中断都可单独被屏蔽或允许在中断响应周期 可提供相应的中断向量号8259A设计有多种工作方式 可通过编程选择 3 8259A的内部结构和引脚 4 1 中断控制 中断请求寄存器IRR保存8条外界中断请求信号IR0 IR7的请求状态Di位为1表示IRi引脚有中断请求 为0表示无请求中断服务寄存器ISR保存正在被8259A服务着的中断状态Di位为1表示IRi中断正在服务中 为0表示没有被服务中断屏蔽寄存器IMR保存对中断请求信号IR的屏蔽状态Di位为1表示IRi中断被屏蔽 禁止 为0表示允许 与IF标志位的规定相反 5 2 与处理器接口 读写控制逻辑部分 注 ICW 初始化命令字 OCW 操作命令字 6 3 中断级连 单片8259A可支持8个中断源 采用多片8259A级连 可最多支持64个中断源 N片8259A可以支持8 N N 1 个中断源级连时只能有一片8259A为主片 其余的均为从属片 涉及到的8259A引脚包括 CAS0 CAS2 主8259A的三条级连线CAS0 CAS2作为输出线 连至每个从8259A的CAS0 CAS2SP EN 在非缓冲方式下 规定该8259A是主片 SP 1 还是从片 SP 0 IRi 每个从8259A的中断请求信号INT 连至主8259A的一个中断请求输入端IRINT 主8259A的INT线连至CPU的中断请求输入端 级连电路连接方法 演示 8259A的工作过程 8259A对中断请求的处理过程如下 当某IRi有效时 IRR相应位置1若有效的IRi未被屏蔽 则向CPU发出中断请求检测到第1个INTA 信号后 置ISRi 1 IRRi 0检测到第2个INTA 信号后 把ISRi 1中最高优先级的中断类型码放到DB上若工作在AEOI方式 在第2个INTA 结束时 使ISRi复位 否则由CPU发出EOI命令使ISRi复位 动画 9 8259A的工作过程 续 10 8259A的工作方式 理解 11 1 优先权固定方式 普通全嵌套方式8259A的中断优先权顺序固定不变 从高到低依次为IR0 IR1 IR2 IR7中断请求后 8259A对当前请求中断中优先权最高的中断IRi予以响应 将其向量号送上数据总线 对应ISR的Di位置位 至到中断结束 ISR的Di位复位 在ISR的Di位置位期间 禁止再发生同级和低级优先权的中断 但允许高级优先权中断的嵌套特殊全嵌套方式 一中断正被处理时 允许同级或更高优先级的事件可以打断当前的中断处理过程而被服务 参阅教材P190 P191 注 特殊全嵌套仅用于多个8259A级连时的主8259A 而不能用于从属8259A或单8259A系统 特殊全嵌套方式 D 主8259A IR0IR1IR2IR3IR4IR5IR6IR7 一般嵌套方式 从片的INT被主片封锁 故更高级别的IR0 IR2中断也无法得到响应 特殊嵌套方式 因主片不封锁从片的INT 故级别高的IR0 IR2中断可以得到响应 但IR3 IR7仍被本从片封锁 C 假定IR3发生中断 并获得服务 一般嵌套方式 IR4的中断被服务时 这些中断将被封锁 B 特殊嵌套方式 IR4的中断被服务时 只封锁IR5 IR7 A INT E 从8259A INT IR0IR1IR2IR3IR4IR5IR6IR7 普通 一般 全嵌套方式VS 特殊全嵌套方式 去CPU 2 循环优先级方式 中断源轮流处于最高优先级 某中断请求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 最低级 最高级 最高级 最低级 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 15 3 结束中断处理方式 什么是8259A的中断结束 8259A利用中断服务寄存器ISR判断 某位为1 表示正在进行中断服务 该位为0 就是该中断结束服务 这里说明如何使ISR某位为0 不反映CPU的工作状态 16 结束中断处理方式 续 自动中断结束方式AEOI在第2个INTA 结束时 由8259A使ISRi自动复位非自动中断结束方式1 普通中断结束方式EOI配合全嵌套 固定 优先权方式使用当CPU用输出指令往8259A发出普通中断结束EOI命令时 8259A就会把所有正在服务的中断中优先权最高的ISR位复位非自动中断结束方式2 特殊中断结束方式SEOI配合循环优先权方式使用CPU在程序中向8259A发送一条特殊中断结束命令 这个命令中指出了要清除哪个ISR位 17 4 屏蔽中断源方式 普通屏蔽方式将IMR的Di位置1 则对应的中断IRi被屏蔽 该中断请求不能从8259A送到CPU如果IMR的Di位置0 则允许IRi中断产生特殊屏蔽方式使用场合 在执行较高级的中断服务时 希望开放较低级的中断请求 原理 将IMR的Di位置1 对应的中断IRi被屏蔽的同时 使ISR的Di位置0 假定当前正在处理IR6 先进入特殊屏蔽方式 然后设置IM6 1 这时 除IR6外的所有中断请求均能得到响应 特殊屏蔽方式中只能用SEOI命令结束中断 18 5 中断触发方式 边沿触发方式8259A将中断请求输入端出现的上升沿作为中断请求信号电平触发方式中断请求端出现的高电平是有效的中断请求信号 19 6 数据线连接方式 缓冲方式8259A的数据线需加缓冲器予以驱动8259A把SP EN 引脚作为输出端 输出允许信号 用以锁存或开启缓冲器 enablebuffer 非缓冲方式SP EN 引脚为输入端 slaveprogram 若8259A级连 由其确定是主片 sp 1 或从片 sp 0 20 8259A的编程 初始化编程8259A开始工作前 必须进行初始化编程给8259A写入初始化命令字ICW ICW1 ICW4 中断操作编程在8259A工作期间可以写入操作命令字OCW OCW1 OCW3 将选定的操作传送给8259A 使之按新的要求工作还可以读取8259A的信息 以便了解它的工作状态 8259A内部寄存器的寻址方法 需要CS A0 RD WR 和D4 D3的配合内部寄存器的访问方法如下表 8259A的初始化顺序 8259的初始化流程如图 注意次序不可颠倒 写ICW1 写ICW2 级连 写ICW3 需ICW4 写ICW4 N N Y Y 8259A的控制命令字 初始化8259A必须从ICW1开始写ICW1意味着重新初始化8259A写入ICW1后 8259A的状态如下 清除ISR和IMR 全0 将中断优先级设成初始状态 IR0最高 IR7最低 设定为普通 一般 屏蔽方式 采用非自动中断结束方式 状态读出逻辑预置为读IRR 24 ICW1 初始化字 表示可以任意为1为0都可以 建议为0 1 只能为1 作为标志 中断触发方式 LTIM 1 电平触发方式LTIM 0 边沿触发方式 规定单片或级连方式 SNGL 1 单片方式SNGL 0 级连方式 是否写入ICW4IC4 1 要写入ICW4IC4 0 不写入ICW4 即ICW4规定的位全为0 ICW1 芯片控制初始化命令字 LTIM 触发方式 1高电平触发 0上升沿触发SNGL 级连控制 1单片 0级连IC4 ICW4控制 1要写ICW4 8086配合8259则此位必须为1 0不写ICW4 默认ICW4为全0 A0D7D6D5D4D3D2D1D00 xxx1LTIMxSNGLIC4 ICW1的标志 ICW2 中断向量码基值 T7 T3 中断向量码的高5位T2 T0 最低3位为中断源的序号IRn000 111分别对应IR0 IR7由8259A根据中断源的序号自动填入例如 若ICW2命令字为48H 则IR0的中断向量码为48H IR7的中断向量码为4FH 等等 A0D7D6D5D4D3D2D1D01T7T6T5T4T3xxx ICW3 级连控制字 主片的级联控制字 位映像方式 Si 1对应IRi线上连接了从片 A0D7D6D5D4D3D2D1D01S7S6S5S4S3S2S1S0 从片的级联控制字 编码方式 ID2 ID0标识码 说明本从片连接到主片的哪个IR引脚上 000 111分别对应IR0 IR7 A0D7D6D5D4D3D2D1D0100000ID2ID1ID0 ICW3 级连控制字 续 ICW3必须与主从片的连接关系一致 例如 主片的IR4与从片的INT线连接 则主片的ICW3 10H 从片的ICW3 04H 中断响应时 主片通过级连线CAS2 CAS0送出被允许中断的从片标识码 各从片用自己的ICW3与CAS2 CAS0比较 二者一致的从片才可发送中断向量码 演示 29 ICW4 嵌套方式 特殊全嵌套方式 SFNM 1 普通全嵌套方式 SFNM 0 数据线的缓冲方式 缓冲方式 BUF 1 非缓冲方式 BUF 0 主片 从片选择 主片 M S 1 从片 M S 0 中断结束方式 自动中断结束 AEOI 1 非自动中断结束 AEOI 0 微处理器类型 16位80 x86 PM 1 8位8080 8085 PM 0 ICW4 方式控制初始化命令字 SFNM 特殊全嵌套 specialfullynestedmode 1特殊全嵌套方式0一般全嵌套方式AEOI 自动EOI1自动EOI方式0非自动EOI方式 A0D7D6D5D4D3D2D1D01000SFNMBUFM SAEOI1 BUF 缓冲方式M S 主 从缓冲选择BUFM S11缓冲方式 主PIC10缓冲方式 从PIC0 x非缓冲方式 正常 初始化主片8259A moval 11h 写入ICW1 设定边沿触发 级连方式out20h al 主片I O地址是20H和21Hjmpintr1 本程序段的转移指令起延时作用 等待8259A操作结束intr1 moval 08h 写入ICW2 设定主片IR0的中断向量号为08Hout21h aljmpintr2intr2 moval 04h 写入ICW3 设定主片IR2级连从片out21h aljmpintr3intr3 moval 05h 写入ICW4 设定普通全嵌套方式 普通中断结束方式out21h al 中断控制器的初始化程序段 初始化从片8259A moval 11h 写入ICW1 设定边沿触发 级连方式out0a0h aljmpintr5intr5 moval 70h 写ICW2 设定从片IR0的中断向量号为70Hout0a1h aljmpintr6intr6 moval 02h 写入ICW3 设定从片连于主片的IR2out0a1h aljmpintr7intr7 moval 01h 写入ICW4 设定普通全嵌套方式 普通中断结束方式out0a1h al 中断控制器的初始化程序段 8259A的操作命令字OCW OCW用于设置8259的工作状态在初始化后写入 8259A工作期间 可以随时接受操作命令字OCWOCW共有3个 OCW1 OCW3OCW的写入顺序可任意 需要哪个OCW就写入那个OCW写入地址要求 OCW1必须写入奇地址端口 A0 1 OCW2 OCW3必须写入偶地址端口 A0 0 OCW1 中断屏蔽字 Mi 1中断请求线IRi被屏蔽 不允许中断 0允许该IRi中断OCW1将写入IMR寄存器 A0 1时读OCW1可读出设置的IMR内容 A0D7D6D5D4D3D2D1D01M7M6M5M4M3M2M1M0 35 OCW2 R SL和EOI配合使用产生中断结束EOI命令和改变优先权顺序 L2 L0的3位编码指定IR引脚 OCW2 中断结束和优先级循环 L2 L0 优先级编码R 优先级自动循环SL 指定优先级EOI 结束中断命令RSLEOI001非指定EOI命令 NSEOI 全嵌套方式011指定EOI命令 SEOI 全嵌套方式 按L2 L0编码复位ISR101NSEOI命令 优先级自动循环100自动EOI 设置优先级自动循环000自动EOI 取消优先级自动循环 固定优先级 111SEOI命令 按L2 L0编码循环优先级 L2 L0设为最低优先级 110按L2 L0编码循环优先级 L2 L0设为最低优先级 A0D7D6D5D4D3D2D1D00RSLEOI00L2L1L0 37 OCW3 ESMM SMM设置中断屏蔽方式 P RR和RIS规定随后读取的状态字含义 OCW3 屏蔽方式和读出控制字 ESMM 允许使能特殊屏蔽方式SMM 特殊屏蔽方式ESMMSMM11特殊屏蔽方式置位10特殊屏蔽方式复位0 x非特殊屏蔽方式P Polling 1查询方式 0非查询方式 A0D7D6D5D4D3D2D1D000ESMMSMM01PRRRIS RR 读寄存器RIS ISR IRR选择RRRIS11读ISR10读IRR0 x无效 39 读取8259状态 查询方式允许8259A不工作于中断方式 而是以查询方式工作CPU先写一个D2 1的OCW3 再对同一地址读入 即可得到如下状态字节 查询字 IxxxxR2R1R0I 1表示有中断请求 中断请求号为R2 R0此查询步骤可反复执行 以响应多个同时发生的中断 CPU可读出IRR ISR IMR和查询字A0为低 由OCW3中RR和RIS位设定读取IRR或ISR 由OCW3中P位设定读取查询字而A0引脚为高电平时读取的都是IMR 40 命令字和状态字的区别方法 利用读写信号区别写入的控制寄存器和读出的状态寄存器 利用地址信号区别不同I O地址的寄存器 由控制字中的标志位说明是哪个寄存器 由芯片内顺序控制逻辑按一定顺序识别不同的寄存器 由前面的控制字决定后续操作的寄存器 接口电路中常用的方法 8259A编程举例 按以下要求初始化8259A 接口地址为20H和21H 中断为上升沿触发 单片8259A 不写ICW4 与IR0 IR3对应的中断向量码为08H 0BH IR4 IR7不使用 根据要求 各初始化参数及工作参数如下 ICW1 00010010 12HICW2 08H中断向量码OCW1 11110000 0F0H中断屏蔽字 8259A编程举例 续 初始化程序如下 INIT8259A MOVDX 20H A0 0 写ICW1MOVAL 12H 上升沿触发 单片 不写ICW4OUTDX ALMOVDX 21H A0 1 写ICW2 OCW1MOVAL 08H ICW2OUTDX ALMOVAL 0F0H OCW1 屏蔽IR4 IR7OUTDX AL 43 8259A在IBMPC XT系列机上的应用 44 8259A在IBMPC AT系列机上的应用 45 应用注意事项 利用上升沿做为中断请求IRQ的有效信号IRQ0 IRQ7的中断向量号依次为08H 0FH IRQ8 IRQ15依次为70H 77H采用普通全嵌套优先权方式 中断优先权从高到低顺序为IRQ0 IRQ2 IRQ8 IRQ15 IRQ3 IRQ7 且不能改变采用普通中断结束EOI方式 需要在中断服务程序最后发送普通EOI命令一般采用普通屏蔽方式 通过写入IMR允许中断 但注意不要破坏原屏蔽状态 PC机外部中断程序设计 1 主程序保存原中断向量设置自己的中断向量初始化堆栈指针设置8259A的中断屏蔽字 其他的已由操作系统设置 STI2 中断服务程序保存所用到的寄存器内容中断服务程序主体恢复进入时保存的寄存器内容发EOI命令 必要时可提前 STI 必要时可提前 IRET 编写外部可屏蔽中断服务程序 需注意 不要忘记发送中断结束命令一般只能采用存储单元传递参数不要使用DOS系统功能调用中断服务程序尽量短小 47 中断程序举例 PC机中主8259A的I O地址为20H和21H 中断向量码为08H 中断请求从IR6引入 故中断类型号为0EH 主程序如下 保存原来的中断向量movah 35hmoval 0eh 中断类型码int21h 取原中断向量 在es bx中 movsave ip bx 保存原来的中断向量movsave cs es 设置自己的中断向量pushdsmovdx offsetmy intmovax segmy intmovds ax DS DX的内容为my int的首地址movah 25hmoval 0ehint21h 设置自己的中断向量popds 初始化堆栈指针movsp my stack top 设置8259A的中断屏蔽字inal 21handal 10111111b 开放IR6中断out21h alsti 子程序如下 my intprocfarpusha popamoval 20h EOI命令 00100000Bout20h al 写OCW2stiiretmy intendp 51 例 可屏蔽中断服务程序举例 8259A的IRQ0 向量号为08H 中断请求来自定时器8253 每隔55ms产生一次本程序的08H号中断服务程序 每次中断显示一串信息 显示10次用内存单元 共享变量 在主程序与外部中断服务程序之间传递参数 中断次数显示信息也安排在共同的数据段中 数据段 intmsgdb A8259AInterrupt db0dh 0ah 0counterdb0 中断次数记录单元 举例 保存中断向量 movax 3508h 获取原中断向量int21hpushbx 保存偏移地址pushes 保存段基地址 设置中断向量 cli 关中断pushds 设置新中断向量movax segnew08hmovds axmovdx offsetnew08hmovax 2508h al 中断向量号08Hint21hpopds 设置中断寄存器 inal 21h 读出IMRpushax 保存原IMR内容andal 0feh 允许IRQ0 其他不变out21h al 设置新IMR内容movcounter 0 设置中断次数初值sti 开中断 循环等待中断 本例的主程序仅循环等待中断start1 cmpcounter 10jbstart1 中断10次退出 中断就在主程序循环当中 new08hproc 中断服务程序sti 开中断pushax 保护寄存器pushbxpushdsmovax data 取数据段的段地址movds ax 设置数据段DS 进入中断服务程序 中断处理 inccounter 中断次数加1movsi offsetintmsg 显示信息calldpstri 调用显示子程序 显示字符串 dpstriproc 显示字符串子程序pushax 入口参数 DS SI 字符串首址pushbxdps1 lodsb 字符串读取AL DS SI 然后SI SI 1cmpal 0jzdps2 显示字符串 续 movbx 0 调用ROM BIOS功能显示al中的字符movah 0ehint10hjmpdps1dps2 popbxpopaxretdpstriendp 退出中断服务程序 moval 20h 发送EOI命令out20h alpopds 恢复寄存器popbxpopaxiret 中断返回new08hendp 主程序结束 cli 关中断popax 恢复IMRout21h alpopdx 恢复原中断向量popdsmovax 2508hint21hsti 开中断movax 4c00hint21h 返回DOS A8259AInterrupt A8259AInterrupt A8259AInterrupt A8259AInterrupt A8259AInterrupt A8259AInterrupt A8259AInterrupt A8259AInterrupt A8259AInterrupt A8259AInterrupt 63 驻留中断服务程序 驻留TSR TerminateandStayResident 程序用户程序运行后仍然保存在主存中 可以让其他程序使用利用DOS功能调用31H代替4CH终止程序小型驻留程序常编写成COM程序驻留程序也可以编写成EXE程序需要驻留内存的程序段要写在前面 驻留时钟 64 教学要求 1 熟悉8088的中断类型 中断响应过

温馨提示

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

评论

0/150

提交评论