第七章中断技术_第1页
第七章中断技术_第2页
第七章中断技术_第3页
第七章中断技术_第4页
第七章中断技术_第5页
已阅读5页,还剩139页未读 继续免费阅读

下载本文档

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

文档简介

1 微机原理与测控接口技术 北京邮电大学自动化学院叶平Email Yeping Tel 61198209 2 第七章IO接口与中断技术 3 本章教学目标 I O的基本知识 接口的功能与作用 端口编址方式 信息传送方式 端口地址分配与地址译码等 中断的基本原理 中断请求 判优 响应 处理 返回 8086中断系统 中断源 中断向量表 中断类型号 中断响应过程等 中断控制器8259A 内部结构 工作原理 工作方式及编程 PCXT AT机中的外部中断逻辑 4 第一节I O接口 5 输入和输出设备是计算机系统的重要组成部分 外设与CPU是通过各种I O接口实现的 I O接口在系统中起着重要的桥梁作用 I O接口 连接外设与总线之间的逻辑电路的总称 7 1 1I O接口的重要作用 6 CPU与外设交换数据需要解决问题 速度不匹配 信号电平不匹配 TTL CMOS RS 232等 信号格式不匹配 并行 串行 模拟 数字等 时序不匹配 外设有自己的定时与控制逻辑 7 CPU与I O设备之间的接口信息 数据信息 状态信息和控制信息数据信息 Data CPU与外设交换的基本信息数字量由键盘 磁盘驱动器等读入的信息是以二进制表示的数或以ASCII码表示的数或字符 模拟量如温度 压力等非电量 经由传感器及其调理电路转换成模拟电压或电流 再经过A D转换后输入计算机 计算机的控制输出则必须先经过D A转换后 才可控制执行机构 开关量只有两个状态的量 如开关的合与断 阀门的开与关等 只要用一位二进制数表示 一个字节长度一次输入或输出可控制8个开关量 8 状态信息 Status 反映外设当前所处的工作状态 输出时 常要查询外设 输出 是否有空闲 Busy 数据缓冲区中数据是否已全部输出 若为空闲状态 则可以接收CPU传送来的数据 否则CPU要等待 输入时 CPU常要先查询外设 输入 的信息是否准备好 Ready 准备好才传送 Ready Busy等表明外设工作状态的信息是CPU要读取的 9 控制信息 Control 控制外设启动或停止等信息 状态信息 控制信息 数据信息为性质不同的信息 必须分别传送 如何进行区分 为使三者之间能区分开 必须各自有不同的I O端口地址 因此 一个外设往往要一组I O端口地址 对应于外设的一组寄存器 CPU寻址的是I O端口 00110001 数据端口 命令端口和状态端口 10 I O端口I O接口电路中CPU能直接访问的外设寄存器的地址一个端口对应一个地址一个I O接口电路有一组寄存器 对应多个端口 数据端口 命令端口和状态端口外设寄存器往往是8位的 通常外设数据端口是8位的而状态与控制端口往往只用其中的一位或两位 故外设状态和控制信息可以共用一个端口CPU对外设的操作归结为对接口电路中I O端口的读 写 I O接口 IO设备 寄存器阵列 堆 CS 11 7 1 3I O端口的编址方式 统一编址方式独立编址方式 I O I O M M I O M 12 I O接口 寄存器阵列 堆 CS 总线接口 ALU 寄存器阵列 FR 8086 A19 A0 译码电路 设置专门输入 输出指令提供I O读写信号线INAL 20HMOVAL 20H DS 0000H I O FFFFH 0000H I O M 00000H FFFFFH Memory M IO 独立编址方式 13 与存储器统一编址 或存储器映射方式 优点 指令多且齐全 端口空间大 缺点 指令长且慢 占用存储器空间 I O独立编址优点 指令短 设有专门的I O指令 执行快 不占存储器空间 程序易读 缺点 端口空间小 需要单独的I O信号线 14 7 1 4CPU与I O端口之间传送信息的方式 无条件传送最简单的传送方式 用于外设 例如各种机械或电子开关设备 总是处于准备好的情况 CPU 主机 对开关设备的操作 读取开关状态或者设置开关状态 CPU通过锁存器及驱动器控制LEDLED随时准备接收CPU的控制 七段LED接口电路 15 无条件传送的输出方式CPU的输出数据经数据总线加至三态缓冲器的输入端 端口地址译码信号Y AEN和IOW信号经过门电路后产生三态缓冲器的控制信号 AEN是地址允许信号 当AEN 0由CPU控制总线 当AEN 1时 由DMA控制总线 CPU不控制总线 三态缓冲器的控制信号为低电平时 开启三态缓冲器使来自CPU的数据送到外设 A0 A9 AEN IOR等信号为ISA总线信号 page242 OUTDX AL 16 无条件传送的输入方式CPU读外设数据时总认为数据已准备就绪 AEN是地址允许信号 当AEN 0由CPU控制总线 当AEN 1时 由DMA控制总线 CPU不控制总线 A0 A9 AEN IOR等信号为ISA总线信号 page242 INAL DX 17 CPU执行输入指令 指定的端口地址经系统地址总线 对PC机为A9 A0 送至地址译码器 译码后产生Y信号 Y为低电平说明地址线上出现的地址正是本端口的地址 AEN为低电平说明CPU控制总线 端口读控制信号IOR有效 低电乎 时 说明CPU正处在端口读周期 三者均为低电平时 经门电路后产生低电平 开启三态缓冲器使来自外设的数据进入系统数据总线而到达累加器 INAL DX 18 采用无条件传送方式的数据采集系统如图所示 被采样的数据是8个模拟量 由继电器绕组P0 P1 P7控制触点K0 K1 K7逐个接通 用一个4位 十进制数 数字电压表测量 把被采样的模拟量转换成16位BCD代码 高8位和低8位通过两个不同的端口输入 其地址分别为340H和341H CPU通过端口342H输出控制信号 以控制继电器的吸合 实现不同模拟量的采集 19 程序实现如下 start movcx 0100h 01 ch 置合第一个继电器代码 00 cl 断开所有继电器的代码leabx bufferxoral al 清alnext moval clmovdx 342houtdx al 断开所有继电器线圈calldelay1 模拟继电器触点的释放时间moval choutdx al 使P0 P7吸合calldelay2 模拟触点闭合及数字电压表的movdx 340h 转换时间inal dxmov bx al 输入 20 incbxincdx 341hmovdx 341hinal dxmov bx alincbxshlch 1 CH左移一位 为下一个触点闭合作 准备0000 0001 0000 0010jnenext 8个模拟量未输入完则循环 此程序段完 执行别的程序段 数据端口 命令端口和状态端口 21 无条件传送方式可以用来处理开关设备 但不能用以处理许多复杂的机电设备 如打印机 CPU能够以极高的速度成组地向外设输出数据 微秒级 机械动作速度很慢 毫秒级 如果CPU不查询打印机的状态 不停地向打印机输出数据 打印机来不及打印 后续的数据必然覆盖前面的数据 造成数据丢失 查询传送方式就是在传送前先查询一下外设的状态 当外设准备好了才传送 若未准备好 则CPU等待 22 程序查询传送方式读I O端口状态信息 若准备就绪 则执行输入或输出操作 否则 就继续查询等待 CPU先从状态端口读入外设的状态信息 检查外设是否已准备好数据 若未准备好 则CPU进入循环等待 直到准备好后才退出循环 结束等待 读入数据 故查询式输入除了必须配备数据口外 还必须占用状态端口中的若干位 23 程序查询方式 外设未准备好 输入设备 8位数据锁存器 8位三态缓冲器 1位缓冲器 D Q R 5V 地址译码 状态信息 去系统数据总线 IOR AEN IOR AEN A9 A0 Ready 状态端口地址 24 输入设备 8位数据锁存器 8位三态缓冲器 1位缓冲器 D Q R 5V 地址译码 状态信息 去系统数据总线 IOR AEN IOR AEN A9 A0 Ready 数据端口地址 状态端口地址 程序查询方式 外设准备好 25 wait1 movdx s portinal dxtestal 80hjzwait1movdx d portinal dx 检查是否已准备好数据 如果未准备好 继续等待 已准备好 从数据端口读出数据 读状态端口数据 查询程序 26 查询式输出CPU必须先查外设的状态 看外设的数据缓冲区是否已空 所谓 空 就是数据缓冲区可以接收CPU输出的新数据 若缓冲区空 即BUSY为假 则CPU执行输出指令 否则BUSY为真 CPU就等待 27 查询传送方式读I O端口状态信息 若准备就绪 就输入或输出 否则 就继续查询等待 可见 该方式CPU的大部分时间都用在了查询和等待了 所以传送效率不高 28 中断传送方式当外设没有准备好时 CPU可以去做其他工作 省去CPU的查询等待时间 提高效率 以打印机为例 其工作过程如下 CPU启动打印机工作 然后继续自己的工作 当打印机准备好或已完成一个字符输出时 把设备置为就绪状态 I O接口在设备就绪时向CPU发出中断请求 CPU接到中断请求信号 暂停当前工作 转入中断服务程序ISR 响应中断 ISR实现发送下一个字符到打印机 CPU从中断服务程序返回 继续自己的工作 重复2 5步 直至整个文件输出结束后关闭打印机 29 中断请求外设需要CPU服务时 需要发出中断请求 外设及其接口的中断请求分为边沿请求和电平请求 请求信号由低到高或由高到低的跳变为边沿触发请求 请求信号为高电平或低电平为电平触发请求 可屏蔽中断输入引脚INTR不可屏蔽中断输入引脚NMI 30 31 中断传输方式可实现CPU和外设并行工作 可大大提高CPU的工作效率 32 CPU与I O端口之间传送信息的方式无条件传送程序查询传输中断传送DMA传送 DirectMemoryAccess 33 7 1 5PC机系列I O端口地址分配 地址分配 前256个端口给系统板 后768个端口给扩展板系统板上接口芯片的端口地址 000H 00FFH 34 扩展槽上接口控制卡的端口地址 100H 3FFH IBMPC AT 35 7 1 6I O端口地址译码 译码电路的两种译码方式固定式端口地址译码可选式端口地址译码译码电路的实现途径门电路译码译码器译码GAL FPGA器件实现译码 译码电路对外可保密 由于涉及到开发工具与GAL编程 不要求掌握 36 用门电路实现地址译码 有全译码和部分译码全译码电路 I O所有地址线都参加译码的电路称为全译码电路 I O地址不会产生地址重叠 部分译码电路 I O地址线只有部分地址信号参加了译码的电路称为部分译码电路 译出的I O地址有重叠 IOR和IOW AEN等信号也可参加译码 ISA总线P242 DMA操作时也使用地址线和IOR IOW读写控制信号 为了区分DMA和CPU 要用到AEN信号 AEN 1 DMA控制总线 AEN 0 CPU控制总线 37 I O用门电路译码实例 a 部分译码 b 全译码 11110100B2F4H 注 AEN 0非DMA传送AEN 1DMA传送 38 11110100B2F4H 39 I O用门电路译码实例 a 部分译码 b 全译码 1101001xxxB348H 34FH 40 I O用门电路译码实例 a 部分译码 b 全译码 A0 A1 A2 1101001xxxB348H 34FH 41 采用译码器可同时译出多个端口地址常用译码器有3 8译码器74LS138 4 16译码器74LS154 双2 4译码器74LS139等 42 74LS138 其真值表如表所示 Y0 Y7是输出线 低电平有效 G1 G2A G2B为三个控制信号输入端 A B C为三个输入端 43 例 采用74LS138译码器实现全译码电路 1101011xxxB358H 35FH 44 45 开关式可选择译码电路 如何计算译码器的地址范围 46 第二节中断的基本概念 47 所谓中断就是当CPU正常运行程序时 由于随机的事件 包括内部事件和外部事件 引起CPU暂时中止正在运行的程序 转去执行请求中断的外设的中断服务程序 中断服务结束后再返回被中止的程序 这一过程被称为中断 主程序 中断服务程序 外设接口 中断请求 中断响应 中断服务 保护现场 恢复现场 什么是中断 中断返回 48 中断源 中断源能引起CPU产生程序中断的随机事件称为中断源内部中断源 软件中断 指令中断INTn出错中断外部中断源 硬件中断 可屏蔽中断INTR非屏蔽中断NMI 49 中断过程分为五步 中断请求 中断判优 中断响应 中断处理 服务 中断返回 主程序 中断服务程序 外设接口 中断请求 中断响应 中断服务 保护现场 恢复现场 中断返回 50 中断请求外设需要CPU服务时 需要发出中断请求 外设及其接口的中断请求分为边沿请求和电平请求 请求信号由低到高或由高到低的跳变为边沿触发请求 请求信号为高电平或低电平为电平触发请求 可屏蔽中断输入引脚INTR不可屏蔽中断输入引脚NMI 51 触发方式电平触发边沿触发 T1 T2 T3 T4 T1 T2 T3 T4 CLK INTA INTR T1 T2 T3 T4 INTA 1周期 INTA 2周期 发现产生中断 NMI 52 中断判优CPU管理多个中断源时 在收到中断请求后 需判断是哪一个中断源请求中断 给每个中断源指定一个优先权 称为中断优先级 多个中断源同时请求中断时 CPU按照中断优先级高低顺序 依次响应 中断判优的方法软件查询判优法硬件判优法 53 CPU响应中断后 转入执行一特定地址的中断服务程序 该中断服务程序查询状态口 确定发出中断请求的外设 然后进行相应的处理 软件查询判优法 端口 54 软件查询方法的接口电路如图所示 查询程序如下 XORAL ALMOVDX 340HINAL DX 读入中断寄存器状态RCRAL 1JCISR0RCRAL 1JCISR1RCRAL lJCISR2RCRAL 1JCISR3 若0 有请求 则转0 中断服务程序 查询方法的电路比较简单 但是当外设个数较多时 通过逐位检测查询到转入中断服务所耗费的时间较长 端口 55 外设的中断优先级由查询的次序决定 中断源较多时 查询时间可能较长 56 硬件判优 向量中断法 并行判优 多个外设经中断控制器向CPU提出中断请求 CPU响应中断发出INTA信号 中断控制器将相应的中断向量号 中断类型号 放在数据总线上 CPU读取后 即可确定中断源 查中断向量表进行相应处理 中断请求 57 中断向量表由若干中断服务程序入口地址组成的表例 x86的中断向量表 中断服务程序入口0 中断服务程序入口1 中断服务程序入口255 IPCS IPCS IPCS IPCS IPCS 00000H 00004H 003FCH 中断类型号中断向量号 00008H 58 中断请求 中断判优 中断响应中断响应就是CPU 中断 正在执行的处理任务 转向中断请求相对应的处理程序的过程 保护断点 保护其他现场 CPU关中断 转到中断请求所对应的中断服务程序 59 断点是指CPU执行的现行程序被中断时的下一条指令的地址 又称断点地址 用于恢复被中断程序的执行 中断现场是指CPU转去执行中断服务程序前的运行状态 包括CPU内部各寄存器等 恢复到中断之前的状态 CPU关中断在响应过程中 不允许被新的中断源中断 即IF 0 60 1000 0150H MOVAX 0ADDAX DXMOV DI AX CPU在执行此指令时 某中断源请求中断 CPU在执行完该指令后 转去执行中断服务程序 断点 61 中断处理 服务 中断处理就是执行中断服务程序 完成中断源提出的处理要求 CPU执行流程 62 中断处理程序 PUSHAXPUSHBX MOVAX 0ADDAX DXMOV DI AX POPBXPOPAXIRET 保护寄存器 恢复寄存器 处理程序主体 63 中断返回CPU控制权从中断服务程序转移到被中断程序的过程 IRET恢复现场CS IP 断点 FR 64 中断过程分为五步 中断请求 中断判优 中断响应 中断处理 服务 中断返回 主程序 中断服务程序 外设接口 中断请求 中断响应 中断服务 保护现场 恢复现场 中断返回 65 第三节PC机的中断系统 66 PC机中断系统 x86的中断源 8259可编程中断控制器 中断逻辑 INTn INTO 除法错误 单步中断 CPU 非屏蔽中断请求 1 0 4 NMI INTR INTA IRQ0定时 IRQ1键盘 IRQ2级联 IRQ3com2 IRQ4com1 IRQ5并口2 IRQ6软盘 IRQ7并口1 可屏蔽中断请求 67 主8259 20H 21H 从8259 A0H A1H IBMPC AT 可屏蔽中断请求 68 中断源的优先级 中断源优先级除法错 INT0 INTn INTO最高NMI次高INTR次低单步中断 INT1 最低 当有多个中断源同时请求中断时 CPU先响应优先级最高的中断源 再响应优先级较低的中断源 69 内部中断 软中断 除法错中断执行DIV或IDIV指令时 商超出商单元表示的最大值 即产生0号中断溢出中断当FR的OF 1时 执行INTO指令 即产生4号中断单步中断当FR的TF 1时 执行每条指令 即产生1号中断指令中断INTn 70 INTn中断分类 BIOS中断INT16HI O设备控制程序BIOS实用服务程序BIOS特殊中断BIOS专用参数中断DOS中断公开的DOS专用中断 供内核代码专用 未公开的DOS专用中断 供内核代码专用 DOS可调用中断系统功能调用中断INT21HDOS保留 中断服务程序 IPCS IPCS IPCS IPCS IPCS 00000H 00004H 中断向量号 71 外部中断 硬件中断 NMI 脉冲宽度 当CPU收到NMI请求后 默认该请求的中断类型号为02H INTR 电平触发 在CPU的INTR引脚输入 高 有效信号时 则产生硬件可屏蔽中断请求 是否屏蔽由FR寄存器的IF位决定 IF 0 屏蔽中断 执行CLI指令 IF 1 允许中断 执行STI指令 使用中断控制器管理多个硬件中断源 72 当CPU收到非屏蔽中断NMI请求后 默认该请求的中断类型号为02H 包括3个非屏蔽中断源 协处理器出错系统RAM奇偶校验错I O通道校验错 73 硬中断与软中断的比较 软中断的特点通常 用中断指令INT触发 中断的发生时刻是可知的CPU不发中断响应信号中断类型号 n 由指令直接给出不可被屏蔽硬中断的特点由外部事件引起 具有随机性CPU需发中断响应信号 对INTR 对NMI不发可以被屏蔽 对INTR 对NMI不能屏蔽由中断控制器发中断类型号 对INTR 对NMI CPU自动产生 02号 74 75 8086处理中断的过程 完成当前指令 内部中断 标志入栈 执行下一条指令 识别中断 读中断类型号 Yes Yes NMI INTR TF 1 IF 1 B A Yes Yes Yes No No No No No 76 0 TF0 IF A 查中断向量表得中断服务程序入口地址 保存断点CS IP执行中断服务程序 IRET 恢复被中断的程序 B 断点及FR出栈 77 中断向量表 中断向量表由若干中断服务程序入口地址组成的表例 x86的中断向量分配表如下图教材后面的附录D给出了中断向量地址表 p381 78 79 Memory 中断向量表 0000 0000 0000 03FFH 1000 0150H 3000 0200H 0000 n 4 0000 n 4 2 0000 0000 0200h3000h MOVAX 0ADDAX DXMOV DI AX MOVBX CX IRET 类型n中断服务程序入口地址 某中断源发出中断请求 中断类型号为n 堆栈 0150 1000 FR IP 0200HCS 3000H 0000 3FFH 0000 0000 start 80 从中断服务程序返回断点处 靠的是执行IRET指令 从堆栈中取出断点地址给CS IP 继续执行被中断的程序 故中断服务程序最后应安排IRET指令 堆栈 执行IRET后 IPCSFR 0150 1000 FR SS SP IP 0200HCS 3000H Memory 1000 0150H 3000 0200H 0200h3000h MOVAX 0ADDAX DXMOV DI AX MOVBX CX IRET 0000 n 4 0000 n 4 2 0000 0000 start 81 82 某中断向量号为72H 执行INT72H 取中断向量号72H 计算中断向量地址72 4 0 x01C8H72 4 2 0 x01CAH 取中断服务程序入口地址偏移量 IP IP 2050H段地址 CS CS A000H 转入中断服务程序A000H 2050H 中断返回到INT72H指令的下一条指令 83 当中断源产生中断请求后 不论是内部中断 INTn 非屏蔽中断 还是可屏蔽中断 只要满足响应条件 在执行完当前指令后 CPU内部硬件会自动完成下列响应中断的过程 取中断类型号n FR入栈 IF TF清0 断点CS入栈 断点IP入栈 取内存单元 0000 n 4 字内容送IP取中断子程序 取内存单元 0000 n 4 2 字内容送CS入口地址此时CS IP指向中断服务程序的入口 开始执行中断程序 中断控制指令INTn page112 84 中断向量表的修改 将中断类型号为80H的中断服务程序intr入口地址填入中断向量表直接修改中断向量表xorax axmoves axmovbx 80h 4 中断向量号x4movax offsetintr 中断服务程序的偏移地址moves bx axmovax segintr 中断服务程序的段地址moves bx 2 ax isr 80H asm 85 利用DOS调用修改中断向量表moval 1Ch 中断类型号18 2次为1smovah 35h 取原中断向量int21h ES BX 入口地址movold off bxmovbx esmovold seg bxmoval 1Ch 中断类型号movah 25h 置中断向量movdx segintrmovds dxmovdx offsetintrint21h DS DX 入口地址 isr 1Ch asm 86 moval 1Ch 中断类型号movah 25h 恢复原中断向量movdx old segmovds dxmovdx old offint21h DS DX 入口地址 87 思考题 某外部中断对应中断类型号为08执行INT08 88 第四节可编程中断控制器8259A 89 主8259 20H 21H 从8259 A0H A1H IBMPC AT 可屏蔽中断请求 90 8259A是一种可编程的中断优先级控制芯片 每一片8259A可管理8级中断 8259A外部特性与内部结构 91 8259A外部特性 1 8259A与CPU的连接信号 D7 D0 CPU与8259A之间的数据线 RD和WR 读 写命令线 接系统总线的IOR和IOW信号 CS和A0 片选线和地址线 CS由系统的I O地址译码器产生 确定该8259A在系统I O空间的地址 A0用于选择8259A的内部寄存器 因只有一条地址线 可知只有两个端口地址 INTR 中断请求信号线 高有效 接到CPU的INTR信号 INTA CPU或总线控制器8288来的中断响应信号线 在中断响应期间 该信号线送CPU来的负脉冲 92 2 8259A与外设间的连接信号 IR0 IR7 中断请求输入信号 高电平和上升沿请求 CAS2 CAS0 级联信号 当系统的中断请求多于8个时 可用两个或更多的8259A级联 其中一个是主中断控制器 其余的是从中断控制器 SP EN 双向信号线 当8259A与系统数据总线之间加双向总线驱动器以加大8259A的驱动能力时 8259A应处于 缓冲方式 应是输出线 以控制双向总线驱动器的EN端 若不采用 缓冲方式 则是输入线 由它决定该8259A编程为 从片 0 还是编程为 主片 1 93 94 STI IP CS FR CPU和总线控制逻辑 1 条件IF 1NMI 0HOLD 0无内部中断 INTR INTA D0 D7 8259A INT INTA D0 D7 IR0 IR1 IR7 外设中断请求 5 保护断点 9 返回主程序 4 N 4 N 2 IP CS FR 1 中断请求 主程序 2 中断请求INT 1 3 INTA 0送8259A 4 类型码N送CPU 中断处理程序 IRET 可屏蔽中断的响应和处理过程 95 8259A的内部结构 96 中断请求寄存器 IRR 存放外部中断源发出的中断请求信号 IRRi置1 表明IRi引脚上有了中断请求信号 中断屏蔽寄存器 IMR 0 允许中断 1 屏蔽中断 由CPU执行程序写入 在服务寄存器 ISR 存放正在被CPU处理的中断请求信号 例如 通过判优电路IRR0位的请求被选中 8259A向CPU发中断请求 通过INTA收到第一个中断响应信号后 ISR0置为1 ISR0位为1 表明CPU正在准备 或正在 执行IR0的中断服务程序 8259A的内部结构 97 8259A的内部结构 98 优先级分析器 PR 检测从IRR ISR和IMR来的输入 确定控制逻辑是否向CPU发出中断请求中断控制电路 读写初始化命令字和操作命令字 当判优电路选中一个中断源时 向CPU提中断请求 通过INTA接收CPU送来的中断响应信号 中断响应信号是2个连续的负脉冲 99 单片8259A的中断过程 100 单片8259A的中断过程有中断请求 一个或多个IRi引脚上出现高电平或上升沿请求 相应IRRi置为1 若IRi对应的IMRi IMR 位为0 将IRRi有效位送PR裁决 并和ISRj进行比较 若IRRi优先级高 则向CPU发送中断请求 若CPU的IF 1 则进入中断应答周期 CPU发送INTA 1 禁止新的中断请求 即 冻结 IRR寄存器 判优 置8259A最高优先级中断的ISRi为1 准备送出中断类型号 CPU发送INTA 2 8259A送出1字节中断类型号 CPU读取类型号 从中断向量表取中断服务程序入口地址 进入中断服务 中断结束操作 自动中断结束模式 AEOI INTA 2结束时自动清ISRi 非AEOI模式 则需要在中断服务程序中发送EOI命令清ISRi 单片8259A的中断过程 101 中断响应周期 对INTR page297 INTA 1 CPU封锁总线 LOCK有效 8259A最高优先级请求对应的ISR位被置1 对应IRR位清0 准备中断类型号INTA 2 总线解锁 8259A将当前中断请求对应的中断类型号送到数据总线上 102 8259A多片级联 单片8259A可管理8级中断 两片8259A可级联可管理15级中断 级联缓冲 比较器用于完成多片8259A级联 103 104 8259A的级联 1主1从 SP EN引脚 In 1 为主8259A 0 为从8259A 非缓冲方式 其中一个是主中断控制器 其余的是从中断控制器 从中断控制器的INT输出接到主中断控制器的一个IRi输入 图中为IR2 上 CAS2 CAS0 级联信号 中断响应期间INTA 1 若主8259A判定所响应的是由从8259A来的中断请求 则它在级联线上发出该从8259A的识别号 图中为010 并由从8259A接收 在INTA 2周期 则由从8259A给出中断类型号 105 8259A 从片 中断控制器 8259A 主片 中断控制器 CAS012SP CAS210SP INTR 8086CPU INT INT 8259A 从片 中断控制器 IRQ17IRQ18IRQ19IRQ20IRQ21IRQ22IRQ23IRQ24 CAS012SP INT D7 D0 D7 D0 D7 D0 8259A多片级联 1主2从 IRQ8IRQ9IRQ10IRQ11IRQ12IRQ13IRQ14IRQ16 IRQ0IRQ1IRQ2IRQ3IRQ4IRQ5IRQ6IRQ7 106 8259A 从片 中断控制器 8259A 主片 中断控制器 CAS012SP CAS210SP INTR 8086CPU 8259A 从片 中断控制器 CAS012SP D7 D0 D7 D0 D7 D0 8259A多片级联 1主2从 IRQ17IRQ18IRQ19IRQ20IRQ21IRQ22IRQ23IRQ24 IRQ8IRQ9IRQ10IRQ11IRQ12IRQ13IRQ14IRQ16 IRQ0IRQ1IRQ2IRQ3IRQ4IRQ5IRQ6IRQ7 INT INT INT 107 8259A的级联 1主2从 8259A 从片 中断控制器 8259A 主片 中断控制器 IRQ8IRQ9IRQ10IRQ11IRQ12IRQ13IRQ14IRQ16 IRQ0IRQ1IRQ2IRQ3IRQ4IRQ5IRQ6IRQ7 CAS012SP CAS210SP INTR 8086CPU 8259A 从片 中断控制器 IRQ17IRQ18IRQ19IRQ20IRQ21IRQ22IRQ23IRQ24 CAS012SP 在其它引脚没有全部都接从PIC时 IRQ0不要接从PIC INT INT INT 108 8259A的内部结构 109 中断优先级固定优先循环优先 110 中断嵌套当前正在被执行的中断服务程序可被优先级更高的中断请求中断优先级相同或更低的中断请求不能中断当前正在被执行的中断服务程序 111 IS3 1IF 0 IS1 1IF 0 IF 1 IS1 0 IS3 0 IS4 0 IF 1 IF 1 IF 1 一般 全嵌套方式 只允许比现正处理的优先级更高的中断打断它的处理而被服务 page302 112 中断结束 EOI 自动中断结束方式 AEOI INTA 2结束时自动使当前优先级最高的ISRi清0 免除命令EOI 非指定中断结束方式 NSEOI 非AEOI 001中断服务程序发送NSEOI命令 则使当前优先级最高正在被处理的ISR位清0 在全嵌套方式下 当前优先级最高且ISR位为1的肯定为正被CPU处理的中断 中断结束需要被清0 指定中断结束方式 SEOI 非AEOI 011中断服务程序发送SEOI命令 指定所需复位的ISRi的号 如IR1服务结束时 可以发送SEOI1命令指定ISR1清0 用于不能肯定当前被处理的中断是不是最高优先级的场合 113 主IS2 1从IS7 1IF 0 中断结束时需要分别向主 从8259A发送EOI命令 一般 全嵌套方式 无法响应IR12 114 允许同级和高优先级的请求可以打断正在进行的处理而实现嵌套 只设置在主8259A 中断结束操作需特殊处理 特殊全嵌套方式SFNM 主IS2 1从IS7 1IF 0 从IS6 1IF 0 从IS6 0 从IS7 0主IS2 0 IF 1 IF 1 115 特殊屏蔽方式 SMM 使优先级低于当前被处理的中断 也能产生中断 打乱全嵌套结构 即被处理的中断不一定是当前最高优先级中断 中断结束时 是采用非指定EOI指令 指定EOI 还是都可以 116 自动EOI循环 AEOI循环 自动循环方式 AEOI循环 INTA 2 ISRi清零 同时优先级置为最低 非指定EOI循环 NSEOI循环 中断结束时 在中断服务程序中发送NSEOI命令 当前优先级最高的中断ISRi清零 同时设置其优先级为最低 指定EOI循环 SEOI循环 指定EOI循环 中断优先级循环控制方式 117 8259A是一种可编程的中断优先级控制芯片 每一片8259A可管理8级中断 8259A外部特性与内部结构 118 119 8259A编程方法 初始化命令字 有4个初始化命令字ICW 芯片控制 是否级联 触发方式等 ICW1 A0 0 中断类型号ICW2 A0 1 级联方式ICW3 A0 1 特殊全嵌套 缓冲器方式ICW4 A0 1 操作命令字 有3个操作命令字OCW 中断屏蔽字OCW1 A0 1 中断结束方式OCW2 A0 0 中断查询OCW3 A0 0 120 对8259A的编程分两步 第一步 在系统加电和复位后 用初始化命令字 ICW 对8259A芯片进行初始化编程 第二步 在操作阶段 用操作命令字 OCW 对8259A进行操作过程编程 在写入ICW寄存器后 才可写OCW寄存器 121 8259A初始化流程 A0 0 A0 1 A0 1 A0 1 20H21H 122 初始化命令字1 ICW1 完成触发方式设置及级联方式设置的功能 123 初始化命令字2 ICW2 完成中断类型号设置的功能中断矢量寄存器 高5位由用户设定 低3位由系统自动填入 若写入00001000B 则对应的中断类型号为08H 0FH写入00001111B呢 124 初始化命令字3 ICW3 只在级联方式下使用 完成主 从片间连接关系设置功能 对主片的设置对从片的设置 125 例如 一个主片和两个从片的级联如图 主片和两个从片的ICW3分别初始化 126 初始化命令字4 ICW4 ICW4 完成结束中断方式 缓冲模式和嵌套模式的设置功能 127 8259A初始化流程 A0 0 A0 1 A0 1 A0 1 只能从ICW1开始ICW1任何时候都能被寻址A0 0 D4 1 CS 0 WR 0 128 操作命令字1 OCW1 OCW1即为IMROCW1完成中断屏蔽IR0 IR7的设置功能OCW1可读可写 129 操作命令字2 OCW2 OCW2 完成非AEOI 优先级等控制 130 如果采用完全嵌套方式 可采用非指定EOI方式发出EOI后 中断控制器将ISR中优先级最高的ISRi清零 例如 ISR 00100100 假设IR0最高 IR7最低 执行moval 00100000h OCW2 20H out20h al 该指令中20H为8259A的端口地址 后 ISR 00100000 非指定EOI NSEOI 131 指定EOI SEOI 如果中断优先级被打乱 即当前正在被服务的中断服务程序的优先级不是最高的 则必须采用指定EOI方式 在中断服务程序中发出EOI时 须指定要被清零的ISRi 例 ISR 00100100 当前服务程序对应ISR5执行 moval 01100101h OCW2 65H out20h al 该指令中20H为8259A的端口地址 后 ISR 00000100 132 操作命令字3 OCW3 OCW3 特殊屏蔽方式设置的功能 读IRR和ISR寄存器 状态字查询 133 读IR或ISR寄存器 读IRRmoval 00001010bout20h alnopinal 20h IRR al读ISRmoval 00001011bout20h alnopinal 20h ISR al 134 查询

温馨提示

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

评论

0/150

提交评论