接口PPT课件第3章中断技术.ppt_第1页
接口PPT课件第3章中断技术.ppt_第2页
接口PPT课件第3章中断技术.ppt_第3页
接口PPT课件第3章中断技术.ppt_第4页
接口PPT课件第3章中断技术.ppt_第5页
已阅读5页,还剩148页未读 继续免费阅读

下载本文档

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

文档简介

中断技术 中断是计算机中一个重要且实用的技术。 采用中断技术主要为解决两个问题: 1. 在输入输出过程中,解决快速的CPU与慢速 的外设之间速度不匹配的问题,实现CPU与外设 并行工作,提高CPU的利用率。 2. 确保CPU在运行过程中具有实时响应和处 理随机事件的能力。 1 中断实例 n每按一下键盘,就产生一个键盘中断,CPU就要 停下手边的工作来处理,记录下来哪个键被按下了 ,如果按下这个键要对应某一个操作,就赶快先做 这个操作,做完之后,才恢复刚才的工作。对于接 在串口上的MODEM也是一样,从电话线上传来数 据了,这个串口就会产生一个中断,CPU就要停下 来,先将数据收下来,放到一个安全的地方。我们 能够一边写文章,一边从网上下载数据,就全靠中 断的正常工作。 2 第3章 中断技术 3.1 中断及中断处理过程 3.2 中断优先权 3.3 8086中断系统 3.4 可编程中断控制器8259A 3.5 中断程序设计 3 3.1 中断及中断处理过程 3.1.1 中断源及分类 3.1.2 中断处理过程 4 CPU在正常执行程序的 过程中,由于某些事件(外部 或内部)发生,引起CPU暂时 中止当前程序的执行,而转 去执行一段特殊程序(称中 断服务子程序),以处理该 事件。该事件处理完后,再 返回原被中断的程序继续执 行。 一、中断 CPU 执行程序 事件发生 中 断 服 务 子 程 序 中断响应 中断返回 继 续 执 行 K: DK: 处 理 事 件 断点 3.1.1 中断源及分类 5 正在看书 电话铃响 接电话 继续看书 执行程序 事件发生 事件处理 继续执行程序 生活场景中 的中断 计算机中 的中断 对比 6 中断源:能够向CPU发出中断请求的设备或事件。 1. 外部中断源 一般的I/O设备,如显示器、打印机、键 盘等。 数据通道中断源,如磁盘直接与内存交换 数据所要求的中断。 实时时钟,如外部所需的定时电路等 计算机内部故障引起的中断,如电源掉电 、存储出错等。 二、中断源 3.1.1 中断源及分类 7 2. 内部中断源 CPU指令执行异常。如运算结果溢出、除法错 等。 在程序调试过程中由程序员所设置的中断。如 单步中断、软中断指令INT n等。 微机系统中,中断分为内部中断和外部中断两 大类。 3.1.1 中断源及分类 8 中断系统应具有以下功能: 1. 能实现中断响应、中断服务和中断返回 2. 能实现中断优先级排队 3. 能实现中断嵌套 3.1.1 中断源及分类 9 3.1.2 中断处理过程 一个完整的中断处理过程包括: 1. 中断请求 2. 中断优先级的判别(中断判优) 3. 中断响应 4. 中断处理 5. 中断返回 10 中断 请求 中断响应中断处理 中断返回(断点恢复) 注意:中断过程由硬件和软件共同实现的。 识别中断源 禁止中断 保护断点并 进入中断子 程序 保护现场 (开启中断以实现 中断嵌套 STI) 中断服务 (关中断 CLI) 恢复现场 中断 判优 3.1.2 中断处理过程 11 n确定中断优先级的方法 1. 软件排优:由硬件电路和软件查询程序 配合起来才能实现优先级的排队。各中断源的优 先权由软件安排,与硬件关系不大。 2. 硬件排优:用专门的硬件电路或中断控 制器对各中断源的优先权进行安排。如菊花链电 路、可编程中断控制器 (如8259A) 3.2 中断优先权 12 3.3 80X86中断系统 硬件中断 (外部中断) 软件中断 (内部中断) 除法错中断 溢出中断 断点中断 单步中断 软件中断 非屏蔽中断 可屏蔽中断 中断分类 中断类型码 13 3.3 80X86中断系统 3.3.1 80X86中断结构 NMI INTR 中断逻辑 软件中断 INT n 溢出中断 除法错中断 单步中断 非屏蔽中断 中断控 制器 8259A 断点中断 n 4 0 3 1 2 定时器 键盘 保留 串行通信接口 串行通信接口 硬盘 打印机 软盘 可 屏 蔽 中 断 IR0 IR1 IR2 IR3 IR4 IR5 IR6 IR7 内部中断 外部中断 80X86中断结构图 外部硬件设备引起的 中断,又称硬件中断 。 又称软件中断CPU根据软件的 某些指令或者软件对标志寄存器某 个标志位的设置而产生的,与外部 中断电路完全无关。 14 8086的中断源分类 一、外部中断 8086CPU提供两条引脚 INTR、NMI 接受中断请求 信号 从NMI引脚进入的中断非屏蔽中断 从INTR引脚进入的中断可屏蔽中断 8086 CPU NMI INTR 非屏蔽中断请求输入端 可屏蔽中断请求输入端 INTA 中断响应信号输出端 15 1. 非屏蔽中断(NMI中断) 中断类型码 2 上升沿触发申请中断 不受中断允许标志IF的控制与影响(即不可屏蔽) ,一旦NMI引脚出现中断请求,CPU在当前指令执行 完后,必须立即响应。 由计算机内部硬件出错而引发,一般用于处理紧急 事件。如:PC机中内存奇偶校验出错和系统主要故障 (如电源断电等)。 8086 CPU NMI 8086的中断源分类 16 2.可屏蔽中断(INTR中断) 外设申请的中断 电平触发 受中断允许标志IF控制 8086 CPU INTR INTA 8086的中断源分类 IF = 1 (STI),开中断,允许响应INTR中断 IF = 0 ( CLI ) ,关中断,禁止响应INTR中断 当外设对CPU有服务请求,会向INTR发来一个 高电平信号,并且IF=1时,CPU在当前指令执 行完后,响应可屏蔽中断。 17 8086CPU只有一个可屏蔽中断请求输入引脚,8086中断系 统设计中断控制器(8259A)管理各种外设提出的中断请求。所有 外设的中断请求信号都可送至8259A的中断请求输入端IRQ0 IRQ7任何一个,8259A选择其中优先级最高的中断请求,送至 CPU的INTR引脚,向CPU申请可屏蔽中断。 可屏蔽中断源的中断类型码由8259A提供。 INTR INTA 8086 CPU INT INTA 8259A IRQ0 IRQ1 IRQ2 IRQ7 可屏蔽 中断请求 输入端 8259A可对多个可屏蔽中断源 进行优先级控制,一片8259A 可管理8级可屏蔽中断。 18 n286以上系统使用两片8259A 级联管理15级可屏蔽中断。比较常见的分配方式: IRQ0 系统定时器 IRQ1 键盘 IRQ2 可编程中断控制器8259A IRQ3 COM2(串口) IRQ4 COM1(串口) IRQ6 软盘控制器 IRQ7 并行口LPT1 IRQ8 系统CMOS/实时钟 IRQ12 PS/2鼠标 IRQ13 数学协处理器 IRQ14 第一IDE控制器(硬盘) IRQ15 第二IDE控制器 (CDROM ) IRQ5 可用 (如声卡) IRQ9 可用 (如网卡) IRQ10 可用 (如USB) IRQ11 可用 (如SCSI主适配器) PC机 外部中断 分配 可以给用户 的新添设备 使用 系统 隐含 要想计算机正常工作 ,必须把中断合理分 配给外设,让它们没 有冲突。 Win98以上的操作系 统已支持PNP “即插 即用”技术,它可以 将中断进行自动分配 ,简化用户操作。 19 二、内部中断 不需要外部硬件支持,不受中断标志IF的影响, 中断类型码或包含在指令中,或预先规定。 8086/8088内部中断有以下5种: n 除法出错中断 n 断点中断 n 单步中断 n 溢出中断 n 软件中断 8086的中断源分类 20 8086的中断源分类 1. 除法出错中断 类型码0,CPU执行除法指令时,除数为0或商 溢出(超出规定范围,寄存器不能存放)时产生。 2.溢出中断 类型码4,执行INTO指令,且OF=1时产生。 常放在带符号数加减指令后,可对溢出及时告警。 21 8086的中断源分类 3. 断点中断 类型码3,执行指令INT 3时产生。用于程序调 试时设置断点。 利用断点中断的中断处理程序可进行某些特殊 处理,如显示有关寄存器或存储单元内容。断 点中断也是一种调试程序的方法。 22 8086的中断源分类 4.单步中断 类型码1,TF=1时产生(当前指令需执行完)。 用于调试程序,跟踪程序执行过程。 单步中断的中断处理程序可显示CPU执行完当前指令后, 各个寄存器及有关存储单元内容。利用单步中断可一条一 条指令地跟踪程序的流程,观察CPU执行指令后,各个寄 存器及有关存储单元内容的变化,从而指出和确定程序出 错的地方和产生错误的原因。单步中断是一种调试程序的 方法,用T命令也可实现。 23 8086的中断源分类 说明: 1. 处理中断时,CPU把标志寄存器压栈,清除TF和IF。 当CPU进入单步处理程序时,不再处于单步工作方式, 单步工作方式结束时,恢复原标志,CPU返回单步方式 。 2. 80X86中没有设置或清除TF的指令。 PUSHF POP AX OR AX,0100H PUSH AX POPF 24 8086的中断源分类 5. 软中断 由设置在程序中的INT n指令产生( n 类型码) PC机中,用不同类型码编成标准中断服务子程序 ,用户可使用INT n调用。因此软件中断相当于调用 子程序。 主要用于实现ROM BIOS中断、DOS中断调用、 用户自定义中断。 25 内部中断 (除法错中断、溢出 中断、断点中断、 软件中断) NMI中断 INTR中断 单步中断 8086中断源优先级顺序 优 先 级 由 高 至 低 对同时产生的中断: 首先处理优先级别较高 的中断;若优先级别相 同,则按先来先服务的 原则处理; 对非同时产生的中断: 允许低优先级别的中断 处理程序被高优先级别 的中断源所中断中 断嵌套。 26 3.3.2 中断向量表 中断向量 中断服务程序的入口地址。 段地址和偏移地址 每个每个中断处理程序中断处理程序都有一个都有一个唯一唯一的的中断向量中断向量。 INT_PROC PROC PUSH DX PUSH AX IRET INT_PROC ENDP INC_PROCPUSH DX PUSH AX IRET 中断服务程序 入口地址 27 u在内存的00000H003FFH地址范 围内,大小为1KB。 中断向量地址 类型0中断向量 00000H 类型1中断向量 00008H 00004H 段地址 偏移地址 003FFH 类型2中断向量 FFFFFH 类型255中断向量 003FCH 内存 3.3.2 中断向量表IVT u按中断类型码从小到大顺序依次 存放各类中断(256种)的中断 向量(中断服务程序入口地址) 。 u每个中断向量占用4 Bytes, 低字为段内偏移地址(IP), 高字为段基址(CS)。 u中断类型码与中断向量地址的 关系: 设某类中断的中断类型码为n 中断向量在IVT中的存放地 址(向量地址)4n 28 IP 中断类型码与中断向量所在位置(中断向量地址指针) 之间的对应关系为: 中断向量地址指针=4*中断类型码 CS 5个 27个 224个 3FC 29 4 n 向量地址 CPU获得中断类型码后,如何转去执行相应 的中断服 务程序? 入口地址的 偏移地址 入口地址的 段基址 IP CS 假设CPU响应中断类型码为 n 的中断 由于所有中断服务程序的入口地址都放在中断向量表中,首 先需将类型码转换为向量地址 即可转入相应中断服务程序执行。 查表取得中断向量 字单元(4 n,4 n + 1) 字单元(4 n + 2,4 n + 3) 3.3.2 中断向量表 30 例、 某系统中键盘中断的类型码为 09H ,试问其对 应中断服务程序的入口地址? 1)中断向量的存放地址 由 4 n = 4 9 = 36 = 24 H 知 中断向量存放在 存储器中 从0000:0024H开始的4个单元中, 即0024H 0027H单元。 40H 30H 20H 10H 0024H 0025H 0026H 0027H 存储器 IPIP CSCS 2)由右图知 键盘中断的中断处理程序的 入口地址为 4030 4030 :2010 H2010 H 即可转入键盘中断服务程序执行。 31 CPU获取中断类型码的方法 n外部INTR中断 8259A提供 n内部中断(除法出错、单步中断、溢出中断、 断点中断)、外部NMI中断 其中断类型码是固定值,由系统直接通过内部硬 件电路自动提供。 n软中断 INT n 中断类型码n在指令INT n的机器码中提供 32 3.3.3 中断向量表的建立 INT_TBLSEGMENT AT 0 ORGN*4 DDINT_ICE INT_TBLENDS MCMODESEGMENT ; 主程序 INT_ICE PROC FAR ;中断服务程序 IRET AT 表达式本逻辑段根据表达式求值的 结果定位段基址。 AT 8A00H:表示本段的段基址为8A00H ORG指定偏移地址 1. 绝对地址装入 33 2. 使用串指令装入 CLI ;禁止中断 MOV AX,0 MOV ES,AX MOV DI,4*N ;置矢量表段地址 MOV AX,OFFSET INT_ICE ;置矢量表偏移地址 CLD STOSW MOV AX,SEG INT_ICE ;中断服务程序段地址 STOSW STI 3.3.3 中断向量表的建立 34 3. 使用DOS调用 利用DOS中21H中断的25H号功能设置中断向量 要求: 入口参数:AL=中断类型号 DS:DX=中断服务程序入口首地址 (段地址:偏移地址) AH=25H(功能号) 3.3.3 中断向量表的建立 35 PUSH DS MOV DX,SEGINT60H MOV DS,DX MOV DX,OFFSET INT60H MOV AL,60H MOV AH,25H INT21H POPDS 3.3.3 中断向量表的建立 36 3.3.3 中断向量表的建立 如果用户想修改某一中断服务程序的首地址,应将 原有的中断服务程序入口地址用DOS中21H中断的 35H号功能取出中断向量保存。当从用户程序中退 出时,再用25H功能恢复。 要求:入口参数 AL=中断类型号 AH=35H(功能号) 出口参数 ES:BX=当前中断服务程序的入口 首地址(段地址:偏移地址) 37 3.3.3 中断向量表的建立 取中断向量:功能号=35H AL=中断类型号 ES:BX=入口地址 置中断向量:功能号=25H AL=中断类型号 DS:DX=入口地址 38 3.3.3 中断向量表的建立 例:将0号中断的中断服务程序的入口地址取出 MOV AH,35H MOV AL,0 INT 21H MOV INTOSEG,ES MOV INTOFF,BX INTOSEG DW ? INTOFF DW ? 39 3.3.3 中断向量表的建立 4.直接装入法 设外设的中断类型号为6BH,则对应的中断向量表地址 为6BH4=01ACH 设中断服务程序地址=1000:2000 XOR AX,AX MOV DS,AX MOV AX,2000H MOV WORD PTR 01ACH,AX MOV AX,1000H MOV WORD PTR 01ACH+2,AX 40 3.3.4 中断响应过程 1. 内部中断响应过程 如何获取相应的中断类型码 专用中断:中断类型码是自动形成的。 几种类型码为:类型0、1、3、4。 对于INT n指令,其类型码为指令中给定的n。 41 3.3.4 中断响应过程 取得了类型码后的处理过程: 类型码*4 向量表指针。 标志寄存器FR入栈,保护各个标志。 清除IF和TF标志,屏蔽新的INTR中断和单步中断。 保存断点(断点处IP和CS压栈,先压CS后压IP)。 从中断向量表中取出中断服务程序入口地址分别送入 IP和CS中。 按新的地址执行中断服务程序。 42 3.3.4 中断响应过程 内部中断的特点: 中断类型码的获得与外部无关。 除单步中断外,内部中断无法用软件禁止,不受 IF的影响。 没用随机性。 43 3.3.4 中断响应过程 2. 外部中断的响应过程 (1)非屏蔽中断响应 自动提供中断类型号2,然后查找中断向量表指 针,其后的处理与内部中断一样。 44 3.3.4 中断响应过程 (2)可屏蔽中断响应 当INTR信号有效,如果IF=1,则CPU执行完一条指 令后,进入可屏蔽中断响应周期。在中断响应周期 中CPU从数据线中获取中断类型码。 45 3.3.4 中断响应过程 可屏蔽中断响应时,CPU执行了7个总线周期 执行第一个INTA周期。 执行第二个INTA周期,被响应的外设通过D0D7的8 位数据线提供中断类型码n(由8259A提供),CPU接到类 型码后,将它左移两位,形成向量表指针存入暂存器。 执行一个总线写周期,把FR压栈。同时IF和TF为0,以 禁止中断响应过程中,其他可屏蔽中断的进入,同时也禁 止了中断过程中出现单步中断。 46 3.3.4 中断响应过程 执行一个总线写周期,CS压栈。 执行一个总线写周期,IP压栈。 执行一个总线读周期,从中断向量表中取出中断 服务程序入口地址的偏移量送IP中。 执行一个总线读周期,从中断向量表中取出中断 服务程序入口地址的段值送CS。 对于非屏蔽与软中断跳过第、步,从第步 开始执行到第步。 47 3.3.4 中断响应过程 各类中断的优先权顺序(从高到低) 内部中断 (除法错中断、溢出中断、断点中断、软件中断) NMI中断 INTR中断 单步中断 48 3.3.4 中断响应过程 N Y N Y N N N N N YY 执行当前指令 执行完 否? IF=1 ? 内部中 断? NMI ? INTR ? TF=1 ? 类型码 类型码 类型码 中断响 应,读类 型码 FLAG入栈 TEMPTF IF=TF=0 当前CS、IP入栈 根据类型码计算中断向量地址 高字CS 低字IP 执行中断 服务程序 NMI? 转入中断处理程序 弹出CS和IP 弹出FLAGS 返回被中断 的程序 Y Y Y Y N IRET 指令的 操作 STI TEMP=1? 执行下一条指令 IF清0:暂时屏蔽其他可屏蔽中 断,以防止在没有完成此次中 断前又被另一个中断所打扰。 TF清0:避免CPU以单步方式执 行中断服务程序。 重新开放外部可屏蔽中断。 49 3.4.1 中断控制器8259A 3.4.2 8259A的工作方式 3.4.3 8259A的命令字及其编程 3.4.4 8259A的应用举例 3.4 可编程中断控制器8259A 50 51 n 中断服务寄 存器ISR 保存所有正在 被服务的中断信 号。某位=1表 示对应的IRi中断 请求正在被服务 ,服务完后该位 置0。 8259A的功能: 接收、屏蔽、 判优和传递 外设的可屏蔽 中断请求,并 在收到CPU的 响应信号后, 向CPU送出中 断类型码。 3.4.1 中断控制器8259A的内部结构 n 中断请求寄 存器IRR 保存从IR0 IR7来的中断请求 信号,某位=1表 示对应的IRi有中断 请求 n 优先权判别 器 PR 若多个中断 请求使IRR中 某些位同时置1 ,PR负责判断 和选择其中优 先级最高的中 断请求,并在 第一个INTA送 入ISR对应位 的中断类型码 。 n 中断屏蔽寄 存器IMR 存放被屏蔽 的中断请求。 某位=1表示对 应的IRi中断被 屏蔽。 数据 总线 缓冲 器 读/写 控制 逻辑 级联/ 缓冲 比较 器 52 3.4.1 8259A的内部结构 1. 数据总线缓冲器 数据总线缓冲器用于8259A与CPU交换数据信息 的接口,通过数据总线D7D0把CPU传送给 8259A的初始化控制字和操作命令字接收下来, 再通过8259A的内部总线传送到相应的寄存器中 ,也用来把8259A的状态通过数据总线D7D0传 送至CPU。 53 3.4.1 8259A的内部结构 2. 读/写逻辑 是8259A与CPU进行控制信息交换的接口。 CS:片选信号线。一般接到译码电路的输出端,作 为8259A芯片的选通信号。 RD、WR:读、写信号线。当读信号有效时,通知 8259A将某个寄存器的内容送到数据总线上。当写 信号有效时,通知8259A从数据总线上接收数据。 54 3.4.1 8259A的内部结构 A0:奇/偶地址选择信号线。每片8259A有两个I/O端口地 址(奇地址和偶地址)来选择内部不同的寄存器。 因为8259A是8位接口芯片,当8259A与16位8086 CPU相 连时,存在对偶地址访问时,数据流在低8位数据总线上 有效;对奇地址访问时,数据流在高8位数据总线上有效 的问题。 当8259A的8位数据线与8086 CPU系统的低8位数据线相 连时,必须保证CPU输出访问8259A的地址都为偶地址 ,这就要求8259A的A0线与CPU的A1线相连,实现CPU 用数据总线的低8位和8259A交换数据。 55 3.4.1 8259A的内部结构 56 3.4.1 8259A的内部结构 57 3.4.1 8259A的内部结构 3. 级连缓冲比较器 用于多块8259A的连接。 与CPU相连的8259A叫主8259A,与主8259A相连的8259A 叫从8259A。 CAS2CAS0:级连信号线。对于主8259A这三条线为输出 ,对于从8259A这三条线为输入。 SP/EN:此信号线为双向,作用有二:当为输入时,用来 决定本片是主片还是从片,SP/EN=1,该片为主片, SP/EN=0,该片为从片;当为输出时,SP/EN可作为启动 数据总线驱动器的启动信号。 58 3.4.1 8259A的内部结构 4. 控制电路 作用:一是向CPU通过INT线发中断申请;二是接 收来自CPU输出的中断响应信号INTA。INTA信号 使中断服务器的相应位置1,表示CPU将要执行该中 断源的中断服务程序,并使中断申请寄存器相应位 置0,避免该中断源一次中断申请产生两次或两次以 上的中断。 59 8259A的工作过程 数据 总线 缓冲 器 读/写 控制 逻辑 级联/ 缓冲 比较 器 (1) 当有一个或多个中断源申请中断 时,通过IR7IR0输入给8259A, 使中断请求寄存器IRR相应位置1。 (2) 当对中断源的中断申请不屏蔽 的情况下,中断申请信号转发给 优先级判别器。 (3)PR根据IRR的内 容决定处理哪个中 断源申请的中断, 再根据ISR的内容 决定CPU正响应哪 一级中断源,经过 优先级判别决定该 中断源是否高于 CPU正在服务的中 断源,若高于,通 过控制逻辑的INT 线向CPU申请中断 。 (4) 若CPU处于开中 断状态(IF=1),则在 当前指令执行完后, 进入中断服务程序, 并用INTA信号作为 响应中断的回答信号 。 (5) 8259A接收到INTA信号后,ISR 相应位置1,使中断请求寄存器IRR 的相应位置0。 (6) CPU启动另一个中断响应周期 ,输出另一个INTA脉冲。这时 8259A通过数据总线向CPU输出 中断申请源的中断类型号,以便 CPU转入中断服务程序。 (7) 若8259A工作在AEOI模式(自动 结束方式),在第二个INTA脉冲结 束时,使中断源在ISR中的相应位置0 ;否则,直至中断服务程序结束,发 出EOI命令,才使ISR中的相应位复 位。 60 (1) 当有一个或多个中断源申请中断时,通过IR7IR0输 入给8259A,使中断请求寄存器IRR相应位置1。 (2) 当对中断源的中断申请不屏蔽的情况下,向中断控制 器发中断申请信号,中断控制器把该信号转发给优先级判 别器。 (3) 优先级判别器根据中断申请寄存器的内容决定处理哪 个中断源申请的中断,再根据中断服务寄存器的内容决定 CPU正响应哪一级中断源,经过优先级判别决定该中断源 是否高于CPU正在服务的中断源,若高于,通过控制逻辑 的INT线向CPU申请中断。 8259A的工作过程 61 (4) 若CPU处于开中断状态,则在当前指令执行完后 ,进入中断服务程序,并用INTA信号作为响应中断 的回答信号。 (5) 8259A接收到INTA信号后,使中断服务寄存器 ISR相应位置1,使中断请求寄存器IRR的相应位置0 ,以避免该中断源再次发生中断申请。 62 (6) CPU启动另一个中断响应周期,输出另一个 INTA脉冲。这时8259A通过数据总线向CPU输出当 前级别最高的中断申请源的中断类型号,以便CPU 很快转入中断服务程序。 (7) 若8259A工作在AEOI模式(自动结束方式), 在第二个INTA脉冲结束时,使中断源在中断服务寄 存器中的相应位置0;否则,直至中断服务程序结束 ,发出EOI命令,才使中断服务寄存器中的相应位 复位。 63 一、中断优先级管理方式 1. 全嵌套方式 (80X86系统采用) (最常用、最基本、默认) n中断优先级固定。(优先级07) n允许高级中断打断低级中断(中断嵌套) ,屏蔽同级和低级中断。 IR7IR6IR5IR4IR3IR2IR1IR0 76543210 最低级 最高级 默认优先级 3.4.2 8259A的工作方式 64 3.4.2 8259A的工作方式 2. 特殊全嵌套方式 与全嵌套方式基本相同 n中断优先级固定。 n允许高级中断和同级中断打断现行中断 ,屏蔽低级中断。 n用在级连。主片设置为特殊全嵌套方式 ,从片设置为其它优先级方式。专门用来确认 从片内部优先级的工作方式。 65 3. 优先级自动循环方式 n 中断源轮流具有最高优先权 n 某中断请求IRi被处理后,优先级 别自动降为最低,其下一级中断上升为最 高级 21076543 最高级最低级 IR7IR6IR5IR4IR3IR2IR1IR0 01000000 IR4的服务结束以后 IR7IR6IR5IR4IR3IR2IR1IR0 76543210 最低级 最高级 IR4的服务结束以前 初始优先级 01010000 ISRi 3.4.2 8259A的工作方式 66 4. 优先级特殊循环方式 n最低优先级通过编程设定 IR7IR6IR5IR4IR3IR2IR1IR0 76543210 最低级 最高级 IR4的服务结束以前 初始优先级 01010000 ISRi 在IR4的中断服务程序中编程 指定IR2为最低优先级 43210765 最高级最低级 IR7IR6IR5IR4IR3IR2IR1IR0 01000000 IR4的服务结束以后 3.4.2 8259A的工作方式 67 3.4.2 8259A的工作方式 二、屏蔽中断源的方式 对可屏蔽中断源的屏蔽 屏蔽所有的中断源 CLI(IF=0) 由CPU完成 有选择的屏蔽某一或某几级中断源 由8259A通过IMR实现(OCW1) 将IMR中对应位置1,可屏蔽相应的 中断源。 68 3.4.2 8259A的工作方式 1. 普通屏蔽方式 特点:当执行某一级中断服务程序时,只允许比其优先 级高的中断源申请中断,不允许同级或低级的中断源申 请中断。 方法:用OCW1将IMR寄存器某一位或几位置1,即可 将相应的中断请求屏蔽掉。 使用情况:当CPU执行主程序时,可将不希望响应的中 断源屏蔽;当CPU执行某中断服务程序时,可将不希望 响应的比此优先级高的中断源屏蔽。 69 2. 特殊屏蔽方式 特点:CPU正在处理某一级中断时,只可对本级中断进行 屏蔽,允许级别比它高的或比它低的中断源申请中断。 方法:将IMR中某位置1,屏蔽当前正在处理的本级中断; 使中断服务寄存器ISR相应位置0,允许低级别的中断源申 请中断。 使用情况:在中断处理程序中使用,常用于动态改变优先 级的场合。 3.4.2 8259A的工作方式 70 3.4.2 8259A的工作方式 三、中断处理结束方式 中断处理结束: 当某一IRi中断被服务时,ISR中的对应位ISRi=1 。当服务结束时,使ISRi=0。 非自动中断结束方式 (EOI命令方式) 自动中断结束方式 中断处理 结束方式 一般中断结束方式 (普通EOI) 特殊中断结束方式 (特殊EOI) 71 1. 自动中断结束方式( AEOI方式) 最简单,只适用于单片8259A、多个中 断源不要求嵌套的场合。 由8259A在中断响应的第二个INTA结束 时自动将ISR中的对应位ISRi清0。 实现方法:通过将ICW4的(AEOI) D1=1实现。 3.4.2 8259A的工作方式 72 3.4.2 8259A的工作方式 非自动中断结束方式 (EOI命令方式) CPU在中断服务程序准备结束时(中断返 回 IRET 前)发中断结束命令(EOI命令),使 ISRi0。 73 2. 普通EOI (适用于全嵌套方式) 特点:CPU发EOI命令,8259A将ISR中级别最高的 (即正在服务的)置1位清0。 方法:用OUT向8259A的偶地址端口输出OCW2操作 控制字(OCW2的D7D6D5=001),实现自动结 束命令。 3.4.2 8259A的工作方式 74 3.4.2 8259A的工作方式 3. 特殊EOI(用于非全嵌套方式) 特点:通过指令发一特殊中断结束命 令,该EOI命令中指出了所要复位的ISR的 位号。 方法:通过将OCW2的D7D6D5=011, D2D1D0位指出结束中断处理的中断源号, 使该中断源在中断服务寄存器ISR中的相应 位清零。 75 3.4.2 8259A的工作方式 注意: 在级联方式下,中断处理结束时,发两次中 断结束命令。一次对主片,一次对从片。 76 3.4.2 8259A的工作方式 四、连接系统总线的方式 1. 缓冲方式 u在多片8259A级联大系统中,8259A通过总线驱动 器和数据总线相连。 uSP/EN作为输出端,输出一个低电平,作为总线 驱动器的启动信号。 u由ICW4设置。 77 3.4.2 8259A的工作方式 2.非缓冲方式 u单片8259A或8259A片数不太多的不大的系统中 , 8259A直接与数据总线相连。 u SP/EN作为输入端:一片8259A时接高电平; 多片时主片的SP/EN接高电平,从片的接低电平。 u 由ICW4设置。 78 79 3.4.2 8259A的工作方式 五、引入中断请求的方式 1. 边沿触发方式 (通过ICW1设置) 2. 电平触发方式 (通过ICW1设置) 3. 中断查询方式(用于多于64级的中断的场合) CPU利用查询命令(OCW3中D2=1) 80 3.4.2 8259A的工作方式 CPU利用查询命令(OCW3中D2=1)获得当前中断 请求信息。此时8259A内部仍进行8级中断请求的判优和 屏蔽管理。查询命令发出后,向偶地址执行一条输入指 令,可得到查询字。 D7=1 有中断请求 D7=0 无中断请求 当前发出中断请求级别 最高的中断信号 81 使用8259A进行中断控制时,CPU通过OUT指令 向8259A内部寄存器写入相应的命令字,8259A按 命令字指定的方式工作。 控制电路 ICW1OCW1 ICW2 ICW3 ICW4 OCW2 OCW3 书 P55 3.4.3 8259A的初始化编程 82 3.4.3 8259A的初始化编程 初始化编程 1. 向8259A写入初始化命令字ICW ,初始化8259A。 2. 初始化命令字ICW1ICW4 ,一旦写入,在工作过 程中不再改变。即8259A处于一个规定的状态和工作方 式上。 操作方式编程 1. 在用户程序中向8259A写入操作命令字OCW ,动态 改变8259A的操作控制方式。 2. 操作命令字OCW1OCW3 ,可多次改写。 83 n所有命令字都要直接或间接地通过有关端口 写入8259A内部的对应寄存器中。 MOV AL,Command_word OUT PORT,AL 8259A包含两个端口:奇地址端口、偶地 址端口 OCW1、 ICW2 ICW4写入奇地址端 口 ICW1、OCW2 OCW3写入偶地址端 口 PC/XT机:端口地址20H、21H 3.4.3 8259A的初始化编程 84 写ICW1 写ICW2 级连? 写ICW3 需ICW4? 写ICW4 N N Y Y 8086/8088CPU ICW的写入顺序不可颠倒 写入地址要求: ICW1必须写入偶地址端口 PC/XT:20H ICW2ICW4必须写入奇地 址端口 PC/XT:21H 一、8259A的初始化命令字 3.4.3 8259A的初始化编程 85 n8259A的初始化命令字 ICW1 芯片控制初始化,设置8259A的基本工作 方式(复位8259A) 。 ICW2 设置中断类型码(定义类型码高5位) ICW3 级联控制,初始化主片和从片 ICW4 8259A工作方式控制初始化,即设置中断 结束方式、缓冲方式、特殊全嵌套方式等。 3.4.3 8259A的初始化编程 86 对8086/8088无效 ICW1 识 别 位 偶 地 址 1 写初始化命令字ICW1芯片控制字 0000 87 nLTIM (D3):中断触发方式 n=1 高电平触发 n=0 上升沿触发 (PC/XT采用) nSNGL (D1):系统使用单片还是多片8259A n=1 单片 (PC/XT采用) n=0 多片(级联) nIC4 (D0):是否写入ICW4 n=1 写(PC/XT采用) n=0 不写 例:对PC/XT机,ICW100010011B(13H) ICW1设置可用以下指令实现 MOV AL,13H OUT 20H,AL ICW1 88 2 写初始化命令字ICW2中断类型控制字 (中断类型码 ) 用来定义中断类型码的高5位 T7T6T5T4T3 中断类型码的高5位 自动填入 IR0 000 IR1 001 IR2 010 IR7 111 奇 地 址 注意:低3位并不影响中断类型码的具体数值, 只有高5位影响。 主片/单片00001 从片01110(80x86系统) 89 8086中断系统中由8259A接收的IR0IR7中断的类型码 : IR0 08H 00001000B IR1 09H 00001001B IR2 0AH 00001010B IR3 0BH 00001011B IR7 0FH 00001111B 低3位由引入中断请求的引脚IR0IR7决定,IR0 IR7分别对应000111只要定义了类型码的高5位 ,类型码可由8259A自动生成。 其高五位均为00001B ICW2 90 例:ICW2=21H (00100001B) 则 IR0=00100000B=20H IR1=21H,IR2=22H IR7=27H 例: 若ICW2通过下述指令写入 MOV AL,00001000B OUT 21H,AL 则IR0的中断类型码为08H,IR7的中断类型码为0FH 。 注意:中断类型码基值必须是能被8整除的值,即其 低3位必须为0。 ICW2 91 ICW2 注意:ICW2低3位并不影响中断类型码的具体数值 ,只有高5位影响。 例: ICW2=40H (01000000B) 则 IR0=01000000B=40H IR1=41H,IR2=42H IR7=47H ICW2=45H (01000101B) 则 IR0=01000000B=40H IR1=41H,IR2=42H IR7=47H 92 奇 地 址 奇 地 址 8259A多片级联时使用 3 写初始化指令字ICW3主/从片初始化 (级连控制字) 93 (1)8259A多片级联时使用。 (2)只有在ICW1的SNGL(D1)位0 ,即系统包 含多片8259A时,才设置ICW3。 (3)PC/XT只有一片8259A,故无ICW3命令字。 ICW3 94 例如:从片接在主片的IR5引脚上 主片 从片 INT IR0 IR5 IR7 ICW3 则主片的 ICW3=00100000B=20H 从片的 ICW3=00000101B=05H 95 奇 地 址 (多片级联) (PC/XT) (PC机采用) 4 写初始化命令字ICW4方式控制字 对于8086/8088系统是必须设置的初始化命令字 BUF M/S 1 1 缓冲方式/主片 1 0 缓冲方式/从片 0 x 非缓冲方式/正常 PC/XT:BUF=1 1AEOI 96 n对PC/XT写入ICW4为: MOV AL,00001101B (0DH) OUT 21H,AL 普通全嵌套缓冲方式,非自动EOI结束方式 ICW4 97 设置ICW1为边沿触发,单片8259A 需要ICW4。 方式字: 00010011 MOV AL,13H OUT 20H,AL 设置ICW2 类型码为 00001000(IR0 ) MOV AL,08H OUT 21H,AL 设置ICW4,全嵌套方式,缓冲方式, 正常EOI 。 方式字: 00001101 MOV AL,0DH OUT 21H,AL 根据系统要求初始化编程如下: 例:在IBM PC机中,只有一片8259A,可接外部8级中断, 8259A的端口地址为20H和21H。对8259A的初始化规定:边 沿触发方式,缓冲方式,中断结束为EOI命令方式,中断优 先权管理采用全嵌套方式。8级中断源类型码为08H-0FH。 98 二、8259A的操作命令字OCW 初始化后在用户程序中写入 OCW的写入顺序可任意 写入地址要求: nOCW1必须写入奇地址端口 PC/XT:21H nOCW2,OCW3必须写入偶地址端口 PC/XT:20H 3.4.3 8259A的初始化编程 99 8259A的操作命令字OCW OCW1 屏蔽或开放中断(设置IMR中各位的值) OCW2 设置中断优先级循环方式和中断结束方式 OCW3 设置中断屏蔽方式、查询方式,设置对 IRR、ISR的读出命令 3.4.3 8259A的初始化编程 100 奇 地 址 (允许中断 ) (中断源被屏蔽 ) 1 操作命令字OCW1 屏蔽操作命令字 用来设置或清除对中断的屏蔽(设置IMR的值) 注意:可在应用程序任何地方通过写入OCW3随时对某 些中断源进行屏蔽或开放,以改变中断优先级。 101 问题:若PC/XT只允许定时器中断、键盘中断,其他中 断源被屏蔽,如何实现? 解:MOV AL, 0FCH (11111100B) OUT 21H,AL 102 2 操作命令字OCW2中断方式命令字 设置优先级循环和中断结束方式 偶 地 址 1. 若OCW2中设置特殊优先级循环方式 时(D7D6=11),指最低优先级编码。 2. OCW2中设置特殊中断命令结束 (D6D5=11) ,指具体清除当前ISR中的哪 一位。 若ICW4的AEOI=0,设置正常 结束访问,则在IRET前写 OCW2, 使EOI=1,复位当前中 断级在ISR中的对应位 103 D7 D6 D5 R,SL,EOI组合产生8种工作方式 R SL EOI 0 0 1 一般EOI 命令,系统工作于非循环的优先级方式 (全嵌套方式) 0 1 1 特殊EOI 命令,按L2-L0编码复位ISR 1 0 1 一般EOI 命令,优先级自动循环 1 0 0 自动EOI,设置优先级自动循环 0 0 0 取消优先级自动循环(固定优先级) 1 1 1 特殊EOI命令,优先级特殊循环(L2-L0设为最低 优先级) 1 1 0 优先级特殊循环(L2-L0设为最低优先级) 0 1 0 无意义 104 1、中断结束命令(EOI命令):EOI=1 (1)一般EOI命令: R=0,SL=0,EOI=1 MOV AL,00100000B (20H) ;EOI命令送AL OUT 20H,AL IRET (2)特殊EOI命令:R0,SL=1,EOI=1, L2L1L0指出要复位的指定位。 例如,要求复位ISR4 MOV AL,01100100 (64H) ;复位ISR4 OUT 20H,,AL IRET OCW2的作用 105 2、优先级自动循环命令 : R1 ,SL=0 优先级自动循环:R1,SL=0,EOI= 1 或R1 ,SL=0,EOI= 0 例如,当前IR4优先级最高,执行程序段 MOV AL,10100000B (0A0H) OUT 20H,AL ISR4清0,优先级次序为: IR5 IR6 IR7 IR4 R0 ,SL=0,EOI= 0,可结束优先级自动循环方式。 OCW2的作用 106 3、优先级特殊循环命令 : R1 ,SL=1 优先级特殊循环:R1 ,SL=1,EOI=1 或 R1 ,SL=1,EOI= 0 系统最低优先级为L2L1L0所指定的值 例如,执行程序段 MOV AL,11100011B(0E3H) OUT 20H,AL 执行后,ISR3清0, IR3优先级为最低 OCW2的作用 107 允许特殊屏蔽模式 撤销特殊屏蔽模式 1 中断查询工作方式 0 非查询工作方式 查询方式位 3 操作命令字OCW3状态操作命令字 设置和撤销特殊屏蔽方式、设置中断查询方式、设置对 8259A内部寄存器IRR、ISR的读出命令 读寄存器命令位 特殊屏蔽模式允许位特殊屏蔽模式位 108 OCW3 nOCW3的作用 1)设置或撤消特殊屏蔽方式 2)设置IRR、ISR的读出命令 3)设置中断查询方式 109 例如,设PC/XT机正为IR3中断服务,现希望响应比IR3低的 中断。 方法:先将IR3暂时屏蔽(D6D5=11),响应低级中断,待响 应结束,解除对IR3的屏蔽( D6D5=10 ),执行IR3的中断处 理程序。 CLI ;关中断,便于设置命令 MOV AL,68H ;D6D511,写OCW3设置特殊屏蔽方式 OUT 20H,AL (01101000B) IN AL,21H ;读IMR状态 OR AL, 08H ;写OCW1暂时屏蔽IR3 (00001000B) OUT 21H,AL STI ;开中断,若有低级中断请求,CPU可响应并处理 1. 设置或撤消特殊屏蔽方式 110 CLI ;关中断,便于设置命令 IN AL,21H ;读IMR状态 AND AL,0F7H ;写OCW1解除对IR3的屏蔽 (11110111) OUT 21H,AL MOV AL

温馨提示

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

评论

0/150

提交评论