第7章 中断 中断请求 中断响应 中断服务 中断结束 中断处理

Slides:



Advertisements
Similar presentations
微型计算机原理及其应用 ——第8章:中断系统与中断控制器8259A
Advertisements

第5章 中断系统 5.1 中断的概述  5.2 AT89C51中断系统 5.3 中断系统的应用.
第六章 中断技术.
2017年3月5日 单片机原理与应用 背景知识调查.
输入输出程序设计 输入输出的基本概念 无条件方式输入输出 查询方式输入输出 中断方式输入输出.
实验四 利用中规模芯片设计时序电路(二).
5.4 顺序脉冲发生器、 三态逻辑和微机总线接口 顺序脉冲发生器 顺序脉冲 计数型 分类 移位型.
第10章 DOS功能调用与BIOS中断调用.
第8章 中 断 8.1 概 述 为什么要用中断 中断的出现,会带来以下好处。 (1)同步操作 (2)实现实时处理 (3)故障处理.
第十二章 DMA控制器 12.1 概述 A DMA控制器 A的应用.
在PHP和MYSQL中实现完美的中文显示
第5章 输入输出与接口技术.
第五章 总线 及其形成 本节课之前,大家学习了:
输入/输出及接口 输入/输出的传送方式 中断技术 80x86/Pentium中断系统 8259A可编程中断控制器 中断程序设计
9.1 可编程并行输入/输出接口芯片8255A 9.2 可编程计数器/定时器 可编程串行输入/输出接口芯片8251A
第7章 中断与异常.
第7章 中断与异常.
第五章 中断和异常 Interrupt and Exception
第九章 计数器和定时器电路 第一节 概述 第二节 Intel 8253的控制字 第三节 Intel 8253的工作方式 第九章 计数器和定时器电路 第一节 概述 第二节 Intel 8253的控制字 第三节 Intel 8253的工作方式 第四节 Intel 8253在IBM PC机上的应用.
输入输出与中断 主要内容 CPU与外设之间数据传送方式 中断技术 8086中断系统和中断处理.
第六章 输入输出和中断技术 本章内容 基本概念 I/O端口的编址 中断 DMA* 输入输出的基本方法:无条件、查询、中断、DMA
微型机系统与接口技术复习.
第5章 输入输出与接口技术.
第八章 输入输出程序设计 总线 CPU MEM I/O接口 I/O设备.
微机原理及应用 主讲:郑海春.
8.1 CPU 的结构 8.3 指令流水 8.2 指令周期 8.4 中断系统.
第8章 中断技术 8.1 概述 8.2 中断处理过程 8.3 中断优先级和中断嵌套 8.4 可编程中断控制器Intel 8259A.
第一章 8086程序设计 第二章 MCS-51程序设计 第三章 微机基本系统的设计 第四章 存贮器与接口 第五章 并行接口
第8章 PCH中的常规接口.
微机原理与接口技术 微机原理与接口技术 朱华贵 2015年11月20日.
汇编语言程序设计课程设计 第二次实验 DEBUG基本命令与算术运算指令
硬件综合实验 (第一讲) 厦门大学软件学院 曾文华 2006年6月12日.
第一单元 初识C程序与C程序开发平台搭建 ---观其大略
1.3 微型计算机的结构和工作原理.
第 13 章 中断系统.
逆向工程-汇编语言
CPU结构和功能.
第5章 中断系统及其应用 ● 教学目标: 介绍中断、中断源、中断系统的概念 介绍MCS-51中断系统及中断控制
第6章作业 3、 需要128块芯片 片内译码地址线:10条 片选择地址线:至少4条
宁波市高校慕课联盟课程 与 进行交互 Linux 系统管理.
微机原理与接口技术 微机原理与接口技术 朱华贵 2015年11月19日.
中 断 王 静 阜阳师范学院 计算机与信息工程学院.
第10章 可编程外围接口芯片8255A及其应用 10.1 概述 A的工作原理 A的应用举例.
第四章 MCS-51定时器/计数器 一、定时器结构 1.定时器结构框图
数字电子技术 Digital Electronics Technology
可编程定时计数器.
(Random Access Memory)
微机原理与接口技术 微机原理与接口技术 朱华贵 2015年11月13日.
第三章 MCS 51的硬件结构.
单片机原理及应用 实践部分 主讲人:刘 强 四川工商学院单片机教学团队 单片机原理及应用 实践部分 主讲人:刘 强
微型计算机技术 教 学 指 导(五) 太原广播电视大学 郭建勇.
第八章 中断系统.
实验三 16位算术逻辑运算实验 不带进位控制的算术运算 置AR=1: 设置开关CN 1 不带进位 0 带进位运算;
第五章 输入/输出系统 本章讨论: 接口的基本概念 总线的基本概念 中断方式及其接口组成 中断方式及其接口组成 DMA方式及其接口组成
长春理工大学 电工电子实验教学中心 数字电路实验 数字电路实验室.
§6.7 子空间的直和 一、直和的定义 二、直和的判定 三、多个子空间的直和.
第十章 输入输出程序设计 10.1 输入输出指令 输入输出(I/O)是指CPU与输入设备和输出设备之间进行的信息传送。CPU与外部设备之间通过输入输出接口相连接。各个设备在输入输出接口中分配了相应的端口。访问不同的设备就是访问其对应的端口。在指令系统中提供了访问输入输出端口的指令。 一、I/O端口寻址方式.
5. 1 中 断 概 述 单片机接通电源后将循环执行我们编制好的程序(一般称为主程序),当有外部设备或内部部件要求CPU为其服务时,计算机将被迫“中断”主程序的执行,并记录下暂停处程序地址(断点地址),然后转去为外部设备服务,即执行中断服务程序;在中断程序执行完毕后自动返回被迫中断主程序的地址,继续执行原主程序。
College of Computer Science & Technology
微机原理与接口技术 ——8086微处理器 西安邮电大学 计算机学院 范琳.
第12章 中断 罗文坚 中国科大 计算机学院
定时中断与LED MCU起航 QQ:
单片机应用技术 (C语言版) 第6章 中断系统.
C++语言程序设计 C++语言程序设计 第一章 C++语言概述 第十一组 C++语言程序设计.
微机原理与接口技术 西安邮电大学计算机学院 杨锐.
上节复习(11.7) 1、定时/计数器的基本原理? 2、定时/计数器的结构组成? 3、定时/计数器的控制关系?
工业机器人入门使用教程 ESTUN机器人 主讲人:李老师
微型计算机系统.
DSP技术与应用 电子与信息技术系.
Presentation transcript:

第7章 中断 中断请求 中断响应 中断服务 中断结束 中断处理 第7章 中断 中断:指当CPU检测到某种服务请求后,暂时中止现行程序而转去执行一个特定的中断服务程序,当中断服务程序执行完毕后,返回到原来程序的中断处继续执行 中断处理的隐操作:程序状态及程序断点地址的进栈及出栈。 中断请求 中断响应 中断服务 中断结束 中断处理

7.1 概述 中断过程一般包括五个方面,即中断申请、中断排队、中断响应、中断服务和中断返回 中断系统其他功能: 支持多中断源和多种中断源。 7.1 概述 中断过程一般包括五个方面,即中断申请、中断排队、中断响应、中断服务和中断返回 中断系统其他功能: 支持多中断源和多种中断源。 支持中断屏蔽处理。 支持中断嵌套处理。 支持中断优先级修改。 支持中断结束方式选择。 中断源:能够发出中断请求信号的来源 中断源通常有如下几种: 1.一般的I/O设备,如键盘、打印机等。 2.实时时钟及过程多数,如时钟电路、A/D转换等。 3.故障源,包括硬件故障及软件故障,如电源掉电、存储器故障、运算溢出等。 4.软件设置中断源,如在程序中用中断指令而产生的中断。

7.2 最简单的中断情况 中断申请是由中断源发出的请求服务的信号 中断源能够产生中断申请信号有两个条件: 1.中断源自身工作已经“准备就绪” 7.2 最简单的中断情况 中断申请是由中断源发出的请求服务的信号 中断源能够产生中断申请信号有两个条件: 1.中断源自身工作已经“准备就绪” 2.CPU允许该中断源申请中断 中断响应条件: 1.外部设备有中断请求 2.CPU自身允许中断 3.没有更高级的中断正在被服务 4.CPU在每条指令结束后响应中断 在中断响应周期,硬件自动完成一些必要的操作: 1.关中断 2.保护断点:通过堆栈及相关硬件实现EFLAGS、CS、EIP的保护。并清除IF和TF。 3.将中断服务程序的入口地址送入程序计数器,从而实现转入相应的中断服务程序

设置中断请求的情况

具有中断屏蔽的接口电路

中断时序流程

7.3 中断优先权 在中断系统中,根据中断源的轻重缓急,为每一个中断源规定了一个服务优先级别,这就是所谓的中断优先级,或叫中断优先权 7.3 中断优先权 在中断系统中,根据中断源的轻重缓急,为每一个中断源规定了一个服务优先级别,这就是所谓的中断优先级,或叫中断优先权 中断识别 只有外部硬件中断需要进行识别,其余不需要识别。中断识别由中断控制器完成。 中断优先级 原则:按机器故障、DMA、外围硬件、软件递减。 结果:CPU专用>DMA>外围硬件>BIOS>DOS>自由。即基本按中断向量表排序。外围硬件一般可由用户修改其优先权。 中断优先权排队一般有两种方法,即软件查询法和硬件排队法 软件查询法:用软件查询中断源,根据查询的顺序先后来确定中断源的优先级。先查询的优先级就高,后查询的优先级就低,只要改变查询次序,就可以改变中断源的中断优先级 硬件排队法:用硬件判优逻辑电路来确定申请中断中的最高优先级,系统中各中断源的优先级别是由它们在判优电路中的位置决定的

优先权软件查询硬件电路

优先权软件查询程序流程

编码器和比较器的优先权排队电路

链式优先权排队电路

7.4 中断控制器8259A 8259A是中断管理芯片 8259A的主要功能为: 1.具有8级优先权控制,通过芯片级联可扩展至64级优先权控制 2.每一级中断均可通过编程屏蔽或允许 3.在中断响应周期可提供相应的中断类型号 4.有多种工作方式,可通过编程选择 5.可与CPU直接连接,不需外加硬件电路

8259A的引线及内部结构 中断请求寄存器IRR:寄存所有IR输入线输入的中断请求信号,即保存正在请求服务的中断级 中断服务寄存器ISR:保存当前被CPU服务的中断级,也就是记录正在被处理的中断请求 中断屏蔽寄存器IMR:对各中断源的中断请求信号(IRO~IR7)实现开关控制

8259A的中断请求 … & 内部逻辑:IRR、IMR、ISR及控制电路。 中断请求过程:IR->INT。 INT ISR编码 中断请求优先级编码器 中断请求寄存器IRR IR0 IR7 … 中断屏蔽寄存器IMR D0 D7 ≥1 比 较 器 B0 B1 B2 A>B A0 A1 A2

8259A的工作过程 (1)某一条或几条中断请求线(IRO~IR7)有中断申请,变为高电平,使中断请求寄存器IRR的相应位置“1” (2)IMR对IRR屏蔽。未被屏蔽的请求信号经优先权电路判别最高优先级,再经由优先级方式确定没有更高级优先权的中断,则8259A的INT端输出为“1”,向CPU提出中断请求 (3)CPU响应中断后发出中断响应信号。在中断响应过程中,CPU要发出两次INTA信号。当8259A收到第一个INTA信号后,ISR中当前被选中的最高优先级对应的那一位置“1”,同时IRR中的相应位被清“0”,表示该位上的中断请求已被CPU所接受 (4)8259A收到第二INTA信号后,驱动数据总线将对应的中断类型码输出 (5)如果是自动结束中断方式(AEOI),则在第二个INTA脉冲结束时将ISR中相应置“1”的位复位,否则该位的“1”将一直保持,直到CPU发出EOI命令为止

8259A与标准总线的连接(1)

8259A与标准总线的连接(2)

8259A的工作方式 四种主要的工作方式: 全嵌套 四种从属的工作方式: 中断结束方式 两大工作类型: 单片工作 循环优先级 特定屏蔽 程序查询方式 四种从属的工作方式: 中断结束方式 读状态 中断请求触发方式 缓冲器方式 两大工作类型: 单片工作 多片级连工作

8259A在初始化工作完成后若未设定其它的工作方式,就自动进入全嵌套方式 全嵌套方式特点:禁止同优先级或低优先级请求发生 1.中断请求的优先级固定,其顺序是IR0最高,逐次减小,IR7最低,(从IR0~IR7降序) 2.中断服务寄存器ISR保存优先权电路确定的优先级状态,相应位置“1”,并且一直保持这个服务“记录”状态,直到CPU发出中断结束命令为止 3.在ISR置位期间,不再响应同级及较低级的中断请求,而高级的中断请求如果CPU开放中断的话仍能够得到中断服务 4.IR7~IR0的中断请求输入可分别由中断屏蔽寄存IMR的D7~D0的相应位屏蔽与允许,对某一位的屏蔽与允许操作不影响其它位的中断请求操作 全嵌套工作方式由ICW4的D4=0来确定

两种:自动循环优先级方式、特殊循环优先级方式 自动循环:刚被服务的IR的优先级降至最低 8259A的工作方式——循环优先级方式 两种:自动循环优先级方式、特殊循环优先级方式 自动循环:刚被服务的IR的优先级降至最低 各设备优先级相同,当某一个设备受到服务之后,它的优先级就自动地排到最后。优先级由高到低的顺序: 有一个最低优先权指针,哪一个设备刚被服务后,它就被赋予最低优先权指针。 自动循环优先级方式由OCW2的R=1、SL=0来确定 特殊循环:指定的IR的优先级降至最低。 特殊循环优先级方式与自动循环优先级方式的不同之处在于:在自动循环优先级方式中,某一设备在被服务之后被确定为最低优先权;而在特殊循环优先级方式中,是通过编程来确定某一设备为最低优先级 特殊循环优先级方式由OCW2的R=1、SL=1来确定,而L2L1L0用于指定最低优先级的二进制编码

8259A的工作方式——特定屏蔽方式 每个中断请求输入信号都可由中断屏蔽寄存器IMR的相应位进行屏蔽,IMR的D0对应IR0,D1对应IR1,…,D7对应IR7 IMR相应位为“1”则屏蔽,为“0”则允许 IMR寄存器由操作命令OCW1进行设置 屏蔽方式有两种:正常屏蔽方式、特定屏蔽方式 正常屏蔽方式: IMR中相应位置位 每一个屏蔽位对应一个中断请求输入信号 屏蔽某一个中断请求输入信号对其他请求信号没有影响 未被屏蔽的中断请求输入信号按照设定的优先级顺序工作,同级和低级的中断请求被禁止,如果CPU允许中断,可实现中断嵌套 特定屏蔽方式:开放比自己优先级低的IR 设定特定屏蔽方式后,IMR中为“1”的位仍然屏蔽相应的中断请求输入信号,但所有未被屏蔽的位被全部开放,都可以申请中断 特定屏蔽方式由OCW3的ESMM和SMM确定,设定时ESMM=1、SMM=1,复位时ESMM=1、SMM=0

8259A的工作方式——程序查询方式 不使用中断,用软件寻找中断源 在这种方式下,8259A不向CPU发送INT信号,或者CPU禁止中断输入 申请中断的优先级不是由8259A提供的中断类型码而是由CPU发出查询命令得到的 查询过程: 1.CPU先向8259A发出查询命令 2.8259A接到查询命令后,就把下一个IN指令(对偶地址端口的读指令)产生的脉冲作为中断响应信号,此时,若有中断请求信号,则在ISR中相应位置“1”,并把该优先级送上数据总线 3.8259A供CPU读取查询的代码格式为: 4.I是中断请求标志 I=1有中断,W2W1W0有效,W2W1W0表示申请服务的最高中断优先级 I=O没有中断,W2W1W0无效 在查询方式下,CPU不需执行中断响应周期,不必安排中断向量表 查询方式由OCW3的P=1来确定

8259A的中断结束方式有两种:命令中断结束方式(EOI)和自动中断结束方式(AEOI) 中断结束方式是指中断如何结束的方法 这里的“结束”不是指中断服务程序的结束,中断服务程序的结束用IRET指令就可完成,这里的“结束”是指如何和何时使8259A中的ISR中的相应位清零。ISR中某位为“1”,表示CPU正在为之服务;某位为“0”表示CPU已经停止(结束)为之服务。而IRET指令主要是恢复程序的断点,它并不能使ISR的相应位清零 8259A的中断结束方式有两种:命令中断结束方式(EOI)和自动中断结束方式(AEOI)

自动中断结束方式(AEOI):中断响应后ISR中最高优先级位自动复位 在自动中断结束(AEOI)方式下,8259A自动地在最后一个中断响应脉冲的后沿将中断服务寄存器ISR中的相应位清零 过程:中断请求,CPU响应,发第一个,ISR相应位置“1”,CPU发第二个,8259A提供中断类型码,ISR相应位清零,结束。显然,ISR的相应置“1”位在CPU中断响应周期内自生自灭,因此在ISR中不会有两个或两个以上的置“1”位 应用场合:8259A单片系统,或不需要嵌套的多级中断系统。AEOI方式只能用于主片8259A,不能用于从片8259A 自动中断结束方式由ICW4的AEOI=1确定

命令中断结束方式(EOI):中断服务程序返回前,需要处理程序发出对ISR中相应位复位的中断结束命令 8259A的工作方式——中断结束方式(3) 命令中断结束方式(EOI):中断服务程序返回前,需要处理程序发出对ISR中相应位复位的中断结束命令 命令中断结束方式(EOI)是在中断服务程序返回之前,向8259A发中断结束命令(EOI),使ISR中的相应位清零。它包括两种情况 ①非特殊EOI命令:全嵌套方式下的中断结束命令称为非特殊EOI命令,该命令能自动地把当前ISR中的最高优先级的那一位清“0”( ISR中最高优先级位复位) ②特殊EOI命令:非全嵌套方式下的中断结束命令称为特殊EOI命令。在非全嵌套方式下,由于无法确定最后响应的是哪一级中断(非全嵌套方式各中断源没有固定的优先级别,因此也就不知道谁高谁低),所以应向8259A发出特殊EOI命令,即指定哪一级中断返回,使其ISR中的相应位清“0”(命令中指定的ISR中相应位复位)

读8259A的状态是指读8259A内部的IRR、ISR和IMR的内容 (1)读IRR:先发出OCW3命令(使RR=1、RIS=0,地址A0=0),在下一个RD脉冲时可读出IRR,其中包含尚未被响应的中断源情况 (2)读ISR:先发出OCW3命令(使RR=1、RIS=1,地址A0=0),在下一个RD脉冲时可读出ISR,其中包含正在服务的中断源情况,也可看中断嵌套情况 (3)读IMR:不必先发OCW3,只要读奇地址端口(A0=l),则可读出IMR,其中包含设置的中断屏蔽情况

8259A的工作方式——中断请求触发方式(1) 8259A的中断请求寄存器IRR中有8个中断请求触发器,分别对应8个中断请求信号的输入端IR0-IR7,这些触发器的触发方式有两种,即边沿触发和电平触发 (1)边沿触发:当输入端有从低电平到高电平的正跳变时,则产生中断请求(IRR中相应位的触发器被触发置“1”,而不是直接向CPU申请中断)。此后,即使输入端仍然保持高电平也不会再产生中断

8259A的工作方式——中断请求触发方式(2) (2)电平触发:当输入端产生高电平时产生中断请求。只要高电平就可以,不需要脉冲跳变。但需要注意的是,在电平触发方式下,在发出EOI命令以前,或CPU开放中断以前,必须去掉中断请求信号(使其变为低电平),否则将产生第二次中断

缓冲器方式:在8259A和数据总线之间挂接总线驱动器的方式 既然挂接了总线驱动器(即总线缓冲器),在进行数据操作时就必须使之开启,并符合数据传送方向。因此,在缓冲器方式下,引脚将使用功能,并使之输出一个有效低电平,开启缓冲器工作 该方式多用于级联的大系统 缓冲器方式由ICW4的BUF=1确定 关于SP/EN: 非缓冲方式:小系统中,8259A数据线直接连系统数据总线,不需要总线缓冲器,此时SP/EN表示级联时主/从关系。 主片:SP/EN接高电平 从片:SP/EN接低电平 缓冲方式:大系统中,数据总线都具有总线缓冲器,此时SP/EN表示数据传送方向,级联时主/从关系通过软件设定ICW4来决定。

8259A的工作方式——特殊的全嵌套方式 特点:禁止低优先级请求发生 该方式适用于多片级连,级联时主片特殊全嵌套,从片全嵌套。 该方式与普通的全嵌套方式工作情况基本相同,区别在于两点: (1)当某从片的一个中断请求被CPU响应后,该从片的中断仍未被禁止,即该从片中的高级中断仍可提出申请(全嵌套方式中这样的中断是被屏蔽的,因为这种中断对从片而言后者是高级中断,可以嵌套,但对主片而言,由于它们来自于同一个从片,故中断优先级相同,而在全嵌套方式中,同级和低级中断是被禁止的) (2)在某个中断源退出中断服务程序之前,CPU要用软件检查它是否是这个从片中的唯一中断。检查办法是:送一个非特殊中断结束命令(EOI)给这个从片,然后读它的ISR,检查是否为0,若为0则唯一,即只有这一个中断在被服务,没有嵌套。若不为0则不唯一,说明还有其他的中断在被服务,该中断是嵌套在其他中断里的。只有唯一时,才能把另一个非特殊EOI命令送至主片,结束此从片的中断

(2)缓冲方式下,主片和从片的设定由ICW4的M/S位确定,M/S=1是主片,M/S=0是从片。M/S的状态在BUF=l时有意义 8259A的工作方式——多片级连方式 级连系统中,每个从片的中断请求输出线INT直接连到主片的某个中断请求输入线上,主片的CAS0~CAS2是输出线,输出被响应的从片代码,从片的CAS0~CAS2是输入线,接收主片发出的从片代码,以便与自身代码相比较 级联方式的要点如下: (1)一个8259A主片至多带8个从片,可扩展至64级 (2)缓冲方式下,主片和从片的设定由ICW4的M/S位确定,M/S=1是主片,M/S=0是从片。M/S的状态在BUF=l时有意义 (3)在非缓冲方式下,主片和从片由SP/EN引脚的SP功能确定,SP=1是主片,SP=0是从片 (4)在级连系统中,主片的三条级连线相当于从片的片选信号,从片的INT是主片的中断请求输入信号 (5)主片和从片需要分别进行初始化操作,可设定为不同的工作方式

全嵌套方式、自动中断结束方式、中断请求触发方式、缓冲器方式、恃殊的全嵌套方式、级连方式等是由初始化命令字ICW来设定的 8259A的工作方式——设定命令字 上述的各种工作方式: 全嵌套方式、自动中断结束方式、中断请求触发方式、缓冲器方式、恃殊的全嵌套方式、级连方式等是由初始化命令字ICW来设定的 而循环优先级方式、特定屏蔽方式、查询方式、命令中断结束方式、读8259A状态等是由操作命令字OCW来设定的

8259A的初始化编程 (1) 初始化编程:指系统在上电或复位后对可编程器件进行控制字设定的一段程序

8259A的初始化编程 (2) 8259A内部有7个寄存器,分为两组:初始化命令寄存器组和操作命令寄存器组 初始化命令寄存器组包括4个寄存器:ICW1~ICW4对应的寄存器 操作命令寄存器组包括3个寄存器:OCW1~OCW3对应的寄存器。 由于8259A只有一条地址线A0,所以它只能有两个端口地址,而8259A有7个命令字,每个命令字要写入相应的寄存器。为此,采取以下几点措施: 第一,以端口地址区分 第二,把命令字中的某些位作为特征码来区分 第三,以命令字的写入顺序来区分 在PC/XT中,8259A的两个端口地址分别为20H和21H

PC/AT级联8259端口地址 PIC1 PIC2 操作 内容 特征位 时序 D4D3D2 20H 0A0H 写 ICW1 1** 无 OCW2 00* OCW3 01* 21H 0A1H ICW2~ICW4 ICW2→ICW4 OCW1 初始化后 读 IRR,ISR OCW3决定 查询字 IMR

8259A 初始化命令字 8259A初始化命令字有4个:ICW1、ICW2、ICW3、ICW4 8259A在进入正常工作之前,必须将系统中的每一个8259A进行初始化设置,以此建立8259A的基本工作条件 写入的初始化命令字一般为2~4个(在某些条件下,4个初始化命令字并非必须全部写入),最多为4个,然而,ICW1使用偶地址,而ICW2、ICW3、ICW4都使用奇地址,为了相互区别,初始化命令字的写入必须有一个固定的顺序 系统上电或复位以后,对8259A第一件要做的工作就是按顺序写入初始化命令字

8259A初始化命令字 —— ICW1 ICW1的主要功能:确定级连方式,触发方式 写入ICW1后,8259A内部自动复位,其复位功能为: (2)清除IMR和ISR (3)IRR状态可读 (4)优先级排队,IR0最高,IR7最低 (5)特殊屏蔽方式复位 (6)设定中断请求信号由低变高的边沿触发有效 (7)自动EOI循环方式复位

8259A初始化命令字 —— ICW2 ICW2的主要功能:确定中断向量,中断类型码 例:如果ICW2为08H,则 IR3的中断类型号(中断向量)为08H+03H=0BH

8259A初始化命令字 —— ICW3 ICW3的主要功能:确定主片从片的级连状态,即确定主片的连接位和从片的编码

8259A级联举例(1) 级联方式中断请求及响应过程: 主片请求:与非级联一致。 主片响应:收到第一个INTA后,对级联的IR请求,则从CAS线送出该IR编码;否则,在第二个INTA返回中断类型号。 从片请求:与非级联一致,但其INT送到主片,服从主片的请求规则。 从片响应:通过CAS线译码,选中时在收到第二个INTA后,返回中断类型号。

8259A级联举例(2) 从片可以连到主片的任何一个中断请求输入端

8259A初始化命令字 —— ICW4 ICW4的主要功能:选择CPU系统,确定中断结束方式,规定是主片还是从片,选择是否采用缓冲方式

写完ICW后,8259A建立了基本的工作环境 初始化命令字一定要在系统复位后首先写入8259A,写入时要严格按照写入顺序,不允许颠倒 写完初始化命令字后,8259A已经建立了基本的工作环境,可以接受中断请求,也可以写入操作命令字OCW来改变某些中断管理方式 操作命令字可以随时写入、修改,但初始化命令字一经写入一般不再改动 如果在写入初始化命令字后不写入操作命令字,则8259A便处于全嵌套工作方式,即中断优先级为IR0最高,IR7最低,禁止同级及低级中断,高级中断可嵌套处理

8259A 操作命令字 在初始化命令字写入8259A之后,8259A就准备接收中断请求输入信号了 在8259A工作期间,CPU可以随时通过操作命令字使8259A完成各种不同的工作方式 8259A有三种操作命令字:OCW1、OCW2和OCW3 在写入时,它们与初始化命令字不同,它们不是按一定的顺序写入,而是按设计者的要求写入

8259A 操作命令字 —— OCW1 OCW1的主要功能:保存中断屏蔽字

8259A 操作命令字 —— OCW2 OCW2的主要功能:控制8259A的中断循环优先级方式及发送命令中断结束方式 R:优先级循环控制位。R=0固定优先级, R=1循环优先级 SL:特殊循环控制,SL=1使L2-L0对应的IR为最低优先级, SL=0使L2-L0无效 EOI:中断结束命令, EOI=1中断结束命令有效 L2-L0:指明对应的IR位

8259A 操作命令字 —— OCW3 OCW3的主要功能:设定查询方式和特殊屏蔽方式

8259A编程注意事项 不同8259A的I/O端口地址不同 严格按初始化顺序 全嵌套方式时,初始IR优先级IR0最高 对于中断服务程序,要注意: 使用正确的中断号 中断服务程序入口的正确设置 中断程序执行时间的正确估计 中断的打开与关闭 中断结束处理及返回

8259A程序分析 INTM00 EQU 020H ;8259A端口0 INTM01 EQU 021H ;8259A端口1 …… MOV AL, 00010011B ;ICW1:边沿触发,要ICW4; ;单片方式,不要ICW3。 OUT INTM00, AL JMP SHORT $+2 ;I/O端口延时 MOV AL, 00001000B ;ICW2:设置中断向量,起始的 ;中断向量为08H。 OUT INTM01, AL JMP SHORT $+2 MOV AL, 00000001B ;ICW4:非缓冲,全嵌套,非自 ;动中断结束(EOI)。

8259A编程及中断程序设计(1) 例1 8259A单片应用 在某8088系统中扩展一片中断控制器8259A,其端口地址由74LS138译码器译码选择,假设为8CH和8DH。中断源的中断请求线连到IR7输入线上,边沿触发方式,IR7的中断类型码为77H,其它条件保持8259A的复位设置状态。要求: ① 写出8259A的初始化程序 ② 写出中断类型码为77H的中断向量设置程序 1.8259A的初始化程序 初始化程序包括写入ICW1、ICW2和ICW4(由于单片使用,不需写入ICW3),并且必须按规定的顺序写入。 (l)ICW1命令字。单片,边沿触发,需要ICW4,故为000100l1B=13H,写入偶地址。 (2)ICW2命令字。IR7的中断类型码为77H,即可作为ICW2命令字写入,写入奇地址。 (3)ICW4命令字。8088CPU,一般全嵌套方式,正常EOI结束,非缓冲方式,故命令字的组合为00000001B=01H,写入奇地址。 (4)OCW1命令字。系统只使用了IR7,为防止干扰,产生误动作,应将IR0~IR6屏蔽掉,屏蔽字为01111111B=7FH,写入奇地址。

8259A编程及中断程序设计(2) (5)初始化程序段为: CLI MOV AL, 13H ;ICW1 OUT 8CH,AL 0UT 8DH,AL MOV AL, 01H ;ICW4 OUT 8DH,AL MOV AL, 7FH ;OCW1 STI

8259A编程及中断程序设计(3) 2.中断类型码77H的中断向量设置程序 假设相应中断服务程序名为INTP,该符号地址包含段值属性和段内偏移量属性,将这二者分别存入中断向量地祉,中断类型码77H的中断向量地址为77H×4=1DCH,即占用1DCH~1DFH 4个单元;其中1DEH~1DFH存放INTP的段地址,1DCH~1DDH存放INTP的段内偏移量 我们用串指令完成中断向量的设置,程序如下: CLI MOV AX, 0 MOV ES, AX ;中断向量表段地址 MOV DI, 1DCH ;中断向量表偏移地址 MOV AX, OFFSET INTP ;中断服务程序偏移地址 CLD STOSW MOV AX, SEG INTP ;中断服务程序段地址 STI

8259A编程及中断程序设计(4) 例2 8259A级连应用 某系统有两片8259A: 对主片,IR2和IR5接有外部中断源请求,中断类型号分别为62H和65H,IR4级连,接从片8259A的INT信号,主片的中断服务程序在同一段,段地址为4000H,两个中断服务程序的入口地址偏移值是2500H和2800H 对从片,IR0和IR3上接有外部中断源请求,中断类型号分别为40H和43H,输出的INT接主片8259A的IR4,从片的中断服务程序在同一段,段地址为3000H,偏移地址分别为1230H和4560H 要求分别写出主8259A和从8259A的初始化程序和中断向量设置程序 1.对主片8259A的初始化和中断向量设置 (1)初始化要求(已有条件) ① 主片8259A的IR4接一个从片,S4=1 ② 中断请求信号边沿触发,LTIM=0 ③ 中断类型号为60H~67H,ICW2=60H ④ 一般EOI中断结束方式,AEOI=0 ⑤ 非缓冲方式,SP/EN=1,BUF=0 ⑥ 采用特殊全嵌套方式,SFNM=1。 ⑦ 除IR2、IR4、IR5以外,屏蔽所有中断,屏蔽字为11001011B

8259A编程及中断程序设计(5) (2)初始化程序: MOV AL, 11H ;IOW1 MOV DX, MPORT0 ;偶地址 0UT DX, AL MOV AL, 60H ;ICW2 MOV DX, MPORT1 ;奇地址 MOV AL, 10H ;ICW3 MOV AL, 11H ;ICW4 OUT DX, AL MOV AL, 0CBH ;OCW1 MOV AL, 20H ;OCW2

8259A编程及中断程序设计(6) (3)中断向量设置 采用绝对地址设置方法,程序如下: SEGMENT AT 0 0RG 62H×4 MINTR2 DW 2500H ;IR2中断服务地址 DW 4000H ORG 65H×4 MINTR5 DW 280OH ;IR5中断服务地址

8259A编程及中断程序设计(7) 2.对从片8259A的初始化和中断向量设置 (1)初始化要求(已有条件) ① 从片8259A接在主片IR4上,ICW3=04H。 ② 中断请求信号边沿触发,LTIM=0。 ③ 中断类型号为40H-47H,ICW2=40H。 ④ 正常EOI中断结束方式,AEOI=0。 ⑤ 非缓冲方式,SP/EN=0,BUF=0。 ⑥ 采用特殊全嵌套方式,SFNM=1。 ⑦ 除IR0和IR3以外,屏蔽所有的中断输入,屏蔽字为llll0ll0B=F6H。

8259A编程及中断程序设计(8) (2)初始化程序: MOV AL, 11H ;ICW1 MOV DX, SPORT0 ;偶地址 0UT DX, AL MOV AL, 40H ;ICW2 MOV DX, SPORT1 ;奇地址 MOV AL, 04H ;ICW3 MOV AL, 11H ;ICW4 MOV AL, 0F6H ;0CW1 MOV AL, 20H ;0CW2(EOI) MOV DX, SPORT0 ;偶地址 OUT DX, AL

8259A编程及中断程序设计(9) (3)中断向量设置 采用绝对地址设置方法,程序如下: SEGMENT AT 0 0RG 40H×4 SINTR0 DW 1230H ;IR0中断服务入口地址 DW 3000H ORG 43H×4 SINTR3 DW 456OH ;IR3中断服务入口地址

PC/XT机8259A的连接 Y0 Y7 A B C G2B G2A G1 15 14 13 12 11 10 9 7 1 2 3 4 5 6 74LS138 A5 A6 A7 A8 A9 AEN’ AEN’=AEN∩IO/M。 8259A CS DB[7..0] IR[7..0] INTA A0 INT INTR RD WR IOW IOR 接8288 接CPU 接中断源 接数据线 接地址线

PC/AT机8259A的级联

PC/AT机主片8259A初始化 INTM00 EQU 020H ;主8259A端口0 INTM01 EQU 021H ;主8259A端口1 …… MOV AL, 00010001B ;ICW1:边沿触发, ;要ICW4;级联方式,要ICW3。 OUT INTM00, AL JMP SHORT $+2 ;I/O端口延时 MOV AL, 00001000B ;ICW2:设置主片的中断向量, ;起始的中断向量为08H OUT INTM01, AL JMP SHORT $+2 MOV AL, 00000100B ;ICW3:表示从8259A的INT输出 ;是连接到主片的IR2。 MOV AL, 00000001B ;ICW4:非总线缓冲,全嵌套, ;非自动中断结束(EOI)

PC/AT机从片8259A初始化 INTS00 EQU 0A0H ;从8259A端口0 INTS01 EQU 0A1H ;从8259A端口1 …… MOV AL, 00010001B ;ICW1边沿触发, ;要ICW4;级联方式,要ICW3。 OUT INTS00, AL JMP SHORT $+2 MOV AL, 01110000B ;ICW2:设置从片的中断向量, ;起始的中断向量为70H OUT INTS01, AL MOV AL, 00000010B ;ICW3:设置从片的识别标志, ;指定对应主片的IR2。 MOV AL, 00000001B ;ICW4:非总线缓冲,全嵌套, ;非自动中断结束。

PC/AT机中断请求线的连接 8259 8259输入 典型的中断源 被连接的引脚/功能 主片 内部 内部时钟/计数器0的输出 1 键盘 内部 内部时钟/计数器0的输出 1 键盘 通过SERIRQ来的IRQ1 2 从控制器的级联引脚 3 串行端口2 通过SERIRQ来的IRQ3 4 串行端口1 通过SERIRQ来的IRQ4 5 并行端口/普通 通过SERIRQ来的IRQ5 6 软磁盘 通过SERIRQ来的IRQ6 7 通过SERIRQ来的IRQ7 8259 8259输入 典型的中断源 被连接的引脚/功能 从片 内部实时时钟 内部RTC 1 普通 通过SERIRQ来的IRQ9 2 通过SERIRQ来的IRQ10 3 通过SERIRQ来的IRQ11 4 PS/2鼠标 通过SERIRQ来的IRQ12 5 内部 基于处理器FERR#的状态机输出 6 基本IDE电缆 从输入信号来或通过SERIRQ来的IRQ14 7 第二IDE电缆 从输入信号来或通过SERIRQ来的IRQ15

中断编程结构 …… OLD0C DD ? ; 中断处理子程序 CODE SEGMENT SERVICE PROC PUSHA ; 保护现场 MOV AX, 350CH ; 保存原来的0CH中断向量 INT 21H MOV WORD PTR OLD0C,BX MOV WORD PTR OLD0C+2,ES MOV AX, CODE ; 写入新的0CH中断向量 MOV DS,AX MOV DX,OFFSET SERVICE MOV AX,250CH …… ; 其它程序段 ; 中断处理子程序 SERVICE PROC PUSHA ; 保护现场 PUSH DS STI ; 打开中断 …… ; 串口数据处理程序 CLI ; 关闭中断 POP DS POPA ; 恢复现场 IRET SERVICE ENDP

7.5 8088的中断方式 8088可以处理256种不同类型的中断,类型号为0~255 8088的中断分为内部中断和外部中断两大类 7.5 8088的中断方式 8088可以处理256种不同类型的中断,类型号为0~255 8088的中断分为内部中断和外部中断两大类 外部中断:由CPU外部引起的中断,需要外设产生一个信号来通知CPU,包括非屏蔽中断NMI和可屏蔽中断INTR 1. 可屏蔽中断 中断请求:多个中断请求的排队和判优由中断控制器完成,产生的有无中断请求的信号送到CPU的INTR引脚。 中断类型号:通过数据总线送到CPU中。 EFLAGS寄存器的IF位影响CPU对中断请求的响应。 属性:硬件、可屏蔽、向量。 2.非屏蔽中断 中断请求:中断请求的信号送到CPU的NMI引脚。 中断类型号:固定为2。 CPU不需要进行中断识别,直接处理中断。 属性:硬件、不可屏蔽、向量。 NMI由0跳变到1以后要维持至少4个连续的处理器时钟周期的高电平才被识别。 NMI由1跳变到0以后要维持至少4个连续的处理器时钟周期的低电平,新的NMI中断才能被识别。

内部中断 内部中断:由CPU状态的改变或执行中断指令而产生的中断,它不受IF的控制,主要用于功能调用、程序调试和意外情况处理 属性:软件、不可屏蔽、向量。 中断请求:指令执行中或程序调用产生。 中断类型号:CPU规定或指令给出。

内部中断形式 内部中断包括四类:除法错中断、单步中断、溢出中断、软件中断 CPU专用中断:溢出(O)、单步(1)、断点中断(3)。 BIOS中断:I/O设备控制、实用服务、特殊中断、专用参数中断。 DOS中断:公开/未公开、可调用、系统功能。 自由中断:未定义(20H~3FH中未使用的中断)。 CPU不需要进行中断识别,直接处理中断。 失效:错误在指令完成前,错误指令的CS:EIP压栈。该指令会重做。 陷阱:错误在指令完成后,错误指令下一指令的CS:EIP压栈。 中止:不保存,重启机器。

内部中断与外部中断的主要区别 内部中断与外部中断的主要区别: 1.外部中断需要从数据总线上读取中断类型码,而内部中断的中断类型码是指令的一部分 2.外部中断受中断允许触发器IF的控制,而内部中断不受IF的控制 3.内部中断的优先级别比外部中断要高(除单步中断以外) 中断源的优先级别由高到低顺序:内部中断、NMI、INTR、单步中断

PC机中断向量表 中断向量:对应中断类型号的中断服务程序入口地址。每个中断向量占4字节。 中断向量表:中断服务程序的入口地址表,位于内存地址0000 : 0000开始的1KB范围内。按中断类型号顺序存放中断向量。 每个中断服务程序的入口地址都有2个字节的段地址和2个字节的段内偏移量共4个字节组成,共有256个中断源,所以中断向量表共占用256×4=1024字节空间,并且从存储器地址的最低端开始存放(即地址00000H~003FFH) 中断向量指针:指向存放中断服务入口地址第一字节的指针。中断向量指针=中断类型号*4。软件中断中自由中断的中断向量需用户自己装入。

中断向量表结构

8088中断处理

8088中断响应和处理流程

第7章 结束 请同学们按教材后的习题 及时复习 吉林大学远程教育学院