微机原理_中断及+程序8259_第1页
微机原理_中断及+程序8259_第2页
微机原理_中断及+程序8259_第3页
微机原理_中断及+程序8259_第4页
微机原理_中断及+程序8259_第5页
已阅读5页,还剩59页未读 继续免费阅读

下载本文档

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

文档简介

1 8086的中断 P99 18086 8088的中断分类硬件中断 非屏蔽中断和可屏蔽中断 软件中断 中断指令和内部中断 8086的中断系统采用中断向量机制能够处理256个中断用中断类型号0 255区别 2 非屏蔽中断 通过非屏蔽中断请求信号引脚 NMI 向微处理器提出的中断请求 微处理器无法禁止 将在当前指令执行结束予以响应 这个中断被称为非屏蔽中断8086的非屏蔽中断的类型号为2非屏蔽中断主要用于处理系统的意外或故障 3 可屏蔽中断 外部通过可屏蔽中断请求信号引脚 INTR 向微处理器提出的中断 微处理器在允许可屏蔽中断 IF 1 的条件下 在当前指令执行结束予以响应 同时输出可屏蔽中断响应信号 INTA 这个中断就是可屏蔽中断8086通常需要配合中断控制器8259A共同处理可屏蔽中断 中断类型号由8259A发出可屏蔽中断主要用于主机与外设交换数据 IF控制可屏蔽中断的响应 4 指令中断 在执行中断调用指令INTn时产生的一个类型号为n 0 255 的内部中断 称为指令中断 5 除法错中断 在执行除法指令时 若除数为0或商超过了寄存器所能表达的范围 则产生一个类型号为0的内部中断 称为除法错中断例如 movbl 0divbl 除数BL 0 产生除法错中断 movax 200hmovbl 1divbl 商 200H 不能用AL表达 产生除法错中断 6 单步中断 若单步中断标志TF为1 则在每条指令执行结束后产生一个类型号为1的内部中断 称为单步中断 7 其中类型号为3的内部中断 常用于程序调试 被称为断点中断 断点中断 INT3 8 溢出中断 有符号数加减运算 在执行溢出中断指令INTO时 若溢出标志OF为1 则产生一个类型号为4的内部中断 被称为溢出中断 9 8086 8088的中断分类 10 2中断向量和中断向量表 中断向量 中断服务子程序的入口地址 首地址 入口地址含有段地址CS和偏移地址IP 32位 每个中断向量的低字是偏移地址IP 高字是段地址CS 需占用4个字节8086微处理器从物理地址00000H开始 依次安排各个中断向量 类型号也从0开始256个中断占用1KB区域 就形成中断向量表 类型号为N的中断向量的物理地址 N 4 11 12 例 中断类型号为10的中断处理子程序存放在1234H 5678H开始的内存区域中 求中断向量地址及其每个单元中所存放的数值 10 4 40 28H求得中断向量物理地址是00028H 0002BH按8086存储原则 从00028H 0002BH的每个单元中分别存放78H 56H 34H 12H 13 可屏蔽中断的响应过程 CPU自动执行 读取中断类型码 将标志寄存器FR的值推入堆栈 IF 把标志寄存器的IF和TF清零 将断点地址保护到堆栈中 CS IP 寻找中断向量 转入中断处理程序 3硬件中断的响应和时序 14 8086的中断响应时序 15 中断响应用2个总线周期 第1个总线周期 通知外设 CPU准备响应中断 第2个总线周期 外设 8259A 发送中断类型码 16 保护现场 PUSH 开放中断 原因 中断处理的具体内容 恢复现场 POP 中断返回指令 IRET 4中断处理子程序 17 7中断控制器8259A 7 18259A的内部结构7 28259A的工作方式7 38259A的初始化命令字和操作命令字7 48259A使用举例 18 7 18259A的内部结构 19 1 数据总线缓冲器 D0 D7接数据总线低8位 AD0 AD7 接收命令字 8位 输出中断类型码 8位 查询字 8位 和相关寄存器的状态 8位 20 3 级联缓冲 比较器 CAS2 CAS0用于指出8个从片的地址 SP EN 可用于输入 输出 输入 SP 决定主 1 从片 0 输出 EN 控制总线驱动器8286 缓冲器 工作 21 4 中断请求寄存器IRR8位寄存器 可锁存由外部输入的中断请求信号IR7 IR05 中断服务寄存器ISR8位寄存器 用来记录正在处理中的中断请求 22 6 中断屏蔽寄存器IMR8位寄存器 用来存放对各级中断请求的屏蔽信息 7 优先权判别器PR多个中断同时产生 判断优先响应哪个出现多重中断 判断是否打断当前中断操作 23 8 控制部件 输出中断请求信号INT至CPUINTA 接收来自CPU的中断应答信号 应为2个负脉冲才有效 24 CPU中断响应之后8259的动作 1 第一个负脉冲 IRR锁存失效 ISR相应位置1 IRR相应位清0 2 第二个负脉冲 送出中断类型码 若是中断自动结束方式 AEOI 则ISR相应位清0 25 7 28259A的工作方式 1 设置优先级的方式 4 2 结束中断处理的方式 3 3 引入中断请求的方式 2 26 1 设置优先级的方式 1 全嵌套方式 默认方式 0级最高 只进行高级中断嵌套 最多实现8级中断嵌套 PR比较ISR与IRR中优先级高低决定是否中断嵌套 27 2 特殊全嵌套方式 级联系统 0级最高 但同级中断也会响应 嵌套 级联系统中的主片必须使用该方式 保证来自同一从片但不同优先级的中断请求能被响应 主8259A INT INTR 从8259A INT IR2 IR0 IR7 28 3 普通循环方式 优先级相同的系统 设备中断请求被响应并执行中断服务程序后 其优先级自动降为最低 原先低一级中断成为最高优先级 但该方式开始总是IR0优先级最高 29 普通循环方式举例 30 4 特殊循环方式 优先级相同的系统 与普通循环方式唯一不同是一开始的最低优先级由程序确定 最高也就确定 而非IR0 31 特殊循环方式举例 32 2 结束中断处理的方式 必要性 中断服务程序结束后 要使相应ISn清0 否则 低级或同级的中断再就不可能被响应 导致中断系统功能异常 区别 就是使ISn清零的方法不同 33 1 中断自动结束 AEOI 方式 适用于只有1片8259且中断不嵌套 ICW4中的AEOI位设置 CPU响应中断即自动清0相应的ISn 在INTA 的第二个负脉冲时完成 34 2 一般中断结束 EOI 方式 适用于全嵌套方式 即知道优先级的情况下 CPU发一般中断结束命令 OCW2中EOI为1 SL为0 使8259当前ISR中最高的非零IS位复位 35 3 特殊中断结束 E0I 方式 主要适用于循环方式 即不知道当前中断服务优先级的情况下 CPU发特殊中断结束命令 OCW2中EOI为1 SL为1 使8259当前ISR中由OCW2的L2 L1 L0位指出的IS位复位 36 3 引入中断请求的方式 1 边沿触发方式 上升沿有效 2 电平触发方式 高电平有效 注意 必须及时撤除中断请求 否则可能反复响应同一中断 37 9 1 38259A初始化命令字和操作命令字 初始化编程8259A开始工作前 必须进行初始化编程给8259A写入初始化命令字ICW 38 中断操作编程 在8259A工作期间可以写入操作命令字OCW将选定的操作传送给8259A 使之按新的要求工作还可以读取8259A的信息 以便了解他的工作状态 39 1 初始化命令字ICW 初始化命令字ICW最多有4个8259A在开始工作前必须写入必须按照ICW1 ICW4顺序写入ICW1和ICW2是必须送的ICW3和ICW4由工作方式决定 40 ICW1 芯片控制初始化命令字 表示可以任意为1为0都可以 建议为0 1 只能为1 作为标志 与OCW2和OCW3区分 中断触发方式 LTIM 1 电平触发方式LTIM 0 边沿触发方式 规定单片或级连方式 SNGL 1 单片方式SNGL 0 级连方式 是否写入ICW4IC4 1 要写入ICW4IC4 0 不写入ICW4 即ICW4规定的位全为0 偶地址 41 ICW2 中断类型码初始化命令字 设置中断类型号T7 T3为中断类型码的高5位低3位由8259A自动确定 IR0为000 IR1为001 IR7为111 奇地址 42 说明 IRi的中断类型码 ICW2的高5位 不管低三位是否相同 i 由IR0 IR7 例 如果ICW2设为19H 则IR3的中断类型码 4为中断向量地址 为 18H 取高五位 03H 1BH 43 ICW3 主 从片初始化命令字 主片8259A IRi 1对应IRi引脚接有从片 否则IRi引脚没有接从片从片8259A ID0 ID2编码说明从片INT引脚接到主片哪个IR引脚 奇地址 44 ICW4 方式控制初始化命令字 嵌套方式 特殊全嵌套方式 SFNM 1 普通全嵌套方式 SFNM 0 数据线的缓冲方式 缓冲方式 BUF 1 非缓冲方式 BUF 0 主片 从片选择 主片 M S 1 从片 M S 0 中断结束方式 自动中断结束 AEOI 1 非自动中断结束 AEOI 0 微处理器类型 16位8086 PM 1 8位8080 8085 PM 0 奇地址 45 BUF M S和SP EN 定义 46 2 初始化流程 1 2 3 4 47 对初始化流程的几点说明 ICW1写入偶端口 ICW2 ICW4写入奇端口 ICW1和ICW2必须设置 所有系统每个芯片 ICW3 只在级联系统 和ICW4 16位系统要设置特殊方式时 非必须 在级联时 主片和从片分别设置ICW3 48 对8259A设置初始化命令字的例子 MOVAL 13H 00010011B OUT80H AL 设置ICW1 单片8259 设置ICW4 MOVAL 18H 00011000B OUT81H AL 设置ICW2 中断类型码是18H 1FH MOVAL 0DH 00001101B OUT81H AL 设置ICW4 非特殊全嵌套 缓冲 非中断自动结束方式 16位系统 49 3 操作命令字OCW 8259A工作期间 可以随时接收操作命令字OCWOCW共有3个 OCW1 OCW3写入时没有顺序要求 需要用到哪个OCW就写入哪个 50 OCW1 中断屏蔽操作命令字 内容写入中断屏蔽寄存器IMRDi Mi对应IRi 为1禁止IRi中断 为0允许IRi中断 各位互相独立 奇地址 51 说明 1 通过奇端口写入 也可通过奇端口读取 2 用于普通中断屏蔽 特殊屏蔽方式要设置OCW3相应位才行 52 OCW2 优先级循环和中断结束方式操作命令字 R SL和EOI配合使用产生中断结束 EOI 命令和改变优先权顺序 L2 L0的3位编码指定IR引脚 偶地址 53 特征位 D4D3 00 结束方式管理 D6D5 X0 自动结束 硬件自动清除ISR的相应位 AEOI 1 D6D5 01 普通结束 不指定清ISR的哪一位 D6D5 11 特殊结束 指定清ISR的哪一位 优先权管理 D7 0 优先权固定 D7 1 优先权循环 标志位说明 54 中断结束 EOI 和优先权设置命令表 55 4各寄存器的区别方法 送到偶地址端口 OCW2和OCW3通过D3位区别 前者为0 后者为1 送到偶地址端口 ICW1和OCW2 OCW3的区别通过D4位 前者为1 后两者为0 送到奇地址端口 ICW2 3 4均按序在初始化时一次性写入 OCW1不能紧跟ICW1之后写入 因而不会混淆 56 7 48259A使用举例 利用8259A实现对外部中断的响应和处理 要求如下 将1Hz时钟信号接8259A的IR2端作为中断请求信号 CPU响应此中断后通过8255PA口输出使发光二极管按照每秒加1的方式进行亮灭 57 8259电路图 8259A D7 D0 D7 D0 WR RD IOW IOR Y2 G1 G2B G2A C B A 74LS138 CS A10 A9 A8 A7 A6 A5 A4 A3 A0 A1 INTR INTA IR0 IR7 IR2 1Hz INT INTA SP EN VCC 58 LED7 LED0 PA7 PA0 8255A D7 D0 D7 D0 WR RD IOW IOR Y4 CS A1 A0 A2 A1 RST RESET 5V 74LS138 8255电路图 59 程序清单 START xorax axmoves axcldmovdi 0028h 如何算出中断向量地址 movax offsetint 2stoswmovax segint 2stosw 设定IR2中断向量 存放中断服务程序入口地址 60 8259初始化 moval 13hmovdx 650houtdx al 设定ICW1moval 08hmovdx 652houtdx al 设定ICW2moval 01houtdx al 设定ICW4moval 0fbhoutdx al 设定OCW1 61 8255初始化及其他初始状态 moval 80hmovdx 666houtdx al 设定8255PA口输出moval 0ffhmovdx 660houtdx al 发光二极管全灭movbl 0 加法计数初值为0

温馨提示

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

评论

0/150

提交评论