已阅读5页,还剩102页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第7章中断系统 7 1概述7 2可编程中断控制器8259A7 3PCI中断7 4串行中断 7 1 7 1中断系统概述 7 1 1中断的基本概念7 1 2现代微机中的中断类型7 1 3现代微机中的中断处理7 1 4中断向量的修改与设置 7 1 1 7 1 1中断的基本概念 CPU运行程序期间 遇到某些特殊情况 内部或外部事件 暂时中止原先程序的执行 而转去执行一段特定的处理程序 服务完毕 再返回去继续执行被暂时中断的程序 这一过程就叫中断 术语 1 中断 引起中断的事件称为中断源 中断源有外部中断和内部中断 内部中断由程序预先安排的中断指令 INTn 引起 或由于CPU运算中产生某种错误 如除法出错 运算溢出 引起 外部中断是外部设备或协处理器向CPU发出中断申请引起的 2 中断源 中断向量表 把系统中所有的中断向量集中起来放到存储器的某一个区域内 这个存放中断向量的存储区就叫中断向量表或中断服务程序入口地址表 放在内存最低1K字节 00000H 0003FFH 中断向量表 3 中断向量与中断向量表 中断向量 是中断服务程序的入口地址 它包括中断服务程序的段地址CS和偏移地址IP 共占4个字节地址 2 N和指针 7 1 2现代微机中的中断类型 1 外部硬件可屏蔽中断 由外部设备产生的中断请求都属于外部硬件中断 如键盘 鼠标 扫描仪及打印机等产生的中断就属此类 由INTR引脚引入这些中断请求 需要使用可编程中断控制器如8259A等对多个外部设备同时或先后产生的中断请求按优先级排队 选取一个当前具有最高优先级的中断请求送往INTR引脚 NMI往往用于处理必须立即响应的外部事件或重要的外部事件 比如电源故障和存储器读数据出现奇偶错等 这种中断不受IF标志位影响 它是不可屏蔽的 2 外部硬件不可屏蔽中断 3 软件中断 软件中断指令如INT3 INTn INTO和BOUND等引起的中断 这些软件中断指令在执行时 不需要中断识别总线周期 它们的中断类型号是固定的 可以立即启动相应的中断处理程序 2 中断识别CPU响应中断后 CPU要设法寻找中断源 即找到是哪一个中断源发出的中断请求 这就是所谓的中断识别 中断识别的主要目的是要形成该中断服务程序的入口地址 以便CPU将此地址置入CS IP寄存器 从而实现程序的转移 识别方法 CPU识别中断或获取中断服务程序入口地址的方法有两种 向量中断 是由中断向量来指示中断服务程序的入口地址 例如 对可屏蔽中断是在CPU响应中断后 发出中断应答INTA时 由中断控制器通过数据总线返回到CPU的中断类型号来确定中断源的 查询中断 是采用软件或硬件 串行顺序链电路 查询技术来确定发出中断请求的中断源 7 1 3现代微机中的中断处理 虽然不同的微型计算机的中断系统有所不同 但实现中断时都有一个相同的中断处理过程 它包括 中断请求中断判优中断响应中断服务中断返回 依次介绍此过程 7 1 3现代微机中的中断处理 1 中断处理过程 1 中断请求当外部设备要求CPU为它服务时 都要发送一个 中断请求 信号给CPU进行中断请求 CPU在执行完每条指令后去检查 中断请求 输入线 看是否有外部发来的 中断请求 中断判优 A 可屏蔽中断请求由接口电路向8259A发中断请求 经8259A处理之后通过INTR引脚向CPU发请求信号 并且还要提供中断类型号 对外部的中断申请有权决定是否予以响应 若允许申请 中断程序开始处用STI指令打开中断 若不允许 则用CLI指令关闭中断 B 非屏蔽中断通过NMI引脚提出请求 C 内部中断根据指令的执行情况而定 中断判优 2 中断判优要求设计者根据中断源的紧急情况 给每个中断源一个中断级别 即中断优先权 根据中断优先权进行判优 作用 2个 A 解决同时出现两个或两个以上的中断源产生请求的情况 B 实现中断嵌套 排优方法软件排优硬件排优 如 可编程中断控制器 中断响应 3 中断响应CPU响应中断时 最重要的是要获得对应的中断类型号 之后 完成如下操作 A 将标志寄存器PSW的内容压入堆栈B 将TF和IF清0C 保护断点 即将断点处CS和IP的内容压入堆栈 D 将中断类型号 4 找到被响应的中断源的服务程序的入口地址 包括中断服务程序的段地址和偏移地址 再分别将它们装入CPU的CS和IP寄存器 一旦装入完毕 就进入中断服务程序并开始执行 中断服务 4 中断服务中断服务 由中断服务子程序来完成 子程序中必须作以下工作 A 保护现场 把中断服务子程序中用到的寄存器的内容入栈 以防影响主程序的运行 B 开中断 以便在此子程序中允许中断嵌套 C 执行中断处理程序 完成相应的任务 D 关中断 确保有效的恢复现场E 恢复现场 中断返回 5 中断返回中断服务程序结束 执行 中断返回 会自动将保存在堆栈中的被中断的程序的断点及标志寄存器的内容弹出 依次弹出6个字节为IP CS和PSW 并将弹出的断点装入代码段寄存器 CS 和指令指针寄存器 IP 使程序又回到中断前的地址继续执行 说明 不同类型中断的处理过程都要经过以上5步 但存在细微差别 其主要区别在于获取中断号的方法不同 因此 在中断响应这一步有差别 4 中断响应周期 2 中断响应周期 1 内部中断 由指令或在执行指令过程中提供中断类型号 获得类型号之后执行 A 将标志寄存器PSW的内容压入堆栈B 将TF和IF清0C 保护断点 即将断点处CS和IP的内容压入堆栈 D 将中断类型号 4 从向量表中取入口地址送CS IP中 执行相应的中断程序 2 外部中断 2 外部中断 非屏蔽中断响应 NMI引脚有请求 则自动产生中断类型码2 其后的处理与内部中断相同 可屏蔽中断响应 中断响应周期有两个 第一个 INTA 通知中断源提供中断类型号 第二个 INTA T4状态的前沿获得中断类型号 获得类型号之后处理与内部中断相同 7 1 4中断向量的修改与设置 开机上电时 系统配置和使用的中断所对应的中断向量由BIOS负责装入 BIOS将中断服务程序的入口地址直接写入中断向量表 用户自己编写的中断处理程序须由用户把中断向量放入中断向量表 可以直接写入也可以通过DOS功能调用实现 例子 7 1 4中断向量的修改与设置 1 中断向量的设置 例1 假设中断类型号为60H 中断服务程序的段基址是SEG INTR 0300H 偏移地址是OFFSET INTR 006DH 则填写中断向量表的程序段为 提示 中断向量表存放在内存的最低端 1 用MOV指令设置 直接写入 2 中断向量修改 MOVAX 0MOVES AXMOVBX 4 60H 中断类型号 4 BXMOVAX 006DH 中断服务程序偏移地址MOVES BX AX 装入偏移地址MOVAX 0300HMOVES BX 2 AX 装入段基址 AH 25H入口参数 DS DX 中断子程序入口地址AL 中断类型号 2 利用DOS功能设置中断向量 例1 假设中断类型号为60H 中断服务程序的段基址是SEG INTR 0300H 偏移地址是OFFSET INTR 006DH 则填写中断向量表的程序段为 MOVAH 25H 设置新中断向量MOVAL 60HMOVBX 0300HMOVDS BX 送中断服务程序入口段地址到DSMOVDX 006DH DX为中断服务程序偏移地址INT21H 用户在使用中断时 通常是采用中断向量修改的办法来使用系统的中断资源 中断向量的修改方法是利用DOS功能调用INT21H中的35H号和25H号功能 2 中断向量的修改 例子 修改中断向量的步骤有3步 用35H号功能 获取原中断向量 并保存在字变量中 用25H号功能 设置新中断向量 取代原中断向量 以便当中断发生后 转移到新中断服务程序中去 新中断服务程序完毕后 利用25H号功能恢复原中断向量 AH 35H 取中断向量入口参数 AL 中断类型号出口参数 ES BX 中断子程序入口地址 修改步骤 例2 假设原中断程序的中断类型号是n 新中断程序入口地址的段基址为SEG NTR 偏移地址是OFFSET INTR 中断向量修改的程序段为 MOVAH 35H 取原中断向量MOVAL nHINT21HMOVAX ESMOVOLD SEG AX 保存原中断向量MOVOLD OFF BX MOVAH 25H 设置新中断向量MOVAL nHMOVDX SEG INTRMOVDS DX 送中断服务程序入口段地址到DSMOVDX OFF INTR DX为中断服务程序偏移地址INT21H MOVAH 25H 恢复原中断向量MOVAL nHMOVDX OLD SEGMOVDS DXMOVDX OLD OFFINT21H 7 2可编程中断控制器8259A 1 接受和扩充外部设备的中断请求一片8259A可以接受8个中断请求 经过级联可扩展至8片8259A 实现64级中断 2 优先级排队管理8259A具有完全嵌套 循环优先级 特定屏蔽等多种方式的优先级排队管理 3 提供中断类型号 8259A在微机系统中的主要作用 3 4 7 2 18259A的外部引脚和内部结构 一 8259A的外部引脚1 与外设连接的引脚 IR0 IR72 与CPU连接的引脚 1 D0 D7 双向 三态 2 INT 中断请求输出信号 单片情况下接CPU的INTR端 3 INTA 中断允许 接到CPU的 INTA端 接收到此信号 就要把中断类型号准备好 送到DB上去 4 WR 写命令信号引脚 允许CPU将ICW和OCW分别写入初始化命令寄存器和操作命令寄存器 5 RD 读命令信号引脚 可对8259A的IRR ISR IMR的内容及中断级编码进行读出操作 3 用于级联的引脚 3 用于级联的引脚 说明 对于主片 要知道在哪个引脚上连有从片对于从片 要知道本片连到主片的哪个引脚上 1 CAS0 CAS2 级联信号线主片 输出 从片 输入 2 SP EN 从片编程 缓冲器允许信号 双功能引脚 8259A工作于非缓冲方式下 SP 输入信号 为1 表示 主片为0 表示 从片 8259A工作于缓冲方式下 EN 输出信号 控制缓冲器的传送方向 为0 控制数据由8259A CPU为1 控制数据由CPU 8259A 4 端口地址选择 4 端口地址选择信号引脚 1 CS 片选信号 该引脚为低电平时 8259A才被选中 2 A0 选内部端口 直接接地址总线中的某一位 A0有两个状态 0 1 因此它将8259A的编程地址分为两种 A0 1为奇地址 A0 0为偶地址 二 8259A的内部结构 1 中断请求寄存器 IRR 是一个8位寄存器 存放从IR线上提出中断请求的中断源的状态 该寄存器8位 D0 D7 对应于连接在IR0 IR7线上的外设所产生的中断请求 哪一根输入线有请求 为高电平 对应位就置 1 否则为0 具有锁存功能 其内容可用OCW3命令读出 2 中断服务寄存器ISR 2 中断服务寄存器 ISR 是一个8位寄存器 记录目前正在服务的中断 在中断响应之后 在第一个中断周期 INTA1 将获准中断请求的中断级在相应的ISR位置位 表明IR3正处于被服务中 因此 ISR被用来存放正在被服务的所有中断级 ISR中某一位置1 可阻止与它同级以及比它优先级低的请求被响应 但不阻止比它优先级高的中断请求被响应 包括尚未服务完而中途被别的中断所打断了的中断级 其内容可用OCW3命令读出 3 优先级分析器 3 优先级分析器 PR 作用1 当输入端IR0 IR7中有多个中断请求信号同时产生时 优先级分析器对保存在IRR中的各中断请求进行判优 判别出优先级最高的中断请求 并在第一个中断响应周期 INTA 将其送至ISR 即将响应位置1 作用2 负责检查中断源中断请求的优先级并和 正在服务中的中断 进行比较 确定是否让这个中断请求送给处理器 假定中断源的中断比正在服务中的中断有更高的优先级 则优先级分析器就使INT线变为高电平 送给CPU 为它提出申请 并且在中断响应时将它记入ISR的对应位中 若中断源的中断等级等于或低于正在服务中的中断等级 则优先级分析器不为其提出申请 4 中断屏蔽寄存器 4 中断屏蔽寄存器 IMR 是一个8位寄存器对中断请求寄存器IRR起屏蔽作用 寄存器8位 D0 D7 对应IR0 IR78级中断 哪一级中断被屏蔽 就将IMR哪位写1 即禁止相应IR端提出的中断请求 反之 写0 就开放响应的中断 即允许相应IR端提出中断请求 屏蔽操作由屏蔽命令OCW1执行 5 数据总线缓冲器 5 数据总线缓冲器数据总线缓冲器是一个三态 双向8位缓冲存储器 它被用来作为8259A与CPU的接口 在编程时 对数据总线缓冲器有两种操作 CPU可以对8259A写入控制字 CPU可从8259A中读出状态信息 6 读写逻辑 8259A的读 写操作命令 6 读 写逻辑作用 控制通过数据总线缓冲器数据的传送方向 读 写 7 级连缓冲比较器 7 级联缓冲器 比较器它们用于多片级联及数据缓冲方式 提供了主 从片之间的接口 级联方式中 主片和从片之间将3个引脚CAS0 CAS2相互连接成为专用总线 主片将中断申请被响应的从片的标志号ID通过CAS0 CAS2线送到从片 通知中断被响应 从片收到标志号后 与自身的标识号比较 若相符 则在第二个 INTA2脉冲到来时 从片将中断号送到数据总线上 8 控制逻辑 8 控制逻辑根据中断请求寄存器IRR的置位情况和优先级分析器的判定结果 向8259A其他部分发出控制信号 同时向CPU发中断请求信号 INT 并接收来自CPU的中断响应 INTA 控制8259A进行中断服务状态 三 8259A的工作方式 5类 1 引入中断请求 中断触发 的方式 3种 边沿触发方式 在某个中断请求引脚上 IRi 有上升沿出现 表示有中断请求产生 上升沿后可一直维持高电平 不会再产生中断 电平触发方式 在某个中断请求引脚上 IRi 出现高电平表示有中断请求 但在响应中断后必须及时清除高电平 以免引起第二次误中断 中断查询方式 CPU用软件查询确定中断源 并为其服务 此时8259A不使用INT信号向CPU申请中断 2 连接系统总线的方式 2 连接系统总线的方式 2种 缓冲器方式要求8259A通过总线缓冲器接到数据总线上 适用于多片级联方式的大系统中 此时的 SP EN的 EN有效 用于启动缓冲器工作 控制数据传送方向 非缓冲器方式8259A不需要总线缓冲器而是将其直接接至数据总线 适用于小系统中 此时 SP EN的 SP有效 用于表示主 从芯片 3 屏蔽中断源的方式 3 屏蔽中断源的方式 2种 通常屏蔽方式利用操作命令字OCW1对中断屏蔽寄存器IMR相应位进行操作 对相应位置1 表示此位对应的中断请求被屏蔽 对相应位置0 表示此位对应的中断请求被开放 特殊屏蔽方式在某些场合 在执行某一个中断服务程序时 要求允许另一个优先级比它低的中断请求被响应 此时可采用特殊屏蔽方式 它可通过OCW3的D6D5 11来设定 4 优先级排队的方式 4 优先级排队的方式 4种 全嵌套方式 特点 优先级固定不变 规定 中断优先级按IR0 IR7的顺序由高到低进行排队 只允许中断级别高的中断源去中断中断级别低的中断服务程序 而不能相反 若在对8259A进行初始化以后 没有设置其它优先级方式 则自动按此方式工作 特殊全嵌套方式 特点 它和全嵌套方式基本相同 所不同的是在特殊嵌套方式下 当执行某一级中断服务程序时 可响应同级的中断请求 从而实现对同级中断请求的特殊嵌套 用于多片级联的情况下 3 优先级自动轮换方式 特点 优先级顺序不是固定不变的 当一个设备受到中断服务后 其优先级自动降为最低 它的下一级变为最高级 依次进行排列 其初始的优先级顺序规定 由高到低为IR0 IR1 IR7 各优先级的相对位置未发生变化 该方式用在系统中多个中断源优先级相等的场合 优先级指定轮换方式 特点 此方式与优先级自动轮换方式唯一的区别是 其初始的优先级顺序不是固定IR0位最高 然后开始轮换 而是通过程序规定中断优先级的顺序 通过一个写命令 写OCW2 指定IR0 IR7中任意一个为最低优先级 然后再按顺序自动轮换 决定优先级 5 结束中断的处理方式 5 结束中断的处理方式 2种 自动中断结束方式在中断服务程序中 中断返回之前 不需发中断结束命令就会自动清除该中断服务程序所对应的ISR位 这种方式用在多个中断不会嵌套的系统中 非自动中断结束方式在中断服务程序返回之前 必须发中断结束命令才能使ISR中的当前服务位清除 四 8259A命令字对8259A的编程分为两部分 1 初始化编程CPU向8259A写入2 4个初始化命令字ICW 其中ICW1 ICW2必须写入 是否写入ICW3 ICW4取决于ICW1的内容 2 操作方式编程CPU向8259A写入3个操作命令字OCW 根据需要 OCW可在初始化之后的任何时间写入 8259A有两类命令字1 初始化命令字 ICW 有四个 ICW1 ICW4 对8259A工作方式和工作条件进行设置 2 操作命令字 OCW 有三个 OCW1 OCW3 对中断处理过程实现动态控制的操作 问题 问题 CPU向8259A写入的命令字有7个 但8259A的端口地址只有两个 命令字多 端口地址少 怎样来解决此问题 1 从顺序上区分 2 从标志位上区分 初始化命令字 初始化命令字 ICW1 ICW4 8259A内部自动进行如下初始化 1 顺序逻辑复位 准备按ICW2 ICW3 ICW4的顺序接收 2 清除ISR和IMR 3 指定IR0优先级最高 依次为IR1 IR7 4 设定为普通屏蔽方式 5 设置为非自动中断结束方式 6 状态读出电路预置为IRR ICW1 当D4 1时 表示写入的是ICW1 写入时A0 0 D0 IC4 位 决定是否需要写初始命令字ICW4 D0 1 需要ICW4 D0 0 不需要ICW4 D1 SNGL 位 决定是否单片使用 D1 1 为单片使用 不需要写ICW3 D1 0 为多片级联方式 需要写ICW3 D3 LTIM 位 决定电平触发方式 D3 1 为电平触发 D3 0 为边沿触发 D4 ICW1的特征位 ICW2 1 ICW1 初始化字 写入时 A0 1对于8086 8088来说 T7 T3由用户来设置 表示中断类型码的高五位 T2 T0在响应中断时 由中断请求线IRi的二进制编码 IR4的编码为100 决定 由8259A系统自动产生 在第一个 INTA到来时 将这个编码写入低3位 ICW3 2 ICW2 中断类型号的设置字 3 ICW3 中断级联方式的设置字 若ICW1的D1 0 则需要写ICW3 写入时A0 1 对主 从片分开写入 主片的格式 D7 D0表示对应中断请求引脚IR7 IR0有无从片接入当主片输入端IRi上连接有从片的中断请求INT时 则设置Si 1 否则Si为0 从片格式 从片的格式如下 只用到低三位D2 D0 从片标志码 有8种编码 其值表示本从片的中断请求线INT接到主片的输入端IRi 若D2 D0为010 表示接到主片的IR2引脚 第一个中断请求回答信号 INTA1脉冲使所有的8259A得到通知 中断申请已被允许 在此同时 作为主片的8259A要在CAS0 CAS2总线上发出被响应的从片的ID码 从片接到此码 和自己的ID比较 如果相等 则在下一个中断应答信号 INTA2时 将中断类型号送到数据总线上 这样就完成了中断响应 ICW4 4 ICW4D0 PM 选用CPU的类型D0 1选用8086 8088D0 0选用8080 8085D1 AEOI 中断结束方式D1 1 自动结束方式 即ISR有自动复位功能 无须发送中断结束命令EOI D1 0 为非自动结束方式 则在中断服务程序完毕后 CPU要向其发送EOI命令 续 D3 BUF 规定了与总线的连接方式D3 1 为缓冲器方式 此时 SP EN引脚为输出线 用作控制缓冲器的数据传送方向 D3 0 为非缓冲器方式 此时 SP EN为输入线 用作主 从控制 D2 M S 当D3 1时 D2为主 从片标志D2 1 此片为主片 D2 0 此片为从片 若在非缓冲方式 D3 0 时 D2无意义 此时主 从标志由 SP决定 D4 1 SFNM 规定采用的嵌套方式D4 1 主片采用特殊完全嵌套方式 D4 0 主片采用一般全嵌套方式 操作命令字 操作命令字 OCW1 OCW3 初始化命令字之后 8259A就准备就绪了 即 可以接收外部中断请求信号了 此时 8259A工作在全嵌套工作方式 优先级固定不变 若想改变中断控制方式 屏蔽某些中断 读出8259A内部的状态信息 就要写入操作命令字 操作命令字的写入无顺序上的要求 但有地址上的要求 OCW1 1 OCW1 中断屏蔽操作 作用 用来设置或清除中断源的屏蔽 其屏蔽命令OCW1的格式如下 Mi 1屏蔽此位对应的中断请求端的设备 Mi 0开放此位对应的中断请求端的设备 此命令字通过A0 1的端口地址写入8259A内部 OCW2 2 OCW2 非自动中断结束方式的操作字 在非自动中断结束方式下 当中断服务程序完毕时 8259A需要得到一个通知 以便将该服务程序在ISR寄存器中对应位清除 让ISR寄存器只记录着那些正在被服务而未服务完毕的中断 非自动中断结束 EOI 有2种格式 不指定的EOI方式和指定的EOI方式 续 不指定的EOI方式当8259A接收到一个不指定的EOI命令时 它就直接将最高优先级 在被置位的ISR中最高 的ISR位复位 指定的EOI方式需要指出一个确切要被复位的ISR位 可以指定8259A的8个IR等级中的任何一个 续 以上两种中断结束方式由命令字OCW2来执行 OCW2的格式为 此命令字通过A0 0的端口写入到8259A内部 其中D4 D3为特征位 为0 0 D7位 R用来控制8259A中断优先级的轮换操作R位置1 则采用轮换优先级方式 R为0 优先级固定不变 续 D6位 SL用来设置需要指定的操作 D6 0 普通方式 不用对L2L1L0这三位赋值 D6 1 特殊方式 表明需要指出一个确切的被复位的ISR位 具体哪一位通过对低3位L2L1L0进行赋值指出 用来指明是8级中断源中的哪一个中断被结束 D5位 EOI用于所有需要使用中断结束命令的情况 若置1 则在中断服务完毕之后需要发送中断结束命令 使现行中断级的ISR中相应位复位 OCW2作用 D2 D0位 L2 L0这3位编码是用来指定中断等级 0 7 作用 2个 1 特殊循环方式中 指定系统中最低优先级的编码 2 当OCW2给出特殊的中断结束命令时 指明要对中断服务寄存器ISR中哪一位复位 此时 它和D6位SL配合使用 OCW2作用 OCW2的作用 2个 OCW2作中断结束操作 当在初始化命令ICW4选用非自动结束方式时 就利用OCW2来控制中断结束 此时EOI D5 1 其中又分两种情况 OCW2作用2 若采用不指定中断结束方式 则SL 0 L2 L0 000 OCW2 00100000B 若采用指定中断结束方式 则SL 1 L2 L0编码是被指定的的中断等级 OCW2 01100L2L1L0 其含义是将L2 L0编码所对应的ISR位复位 例如 指定IR5上的中断结束 则OCW2 01100101B 65H OCW2作用2 OCW2作中断优先级排队操作 当采用中断优先级轮换方式时 R 1 其中又分两种情况 若SL 1时 则为优先级指定轮换 由L2L1L0指定系统中最低优先级的编码 最高优先赋给它的下一级 若SL 0时 则为优先级自动轮换 当采用中断优先权固定方式时 R 0 则为完全嵌套方式 OCW2命令的功能如表3所示 功能表 3 OCW3 屏蔽和读状态字控制字 格式为 通过A0 0的端口写入到8259A内部 其中D4 D3位为特征位 为0 1 OCW2作用 作用 3个 1 设置中断屏蔽方式 为普通 特殊 D6位 ESMM为允许特定屏蔽方式位 用来允许或禁止SMM 若ESMM 0 则SMM位无效 若ESMM 1 则SMM位有效 D5位 SMM用于设置特定屏蔽方式 若SMM置1 则设置特定屏蔽方式 若SMM置0 撤消特定屏蔽方式 恢复原来优先级的控制 OCW2作用2 2 查询中断请求1片8259A可接8个外设 每个引脚又可扩展一片从8259A 若外设比较多 需要三级级联 在这种情况下 CPU很难判断是哪个设备提出的申请 这时就需要对8259A芯片进行查询 以确定哪个设备提出中断请求 CPU通过设置D2位 P 来发查询命令当P 1时 表示发出的为查询命令 即 向8259A写下面格式的OCW3 0XX011XXB此查询命令 暗含要查询两方面内容 1 此芯片上有无中断请求 2 若有中断请求 请求来自哪个引脚 CPU发出查询命令后 8259A立即组成查询字 等待CPU读取 查询字格式 查询字的格式如下 I表示本片有无中断请求I 1 表示本片有中断请求I 0 表示本片没有中断请求W2 W0 表示正在申请服务的最高优先等级的二进制代码 OCW2作用3 查询的读 写在同一端口进行 A0 0 如 MOVAL 00001100BOUT20H ALNOPINAL 20H AL 查询内容 OCW2作用3 OCW3 查询字 3 读8259A内部的状态8259A内部有3个寄存器 IRR ISR IMR 可供CPU读出当前的内容 对于IRR和ISR CPU在发读命令之前 先要指定读哪个寄存器 然后 再发IN指令 才能读取ISR和IRR中的状态信息 控制位为 D2 P D1 RR D0 RIS 1XX下一条读指令 IN 读查询字010下一条读指令 IN 读IRR011下一条读指令 IN 读ISR对于IMR寄存器的读出 不需要事先发指定命令 只要读奇地址端口 A0 1 即可 8259A编程与应用 OCW3 7 2 38259A的编程与应用 1 8259A的编程命令的使用对8259A的编程分为两种 初始化编程在中断系统运行之前 向8259A顺序写入2 4个初始化命令字ICW 从而使8259A在一定的工作方式下管理外部中断源 初始化程序放在8259A运行之前 作为主程序的一部分 初始化编程 操作方式编程若用户要改变初始化设定的操作方式 可以通过CPU发操作命令字OCW对中断控制器进行动态控制 OCW不需要按顺序发送 一般也不要求安排在程序开头 而是根据需要在程序中任意安排 初始化编程 2 8259A的初始化编程 例题 单片使用8259A的初始化编程 1 初始化要求在早期的PC微机中是单片使用 其要求是 共8级向量中断 即采用单片方式 SP接 5V 8个中断请求输入信号IR0 IR7均为边沿触发 设定0级 7级请求对应中断类型号为8 0FH 采用完全嵌套方式 0级为最高优先级 7级为最低优先级 非自动结束 端口地址在020H 03F范围内 实际使用020H和021H两个端口 ICW2 ICW4 程序 ICW1 ICW2 ICW4 2 初始化程序根据上述硬件连接 在系统上电期间 对8259A执行初始化的程序段如下 操作方式编程 OCW1 OCW2 OCW3 3 操作方式编程 1 允许IR0和IR1 其他端的状态均不变INAL 21H 读IMRANDAL 0FCH 11111100BOUT21H AL 2 中断结束方式为EOI命令方式时 发中断结束命令MOVAL 20HOUT20H AL 3 读IRR 中断请求寄存器 MOVAL 0AHOUT20H ALNOPINAL 20H 读出IRR的内容 中断程序设计举例 4 中断程序设计举例 例题 编写一个中断处理程序 要求在主程序运行过程中 每隔10秒钟响铃一次 同时在屏幕上显示出信息 Thebellisring 在系统定时器 中断类型为8 中断处理程序中 有一条中断指令INT1CH 时钟中断每发生一次 约每秒中断18 2次 都要嵌套调用一次中断类型1CH的处理程序 在ROMBIOS例程中 1CH的处理程序只有一条IRET指令 如果用户有某种定时周期性的工作需要完成 就可以利用系统定时器的中断间隔 用自己设计的处理程序代替原有的1CH中断程序 1 要求与特点1CH作为用户使用的中断类型 可能已被其他功能的程序所引用 所以在编写新的中断程序时 应作下述工作 在主程序的初始化部分 先保存当前1CH的中断向量 再设置新的中断向量 在主程序的结束部分恢复保存的1CH中断向量 2 编程设计 DATASEGMENTCOUNTDW1MSGDB THEBELLISRING ODH OAH DATAENDSCODESEGMENTMAINPROCFARASSUMECS CODE DS DATASTART MOVAX DATA 设置数据段MOVDS AX 保存原中断向量MOVAL 1CH AL 中断类型号MOVAH 35H 取中断向量INT21H DOS调用PUSHES 保存工作寄
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 【正版授权】 IEC 62683-2-2:2025 EN Low-voltage switchgear and controlgear - Product data and properties for information exchange - Engineering data - Part 2-2: Switchgear and controlgear
- 起重伤害专项事故演练档案
- 2026年中国家居行业发展展望及投资策略报告
- TCNIA-接触器用碲铜板编制说明
- K202409高起专《财政学原理(专科)》复习题
- 建发股份招聘笔试题库及答案
- 2025年度县委书记个人述德述职述廉报告
- 2025年作文训练考试题目及答案
- 重污染应急预案范文(3篇)
- 社会体育考试题目及答案
- 就业帮扶车间培训课件
- 制药工程导论课件第六章
- 泌尿外科发展简史
- 中医推拿按摩对膝关节病的疗效
- 中国老年患者术后谵妄防治专家共识
- 终身教育视野下人工智能赋能特殊职业教育的实践与探索
- 杭州市建德市公安局集中招聘警务辅助人员考试真题2024
- 温通刮痧技术操作流程图及考核标准
- 人教版小学一年级语文上册期末试卷(5份)
- 2025年宁波市水务环境集团有限公司招聘笔试参考题库含答案解析
- 真需求-打开商业世界的万能钥匙
评论
0/150
提交评论