微机原理与接口技术_第7章_§1-3_xly.ppt_第1页
微机原理与接口技术_第7章_§1-3_xly.ppt_第2页
微机原理与接口技术_第7章_§1-3_xly.ppt_第3页
微机原理与接口技术_第7章_§1-3_xly.ppt_第4页
微机原理与接口技术_第7章_§1-3_xly.ppt_第5页
已阅读5页,还剩43页未读 继续免费阅读

下载本文档

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

文档简介

1 微型计算机原理与接口技术 杭州电子科技大学自动化学院 第七章微型计算机中断系统1 2 第七章微型计算机中断系统1 概述中断处理过程中断优先级和中断嵌套可编程中断控制器8259A 内容提要 3 CPU正常运行程序时 微处理器内部事件或外设请求 引起CPU中断正在运行的程序 转去执行请求中断的外设 或内部事件 的服务子程序 执行完毕 再返回被中止的程序 这一过程称为中断 1 中断源引起中断的事件 包括外部中断和内部中断 一 中断概念 2 中断响应CPU在每条指令的最后一个T周期检测INTR引脚 一旦检测到有中断请求 在满足中断响应的条件下 IF 1 响应中断 向外设发出INTA中断响应信号 并保护断点 当前CS IP和PSW入栈 转向中断服务程序 执行完毕 CPU返回中断处 继续向下执行 称为中断返回 7 1概述 中断概念 7 1概述 4 3 中断向量表CPU响应中断后 必须由中断源提供地址信息 引导程序进入中断服务子程序 这些中断服务程序的入口地址存放在中断向量表中 内存中专门开辟一个区域 存放中断向量表 也称中断矢量表 4 中断优先级当有多个中断源请求中断时 中断系统判别中断申请的优先级 CPU响应优先级高的中断 挂起优先级低的中断 当CPU在运行中断服务子程序时 又有新的更高优先级的中断申请进入 CPU要挂起原中断进入更高级别的中断服务子程序 实现中断嵌套功能 7 1概述 中断概念 5 5 中断屏蔽当中断源申请中断时 CPU可以由软件设置 使之不能响应 称为中断屏蔽 对于各种计算机系统 中断系统的构成差别很大 但都具有基本功能 能实现中断响应 中断服务 中断返回 中断屏蔽 能实现中断优先级排队 能实现中断嵌套 7 1概述 中断概念 6 二 中断分类 8086 8088可以处理256种不同的中断 按产生中断的方法来分类 256种中断可以分为两大类 外部中断内部中断外部中断也称硬件中断 由外部的硬件产生 硬件中断又分成不可屏蔽中断和可屏蔽中断 如图7 1所示 7 1概述 中断分类 7 7 1概述 中断分类 8 外部中断 不可屏蔽中断请求由CPU的引脚NMI引入 采用边沿触发 上升沿之后维持两个时钟周期高电平有效 不能用软件屏蔽 一旦有不可屏蔽中断请求 如电源掉电等紧急情况 CPU必须予以响应 不可屏蔽中断请求的中断类型号为2 中断处理程序的入口地址在0段的0008H 000BH的4个单元中 可屏蔽中断请求由CPU的引脚INTR引入 采用电平触发 高电平有效 INTR信号的高电平必须维持到CPU响应中断才结束 可用软件设置来屏蔽 即使外部设备有可屏蔽中断请求 CPU可以不予响应 由外部设备引起的可屏蔽中断请求要得到响应有两个条件 一个是外设中断请求未被屏蔽 一个是CPU允许响应中断 7 1概述 中断分类 9 7 1概述 中断分类 2 内部中断内部中断又称为软件中断 由中断指令INT引起的中断CPU执行一条INTn指令后会立即产生中断 并且调用系统中相应的中断处理程序去完成中断功能 指令中n指出了中断类型号 由CPU的某些运算错误引起的中断除法错中断 类型0中断 在除法运算中 若除数为0或商超过寄存器所能表达的范围 则产生类型0中断 转入类型0中断处理 溢出中断 类型4中断 专用指令为INTO 在运算中 若溢出标志位OF置1 下面紧跟溢出中断指令INTO 则产生类型4中断 若OF为0 INTO指令不起作用 因此在加 减法运算指令后应安排一条INTO指令 否则运算产生溢出后无法向CPU发出溢出中断请求 10 单步中断 类型1中断 标志位TF 1时 每条指令执行后 CPU自动产生类型1中断 产生单步中断时 CPU同样自动地将PSW CS和IP内容入栈 然后清除TF IF 进入单步中断处理程序 单步处理程序结束时 原来的PSW从堆栈中取出 CPU重新置成单步方式 断点中断 类型3中断 当CPU执行到断点时产生中断 同时显示当前各寄存器和有关存储器的内容及下条要执行的指令 供用户检查 设置断点即把一条断点指令INT3插入到断点设置处 CPU执行到INT3指令便产生中断 7 1概述 中断分类 11 一 CPU响应中断过程 1 CPU响应可屏蔽中断的三个条件 外设的中断请求的是随机的 而CPU在每条指令的最后一个总线周期的最后一个T状态去采样中断请求输入线INTR 当CPU在INTR引脚上接收到一个有效的中断请求信号 而CPU内部中断允许触发器是开放的 中断接口电路中的中断屏蔽触发器未被屏蔽 则在当前指令执行完后CPU响应中断 外设提出中断申请本中断位未被屏蔽中断允许 可屏蔽中断处理的过程一般分成以下几步 中断请求 中断响应 保护现场 转入执行中断服务子程序 恢复现场和中断返回 见图7 2 7 2中断处理过程 CPU响应中断过程 7 2中断处理过程 12 7 2中断处理过程 CPU响应中断过程 13 2 CPU响应可屏蔽中断的过程 从数据总线上读取中断类型号 将其存入内部暂存器 将标志寄存器PSW的值入栈 将PSW中的中断允许标志IF和单步标志TF清0 以屏蔽外部其它中断请求 避免CPU以单步方式执行中断处理子程字 保护断点 将当前指令下面一条指令的段地址CS和指令指针IP的值入栈 中断处理完毕后 能正确返回到主程序继续执行 根据中断类型号到中断向量表中找到中断向量 转入相应中断服务子程序 中断处理程序结束以后 从堆栈中依次弹出IP CS和PSW 然后返回主程序断点处 继续执行原来的程序 7 2中断处理过程 CPU响应中断过程 14 3 CPU须执行完下一条指令才响应可屏蔽中断的情况 发出中断请求时 CPU正在执行封锁指令 执行向段寄存器传送数据的指令 MOV和POP指令 遇STI和IRET指令 注意 当遇到等待指令或串操作指令时 允许在指令执行过程中进入中断 但在一个基本操作完成后响应中断 4 不可屏蔽中断的响应 不必判断IF是否为1 也不是由外设接口给出中断类型号 从NMI引脚进入的中断请求规定为类型2 在运行中断子程序过程中 若NMI上有不可屏蔽中断请求进入 CPU仍能响应 7 2中断处理过程 CPU响应中断过程 15 5 软件中断的响应 软件中断由程序设定 没有随机性 它不受中断允许标志位IF的影响 中断类型号由指令INTn中的n决定 正在执行软件中断时 如果有不可屏蔽中断请求 就会在当前指令执行完后立即予以响应 如果有可屏蔽中断请求 并且IF 1 也会在当前指令执行完后予以响应 7 2中断处理过程 CPU响应中断过程 16 二 中断向量表 中断向量表又称中断服务程序入口地址表 8086 8088系统允许处理256种类型的中断 对应类型号为0 FFH 在存储器的00000H 003FFH 占1K字节空间 用作存放中断向量 每个类型号占4个字节 高2个字节存放中断入口地址的段地址 低2个字节存放段内偏移地址 各个中断处理程序的段地址和段内偏移地址按中断类型号顺序存放在中断向量表中 因此由中断类型号n 4即可得到相应中断向量的地址 取4n和4n十1单元中的内容 中断入口段内偏移地址 装入指令指针寄存器IP 取4n十2和4n十3单元中内容 中断入口段地址 装入代码段寄存器CS 即可转入中断处理程序 1 中断向量表 7 2中断处理过程 中断向量表 17 7 2中断处理过程 中断向量表 18 2 中断向量 中断入口地址 的设置 有两种方法可为中断类型号n设置中断向量 即将中断服务程序的入口地址置入中断类型号n所对应的中断向量表中 一种方法用指令来设置 另一种方法利用DOS功能调用来设置 用指令来设置中断服务程序的入口地址表 利用DOS功能调用来设置中断服务程序的入口地表 7 2中断处理过程 中断向量表 19 方法一 MOVAX 0 主程序中设置MOVES AXMOVDI N 4 中断类型号 4MOVAX OFFSETINTRAD 送中断子程序的偏移地址至AXCLDSTOSW 偏移地址送到 4n 4n 1 单元MOVAX SEGINTRADSTOSW 段地址送到 4n 2 4n 3 单元STI 开中断 INTRAD 中断服务子程序IRET 用指令来设置中断服务程序的入口地址表 7 2中断处理过程 中断向量表 20 方法二 MOVAX 0 主程序中设置MOVES AXMOVBX N 4 中断类型号 4MOVAX OFFSETINTRAD 置偏移地址MOVES WORDPTR BX AXMOVAX SEGINTRAD 置段地址送MOVES WORDPTR BX 2 AXSTI 开中断 INTRAD 中断服务子程序IRET 用指令来设置中断服务程序的入口地址表 7 2中断处理过程 中断向量表 21 设置中断向量 把由AL中指定中断类型号的中断向量DS DX 放置在中断向量表中 预置 AL 中断类型号DS DX 中断服务程序入口地址AH 25H执行 INT21H 利用DOS功能调用来设置中断服务程序的入口地址表 取中断向量 把由AL中指定中断类型号的中断向量 预置 AL 中断类型号AH 35H执行 INT21H返回 ES BX 中断服务程序入口地址 7 2中断处理过程 中断向量表 22 MOVAL N 取中断向量到ES BXMOVAH 35HINT21HPUSHES 存原中断向量PUSHBXPUSHDSMOVAX SEGINTRAD 设置中断向量段地址在DSMOVDS AXMOVDX OFFSETINTRAD 设置中断向量偏移地址在DXMOVAL N 中断类型号n在ALMOVAH 25H 设置中断向量INT21H 利用DOS功能调用来设置中断服务程序的入口地址表 7 2中断处理过程 中断向量表 23 POPDS 中断在此段程序内产生并响应POPDX 恢复原中断向量POPDSMOVAL NMOVAH 25HINT21HRETINTRAD IRET 利用DOS功能调用来设置中断服务程序的入口地址表 7 2中断处理过程 中断向量表 24 中断类型号的获取 对于除法出错 单步中断 不可屏蔽中断NMI 断点中断和溢出中断 CPU分别自动提供中断类型号0 4 对于用户自己确定的软件中断INTn 类型号由n决定 对外部可屏蔽中断INTR 可以用可编程中断控制器8259A获得中断类型号 对外部可屏蔽中断INTR 可用硬件电路 例如通用并行接口芯片8212 设计产生中断类型号 7 2中断处理过程 中断向量表 25 三 中断程序的编写方法 主程序初始化 设置中断向量 设置8259A的中断屏蔽寄存器的中断屏蔽位 设置CPU中断允许位标志IF 开中断STI 7 2中断处理过程 中断向量表 硬件 外设接口 和CPU自动完成 外设接口向CPU的INTR端发出中断请求 当前指令执行完后 CPU发两个中断响应信号INTA给外设接口 CPU取中断类型号n CPU自动将当前PSW CS IP内容入栈保护 清除IF TF 禁止外部中断和单步中断 从中断向量表中取中断程序入口地址 IP CS 转向中断服务子程序 26 中断服务子程序 中断服务子程序的功能各有不同 但所有的中断服务子程序都有相同的结构形式 程序开始必须保护中断现场 可以通过一系列PUSH指令将CPU各寄存器的值入栈保护 允许中断嵌套时 用STI指令设置开中断 使中断允许标志IF为1 执行中断处理程序 用CLI指令设置关中断 使中断允许标志IF 0 禁止其他中断请求进入 给中断命令寄存器送中断结束命令EOI 使当前正在处理的中断请求标志位被清除 否则同级中断或低级中断的请求仍会被屏蔽掉 7 2中断处理过程 中断服务子程序 27 恢复中断时的现场 通过一系列POP指令将CPU各寄存器的值恢复 用中断返回指令IRET返回主程序 此时堆栈中保存的断点和标志值分别装入IP CS和PSW 7 2中断处理过程 中断服务子程序 说明 中断服务程序中开中断 是为了允许中断嵌套而设置的 恢复寄存器内容时 为了防止有中断进入破坏其内容 先执行了关中断 然后在中断返回时 原来的PSW返回 使IF 1 又再开中断 这样返回主程序时中断请求能得到允许 中断结束命令EOI一般在中断处理结束前发出 使一次中断处理的过程是完整的 28 7 2中断处理过程 中断服务子程序 例7 9编写中断处理程序 要求主程序运行时 每10秒响铃一次 同时屏幕上显示信息 Thebellisring 分析 利用系统定时器 每1 18 2秒中断一次 调用一次INT1CH INT1CH的处理程序只有一条IRET指令 编写一段程序替代INT1CH 实现相应功能 注意 保存原中断向量 设置新中断向量 恢复原中断向量 29 7 2中断处理过程 中断服务子程序 DATASEGMENT 定义数据段COUNTDW1MESSDB Thebellisring 0AH 0DH DATAENDSSTACKSEGMENT 定义堆栈段STTDB100DUP TOPLABLEWORDSTACKENDSCODESEGMENT 定义代码段MAINPROCFARASSUMECS CODE DS DATA ES DATA SS STACK 30 7 2中断处理过程 中断服务子程序 START MOVAX STACK 堆栈段初始化MOVSS AXMOVSP OFFSETTOPPUSHDS 程序段前缀SUBAX AXPUSHAXMOVAX DATA 数据段初始化MOVDS AX 主程序初始化 设置中断向量MOVAL 1CH 取原中断向量 ES BXMOVAH 35HINT21HPUSHES 存储原中断向量PUSHBXPUSHDS 31 7 2中断处理过程 中断服务子程序 MOVDX OFFSETRING RING的偏移地址MOVAX SEGRING RING的段地址MOVDS AXMOVAL 1CH 设置新中断向量MOVAH 25HINT21HPOPDS INAL 21H 设置中断屏蔽位 8259A ANDAL 0FEHOUT21H ALSTI 设置中断允许标志 32 7 2中断处理过程 中断服务子程序 程序主体MOVDI 2000 延时DELAY MOVSI 3000DELAY1 DECSIJNZDELAY1DECDIJNZDELAYPOPDX 取原中断向量 DS DXPOPDSMOVAL 1CH 恢复原中断向量MOVAH 25HINT21HRETMAINENDP 33 7 2中断处理过程 中断服务子程序 中断服务程序RINGPROCNEARPUSHDS 保护现场PUSHAXPUSHCXPUSHDXMOVAX DATA 设置串显示首地址MOVDS AXSTI 开中断 允许嵌套 DECCOUNT 中断服务程序主体JNZEXIT 10s计数 不到零 退出 到零 执行中断服务程序 34 MOVDX OFFSETMESS 显示信息 参见P161 MOVAH 09HINT21HMOVDX 100 设定总延时常数INAL 61H 响铃 参见P113 ANDAL 0FCH 清零61H端口的D1和D0位SOUND XORAL 02H D1位 0 1 0 1 OUT61H ALMOVCX 140H 设定 响 不响 的延时常数WAIT LOOPWAITDECDXJNZSOUNDMOVCOUNT 182 设定10s的值 7 2中断处理过程 中断服务子程序 35 EXIT CLI 恢复现场前关中断 防止新中断进入破坏原被保护现场的内容 送中断结束命令EOIPOPDX 恢复中断现场POPCXPOPAXPOPDSIRET 中断返回RINGENDPCODEENDSENDSTART 7 2中断处理过程 中断服务子程序 36 四 中断响应时序 CPU对可屏蔽中断请求的响应过程要执行两个连续的中断响应INTA总线周期 每个总线周期包括4个时钟周期Tl T4 第一个中断响应总线周期 CPU通知外设准备响应中断 外设应该准备好中断类型号 第二个中断响应总线周期 CPU接收外设接口发来的中断类型号 如下图所示 7 2中断处理过程 中断响应时序 37 7 2中断处理过程 中断响应时序 38 CPU将地址 数据总线浮空 在T2 T4期间发中断响应信号INTA给8259A 表示CPU响应此中断请求 禁止其它总线控制器的总线请求 在最大模式时 CPU启动LOCK信号 通知系统中总线仲裁器8289 使系统中其它处理器不能访问总线 1 第一个INTA周期 7 2中断处理过程 中断响应时序 2 第二个INTA周期 CPU向8259A发出第二个INTA信号 8259A响应第二个INTA 在T2和T3周期将一个字节的中断类型号N送到数据总线低8位 CPU读取中断类型号N 乘以4 查中断向量表得中断服务程序入口地址 CPU保护PSW 清标志位IF和TF 将断点返回地址CS和IP入栈 转向中断服务程序入口 注意 8086执行中断响应时 在两个中断响应周期之间要插入2 3个空闲状态 8088系统并没有在两个中断响应总线周期中插入空闲状态 39 8086要求中断请求信号INTR必须维持2个时钟周期的高电平 否则CPU执行完一条指令后 如果总线接口部件正在执行总线周期 则会使中断请求得不到响应而执行其他的总线周期 8086工作在最大模式时 S2S1S0组合为000 通过总线控制器8288发出INTA中断响应信号 8086不允许在两个INTA周期之间响应总线保持请求 但如果同时出现中断请求和总线保持请求 则CPU先对总线保持请求服务 外设的中断类型号一般通过16位数据总线的低8位传送给8086 所以提供中断向量的外设接口应该接在数据总线的低8位上 在两个INTA周期中 地址 数据 状态总线浮空 但M IO为低电平 而ALE在每个总线周期的T1状态输出一个高电平脉冲 作为地址锁存信号 软件中断和不可屏蔽中断不按照这种时序来响应中断 3 说明 7 2中断处理过程 中断响应时序 40 概述多个中断源同时向CPU请求中断时 CPU先响应优先级高的中断请求 当CPU正在处理中断时 有更高优先级别的中断请求进入 并且IF 1 CPU先响应更高级别的中断请求 而屏蔽低级的中断请求 形成中断嵌套 或称为多重中断 多个中断源的中断流程如图7 7所示 与单级中断流程图7 2相比 流程图中增加了 屏蔽本级与较低级中断请求 中断服务前要开中断 以允许中断嵌套 恢复现场前要关中断 使恢复现场不受干扰 中断返回时自动开中断 以允许其它中断能被CPU响应 7 3中断优先级和中断嵌套 概述 7 3中断优先级和中断嵌套 41 7 3中断优先级和中断嵌套 概述 42 一 中断优先级 1 软件查询中断优先级 软件查询中断方式 是将各个外设的中断请求信号通过或门相 或 后 送到CPU的INTR端 同时把几个外设的中断请求状态位组成一个端口 赋以端口号 任一外设有中断请求 CPU响应中断后进入

温馨提示

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

评论

0/150

提交评论