微机技术第06章中断修改稿.ppt_第1页
微机技术第06章中断修改稿.ppt_第2页
微机技术第06章中断修改稿.ppt_第3页
微机技术第06章中断修改稿.ppt_第4页
微机技术第06章中断修改稿.ppt_第5页
已阅读5页,还剩66页未读 继续免费阅读

下载本文档

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

文档简介

第6章中断控制接口 教学重点8088CPU的中断系统8259A的中断工作过程和工作方式中断服务程序的编写 6 1中断的定义 CPU执行程序时 由于发生了某种随机的事件 外部或内部 引起CPU暂时中断正在运行的程序 转去执行一段特殊的服务程序 称为中断服务程序或中断处理程序 以处理该事件 该事件处理完后又返回被中断的程序继续执行 这一过程称为中断 中断源 引起CPU中断的事件 中断源 例如 外设 请求输入输出数据 报告故障等事件 掉电 硬件故障 软件错误 非法操作 定时时间到等中断源分为 外部中断 内部中断内部中断 CPU内部执行程序时自身产生的中断外部中断 CPU以外的设备 部件产生的中断8086 8088的外部中断信号 INTR NMIINTR 可屏蔽中断请求 高电平有效 受IF标志的控制 IF 1时 执行完当前指令后CPU对它作出响应 NMI 非屏蔽中断请求 上升沿有效 任何时候CPU都要响应此中断请求信号 为何计算机中要引入中断 提高数据传输率 避免了CPU不断检测外设状态的过程 提高了CPU的利用率 实现对特殊事件的实时响应 中断过程 五个步骤 中断请求中断判优 有时还要进行中断源识别 中断响应中断服务中断返回以下以外部中断为主介绍这五个步骤 1 中断请求 外设接口 中断源 发出中断请求信号 送到CPU的INTR或NMI引脚 中断请求信号 边沿请求 电平请求例如 NMI为边沿请求 INTR为电平请求中断请求信号应保持到中断被处理为止 CPU响应中断后 中断请求信号应及时撤销 在8086 8088系统中 外设的中断要经过8259A可编程中断控制器 PIC 的排队判优后向CPU发出 I O接口 PIC CPU 2 1 中断源识别 计算机中的中断源有很多 CPU必须识别是哪一个设备产生中断 识别中断源有两个方法 软件查询 将中断信号从数据总线读入 用程序进行判别 中断矢量法 由中断源提供中断类型号 CPU根据类型确定中断源 8086 8088即采用此种方法 中断查询接口 2 2 中断判优 多个中断源产生中断 CPU首先为谁服务 中断优先级排队问题 中断优先级控制要处理两种情况 对同时产生的中断 应首先处理优先级别较高的中断 若优先级别相同 则按先来先服务的原则处理 对非同时产生的中断 低优先级别的中断处理程序允许被高优先级别的中断源所中断 即允许中断嵌套 中断优先级的控制方法硬件判优 链式判优 并行判优 中断向量法 软件判优 顺序查询中断请求 先查询的先服务 即先查询的优先级别高 通常将中断判优与中断源识别合并在一起进行处理 x86系统中 这项任务由PIC和CPU共同完成 链式中断优先权排队电路 3 中断响应 在每条指令的最后一个时钟周期 CPU检测INTR或NMI信号 若以下条件成立 则CPU响应中断 当前指令执行完 对INTR 还应满足以下条件当前指令是STI和IRET 则下条指令也要执行完 当前指令带有LOCK REP等指令前缀时 则把它们看成一个整体 要求完整地执行完 对INTR CPU应处于开中断状态 即IF 1 当前没有复位 RESET 和保持 HOLD 信号 若NMI和INTR同时发生 则首先响应NMI 3 中断响应 续 CPU中断响应时 要做下述三项工作 向中断源发出INTA中断响应信号 断点保护 包括CS IP和PSW FLAGS 这主要是保证中断结束后能返回被中断的程序 获得中断服务程序首地址 入口 如何得到中断处理程序的首地址 中断向量法 常用 4 中断处理 中断服务 中断服务子程序特点为 远 过程 类型为FAR 要用IRET指令返回中断服务子程序要做的工作保护现场 PUSHreg s 开中断 STI 进行中断处理恢复现场 POPreg s 中断返回 IRET 5 中断返回 执行中断返回指令IRETIRET指令将使CPU把堆栈内保存的断点信息弹出到IP CS和FLAG中 保证被中断的程序从断点处能够继续往下执行 IPL IPH CSL CSH FLAGL FLAGH SP IPL IPH CSL CSH FLAGL FLAGH SP IP CS FLAG 进入中断服务程序时 中断返回后 6 1 18088的中断系统 与中断有关的控制线为 NMI INTR INTA 8088系统的中断源内部中断除法溢出 类型号0 商大于目的操作数所能表达的范围时产生 单步中断 类型号1 TF 1时产生 当前指令需执行完 断点中断 类型号3 这是一个软件中断 即INT3指令 溢出中断 类型号4 这是一个软件中断 即INTO指令 软件中断 即INTn指令 类型号n 0 255 外部中断非屏蔽中断NMI 类型号2 不可用软件屏蔽 CPU必须响应它 可屏蔽中断INTR 类型号由PIC提供 IF 1时CPU才能响应 6 1 18088的中断类型 内部中断除法错中断指令中断溢出中断单步中断外部中断非屏蔽中断可屏蔽中断 中断源的识别 8088系统采用中断类型码来识别不同的中断源 每个中断源都有一个与它相对应的中断类型码 溢出 断点 除法溢出 单步 非屏蔽中断的类型码为固定值软件中断的类型码由指令给出可屏蔽中断的类型码由PIC给出CPU响应INTR中断时 会产生两个中断响应总线周期 要求PIC在第2个中断响应总线周期把中断类型码放到数据总线上 供CPU读入 6 1 38088的中断向量表 中断向量 中断服务程序的入口地址 首地址 逻辑地址含有段地址CS和偏移地址IP 32位 每个中断向量的低字是偏移地址 高字是段地址 需占用4个字节8088微处理器从物理地址000H开始 依次安排各个中断向量 向量号也从0开始256个中断占用1KB区域 就形成中断向量表 向量号为N的中断向量的物理地址 N 4 返回 中断向量表的初始化 初始化 将中断服务程序的入口地址放入向量表例 中断类型码为48H的中断处理子程序的名字为int48h 编写程序段将该中断处理子程序的入口地址放入向量表 中断向量表的初始化 CLIMOVAX 0MOVDS AXMOVSI 48H 4MOVAX OFFSETint48hMOV SI AXMOVAX SEGint48hMOV SI 2 AXSTI 8086 8088CPU的中断响应过程 内部中断响应过程无INTA 周期中断类型码固定或由指令给出响应过程主要步骤 PUSHFLAG IF 0 PUSHCS PUSHIP 取中断向量送入IP和CS 中断响应过程 续 外部中断响应过程非屏蔽中断 与内部中断响应过程类似可屏蔽中断 INTA 1 PIC进行优先级排队判优处理 INTA 2 PIC把中断类型码放到DB上 CPU读入 PUSHFLAG IF 0 PUSHCS PUSHIP 取中断向量送入IP和CS 与内部中断一样 7 1 28088的中断响应过程 查询中断的顺序 决定了各种中断源的优先权软件中断除法错中断指令中断溢出中断非屏蔽中断可屏蔽中断单步中断 7 1 28088的中断响应过程 续 8088各种中断源的优先权 实际上是指被识别出来的先后多种中断同时请求时 最先响应的则可能是单步中断或NMI中断 返回 7 2内部中断服务程序 编写内部中断服务程序与编写子程序类似利用过程定义伪指令PROC ENDP第1条指令通常为开中断指令STI最后用中断返回指令IRET通常采用寄存器传递参数主程序需要调用中断服务程序调用前 需要设置中断向量利用INTn指令调用中断服务程序 7 38259A中断控制器 Intel8259A是可编程中断控制器PIC可用于管理Intel8080 8085 8086 8088 80286 80386的可屏蔽中断8259A的基本功能一片8259A可以管理8级中断 可扩展至64级每一级中断都可单独被屏蔽或允许在中断响应周期 可提供相应的中断向量号8259A设计有多种工作方式 可通过编程选择 7 3 18259A的内部结构和引脚 1 中断控制 中断请求寄存器IRR保存8条外界中断请求信号IR0 IR7的请求状态Di位为1表示IRi引脚有中断请求 为0表示无请求中断服务寄存器ISR保存正在被8259A服务着的中断状态Di位为1表示IRi中断正在服务中 为0表示没有被服务中断屏蔽寄存器IMR保存对中断请求信号IR的屏蔽状态Di位为1表示IRi中断被屏蔽 禁止 为0表示允许中断优先权判别电路确定是否向CPU发出中断请求 中断响应时确定ISR的哪位应置位及把相应中断的类型码放到数据总线上 2 与处理器接口 3 中断级连 一个系统中 8259A可以级连 有一个主8259A 若干个 最多8个 从8259A级连时 主8259A的三条级连线CAS0 CAS2作为输出线 连至每个从8259A的CAS0 CAS2每个从8259A的中断请求信号INT 连至主8259A的一个中断请求输入端IR主8259A的INT线连至CPU的中断请求输入端SP EN 在非缓冲方式下 规定该8259A是主片 SP 1 还是从片 SP 0 动画 示例 7 3 28259A的中断过程 动画 7 3 38259A的工作方式 中断优先方式与中断嵌套 中断优先方式两类优先级控制方式 固定优先级和循环优先级固定优先级方式所有中断请求IRi的中断优先级固定不变优先级排列顺序可编程改变加电后8259A的默认方式 默认优先级顺序从高到低为IR0 IR7 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 默认优先级 优先级可编程改变 中断优先方式与中断嵌套 续 循环优先级方式中断源轮流处于最高优先级 即自动中断优先级循环初始优先级顺序可用编程改变某中断请求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 中断优先方式与中断嵌套 续 中断嵌套方式在中断处理过程中允许被更高优先级的事件所中断称为中断嵌套 8259A有两种中断嵌套方式 普通全嵌套方式 默认方式 一中断正被处理时 只有更高优先级的事件可以打断当前的中断处理过程而被服务 特殊全嵌套方式一中断正被处理时 允许同级或更高优先级的事件可以打断当前的中断处理过程而被服务 注 特殊全嵌套仅用于多个8259A级连时的主8259A 而不能用于从属8259A或单8259A系统 D 主8259A IR0IR1IR2IR3IR4IR5IR6IR7 一般嵌套方式 从片的INT被主片封锁 故更高级别的IR0 IR2中断也无法得到响应 特殊嵌套方式 因主片不封锁从片的INT 故级别高的IR0 IR2中断可以得到响应 但IR3 IR7仍被本从片封锁 C 假定IR7发生中断 并获得服务 一般嵌套方式 IR4的中断被服务时 这些中断将被封锁 B 特殊嵌套方式 IR4的中断被服务时 只封锁IR5 IR7 A INT E 从8259A INT IR0IR1IR2IR3IR4IR5IR6IR7 一般全嵌套方式与特殊全嵌套方式的区别 去CPU 中断结束处理方式 当某一IRi中断被服务时 ISR中的相应位ISRi 1 当服务结束后 则必须清零该ISRi位 使ISRi 0是通过向8259A发出中断结束命令 EOI命令 实现的 三种EOI命令自动EOI AEOI 自动EOI方式 非指定EOI NSEOI 正常EOI方式 指定EOI SEOI 特殊EOI方式 AEOI 在第2个INTA 结束时 由8259A使ISRi自动复位 因不保留当前正在服务的中断的状态 故AEOI不能用于中断嵌套方式SEOI 由CPU发出一条SEOI命令 该EOI命令中指出了所要复位的ISR的位号 用于特殊屏蔽方式NSEOI 由CPU发出正常EOI命令 该EOI命令使ISRi 1的位中优先级最高的那一位复位 用于普通全嵌套方式 中断服务程序 向从PIC发EOI命令 读从PIC的ISR 全0 向主PIC发EOI命令 Y IRET 恢复现场 N 特殊全嵌套方式下的EOI处理只有当从PIC的中断全部处理完后 才能向主PIC发EOI命令 屏蔽中断源的方式 IMR屏蔽字决定了允许或禁止某位IRi所对应的中断 IMi 1禁止 IMi 0允许 特殊屏蔽方式 提供了允许较低优先级的中断能够得到响应的特殊手段 原理 假定当前正在处理IR6 先进入特殊屏蔽方式 然后设置IM6 1 这时 除IR6外的所有中断请求均能得到响应 特殊屏蔽方式中只能用SEOI命令结束中断 特殊屏蔽例 IR4中断处理程序CLIMOVAL 68H OCW3 01101000OUT0C0H AL 设置特殊屏蔽方式INAL 0C2HORAL 10H 屏蔽IR4OUT0C2H ALSTI IR7请求 响应 返回 CLI 为设命令字INAL 0C2H 读出屏蔽字ANDAL 0EFH 清除IMR4OUT0C2H ALMOVAL 48H OCW3 01001000OUT0C0H AL 取消特殊屏蔽STI 继续IR4中断服务MOVAL 20H OCW2 00100000 EOI OUT0C0 ALIRET 中断触发方式 边沿触发IRi出现上升沿表示有中断请求电平触发IRi出现高电平表示有中断请求在第1个INTA 结束前 IRi必须保持高电平 级联工作方式 单片8259A可支持8个中断源 采用多片8259A级连 可最多支持64个中断源 n片8259A可支持7n 1个中断源 级连时只能有一片8259A为主片 其余的均为从属片 涉及到的8259A引脚包括 CAS0 CAS2SP EN IRiINT 级连电路连接方法 6 5 48259A的编程使用 8259A的控制命令分为初始化命令字ICWICW1 ICW4向8259A写入ICW的过程称为初始化编程操作命令字OCWOCW1 OCW3向8259A写入OCW的过程称为操作方式编程 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 ICW1 初始化字 LTIM 触发方式 1高电平触发 0上升沿触发SNGL 级连控制 1单片 0级连IC4 ICW4控制 1要写ICW4 0不写ICW4 默认ICW4为全0 A0D7D6D5D4D3D2D1D00 xxx1LTIMxSNGLIC4 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比较 二者一致的从片才可发送中断向量码 ICW4 中断结束方式字 SFNM 特殊全嵌套1特殊全嵌套方式0一般全嵌套方式AEOI 自动EOI1自动EOI方式0非自动EOI方式 A0D7D6D5D4D3D2D1D01000SFNMBUFM SAEOI1 BUF 缓冲方式M S 主 从缓冲选择BUFM S11缓冲方式 主PIC10缓冲方式 从PIC0 x非缓冲方式 正常 8259A的操作命令字OCW OCW用于设置8259的工作状态在初始化后写入OCW的写入顺序可任意写入地址要求 OCW1必须写入奇地址端口 A0 1 OCW2 OCW3必须写入偶地址端口 A0 0 OCW1 中断屏蔽字 Mi 1中断请求线IRi被屏蔽 不允许中断 0允许该IRi中断OCW1将写入IMR寄存器 A0 1时读OCW1可读出设置的IMR内容 A0D7D6D5D4D3D2D1D01M7M6M5M4M3M2M1M0 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 OCW3 屏蔽方式和读出控制字 ESMM 允许使能特殊屏蔽方式SMM 特殊屏蔽方式ESMMSMM11特殊屏蔽方式置位10特殊屏蔽方式复位0 x非特殊屏蔽方式P Polling 1查询方式 0非查询方式 A0D7D6D5D4D3D2D1D000ESMMSMM01PRRRIS RR 读寄存器RIS ISR IRR选择RRRIS11读ISR10读IRR0 x无效 OCW3 续 查询方式允许8259A不工作于中断方式 而是以查询方式工作 CPU先写一个D2 1的OCW3 再对同一地址读入 即可得到如下状态字节 IxxxxR2R1R0I 1表示有中断请求 中断请求号为R2 R0此查询步骤可反复执行 以响应多个同时发生的中断 读IRR ISR 写入此命令后 随后再对同一地址读 即可得到IRR或ISR的内容 8259A编程举例 按以下要求初始化8259A 接口地址为20H和21H 中断为上升沿触发 单片8259A 不写ICW4 与IR0 IR3对应的中断向量码为08H 0BH IR4 IR7不使用 根据要求 各初始化参数及工作参数如下 ICW1 00010010 12HICW2 08H中断向量码OCW1 11110000 0F0H中断屏蔽字 8259A编程举例 续 初始化程序如下 INIT8259A MOVDX 20H A0

温馨提示

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

评论

0/150

提交评论