第七章 中断系统_续
合集下载
第七章 中断系统

的中断请求从INT输出,CPU的INTR引脚。 若CPU处于开中断状态,在当前指令结束后,连续发2 个中断响应信号,8259A收到第一个中断响应信号,ISR 相应位置1,将IRR的相应位复位。
8259A在收到第二个中断响应信号后,把中断类型号
送到数据总线。 中断响应后,如8259A工作在自动结束中断方式,8259A 会在第二个中断响应结束后,把ISR相应位成0;如工作在普 通EOI方式,则必须由CPU发EOI命令。
CPU响应单级中断的条件
有中断请求信号 中断是开放的
单级中断的处理过程
中断请求 中断响应 中断处理 中断返回
发中断响应信号 关中断 保护处理器的现行状态 转去中断服务程序首地址 保护现场 中断服务 恢复现场 开中断 中断返回
第三节 多级中断
多级中断 优先权判别及中断源的识别
MOV AL, 1BH ;单片,电平触发,要ICW4 OUT 60H,AL
MOV AL, 1BH OUT 60H,AL MOV AL, 38H OUT 61H, AL MOV AL,09H OUT 61H,AL MOV AL, 22H OUT 61H, AL
;单片,电平触发,要ICW4
; IRR0的中断类型码为38H ;普通的全嵌套方式,缓冲方式, ;正常EOI ; 屏蔽IRR1和IRR5
2. OCW2
3. OCW3
3.8259A编程应用
1.初始化
例1:设IBM PC机接有一片8259A(两个端口地址为60H、61H),管理8个 中断源,采用普通完全嵌套方式,普通EOI方式,中断请求高电平有效, 优先级固定,IRR0最高,IRR7最低,IRR0的中断类型号为38H。IRR1、 IRR5需要被屏蔽。
微机原理与接口技术——中断系统

2、内部中断——软件中断
内部中断指由指令的执行或软件对标志寄存器中 某个标志的设置产生的中断
专用中断
指令中断
内部中断的种类
(1)除法出错中断 类型号为00H
除法出错中断既不是外部硬件产生,也不是用 软件指令产生,而是CPU自身产生的,因此0型中 断没有对应的中断指令,即指令系统中没有INT 0 这条指令。
30~3FH 40~FFH
DOS保留使用 DOS内部使用 DOS保留使用 用户自定义
DOS 可调用
1、外部中断——硬件中断
1、非屏蔽中断(NMI):不受中断标志位的控制,中断类型 号为2,所以中断向量放在0000:0008开始的4个单元中。NMI 中断一般用于紧急情况的处理,不受中断标志位IF影响 。 2、可屏蔽中断(INTR):受中断标志位的控制,IF=1, CPU才能响应INTR中断。CPU响应INTR中断时,往INTA引 脚上发两个负脉冲,外设接到第二个负脉冲后,立即往数据总 线上送出中断类型码,供CPU读取。
中断源
引起CPU中断的事件,发出中断请求的来源。
异常中断 内部中断
软件中断
异常事件引起 中断指令引起
可屏蔽中断 外部中断
非屏蔽中断
INTR中断 NMI中断
引入中断的原因
提高数据传输率; 避免了CPU不断检测外设状态的过程,提高了
CPU的利用率。 实现对特殊事件的实时响应。
中断系统
中断系统是指实现中断功能的软硬件的统称。功 能有: 正确识别中断请求,实现中断响应、中断处理
INTR
IRQ0 系统定时器 IRQ1 键盘 IRQ2 彩色/图形接口
8259A
IRQ3 保留(串口) IRQ4 串口
IRQ5 保留(LPT)
第7章 DOS中断和BIOS中断

第七章 DOS中断和BIOS中断
表7.1 BIOS中断类型 P316
CPU中断类型 8259中断类型 BIOS中断类型 10 显示器I/O 11 取设备信息 12 取内存容量 13 磁盘I/O 14 RS232串行口 15 磁带I/O 16 键盘I/O 17 打印机I/O 18ROM BASIC 19 引导装入程序 1A 时钟 40 软盘BIOS
2012-12-28 第12页
5.字符显示 例7.14(P333) Mov ah,2 ;置光标位置 Mov bh,0 ;0页 Mov dh,20 ;row 20 Mov dl,25 ;colume 25 Int 10h Mov ah,9 Mov al,’*’ Mov bh,0 Mov bl,7;00000111 表7.7 Mov cx,1;字符重复次数 Int 10h
2012-12-28 第4页
7.1.2BIOS键盘中断
AH 0 1
2
表7.4 BIOS键盘中断(INT 16H) 功能 返回参数 从键盘读一字符 AL=字符码(ASCII码) AH=扫描码 读键盘缓冲区字符 如ZF=0 AL=字符码(ASCII码) AH=扫描码 如ZF=1 缓冲区空 取键盘状态字节 AL=键盘状态字节
在DEBUG中调试检测 ah=0,2 int 16h
2012-12-28
第5页
7.1.3DOS键盘功能调用
表7.5 DOS键盘操作(INT 21H) AH 功能 调用参数 返回参数 1 从键盘输入一字符并回显 AL=字符 6 读键盘字符 DL=0FFH 若有字符可取,AL=字符 ZF=0 若无字符可取,AL=0 ZF=1 7 从键盘输入一字符不回显 AL=字符 8 从键盘输入一字符不回显 AL=字符 检测Ctrl-Break A 输入字符到缓冲区 DS:DX=缓冲区首地址 B 读键盘状态 AL=0FFH有键输入 AL=0无键输入 C 清除键盘缓冲区 AL=键盘功能号 并调用一种键盘功能 (1,6,7,8,或A)
表7.1 BIOS中断类型 P316
CPU中断类型 8259中断类型 BIOS中断类型 10 显示器I/O 11 取设备信息 12 取内存容量 13 磁盘I/O 14 RS232串行口 15 磁带I/O 16 键盘I/O 17 打印机I/O 18ROM BASIC 19 引导装入程序 1A 时钟 40 软盘BIOS
2012-12-28 第12页
5.字符显示 例7.14(P333) Mov ah,2 ;置光标位置 Mov bh,0 ;0页 Mov dh,20 ;row 20 Mov dl,25 ;colume 25 Int 10h Mov ah,9 Mov al,’*’ Mov bh,0 Mov bl,7;00000111 表7.7 Mov cx,1;字符重复次数 Int 10h
2012-12-28 第4页
7.1.2BIOS键盘中断
AH 0 1
2
表7.4 BIOS键盘中断(INT 16H) 功能 返回参数 从键盘读一字符 AL=字符码(ASCII码) AH=扫描码 读键盘缓冲区字符 如ZF=0 AL=字符码(ASCII码) AH=扫描码 如ZF=1 缓冲区空 取键盘状态字节 AL=键盘状态字节
在DEBUG中调试检测 ah=0,2 int 16h
2012-12-28
第5页
7.1.3DOS键盘功能调用
表7.5 DOS键盘操作(INT 21H) AH 功能 调用参数 返回参数 1 从键盘输入一字符并回显 AL=字符 6 读键盘字符 DL=0FFH 若有字符可取,AL=字符 ZF=0 若无字符可取,AL=0 ZF=1 7 从键盘输入一字符不回显 AL=字符 8 从键盘输入一字符不回显 AL=字符 检测Ctrl-Break A 输入字符到缓冲区 DS:DX=缓冲区首地址 B 读键盘状态 AL=0FFH有键输入 AL=0无键输入 C 清除键盘缓冲区 AL=键盘功能号 并调用一种键盘功能 (1,6,7,8,或A)
第七章,微型计算机的中断系统

1
第七章:微型计算机的中断系统——中断控制器8059A 8259A的内部结构和工作原理
2
第七章:微型计算机的中断系统——中断控制器8059A 8259A的内部结构和工作原理
数据总线缓冲器:它是8259A与系统数据总线的接口,是8位双向三态缓冲器。 CPU与8259A之间的控制命令信息、状态信息以及中断类型信息,都是通过该 缓冲器传送的。 读/写控制逻辑:CPU通过它实现对8259A的读/写操作。 级连缓冲器:用以实现8259A芯片之间的级连,使得中断源可以由8级扩展至 64级。 控制逻辑电路:对整个芯片内部各部件的工作进行协调和控制。 中断请求寄存器IRR:8位,用以分别保存8个中断请求信号,当相应的中断请 求输入引脚有中断请求时,该寄存器的相应位置1。 中断屏蔽寄存器IMR:8位,相应位用以对8个中断源的中断请求信号进行屏蔽 控制。当其中某位置”0”时,则相应的中断请求可以向CPU提出;否则,相应 的中断请求被屏蔽,即不允许向CPU提出中断请求。该寄存器的内容为8259A 的操作命令字OCW1,可以由程序设置或改变。 中断服务寄存器ISR: 8位,当CPU正在处理某个中断源的中断请求时,ISR寄 存器中的相应位置1。 优先级比较器PR:用以比较正在处理的中断和刚刚进入的中断请求之间的优先 级别,以决定是否产生多重中断或中断嵌套。
6
第七章:微型计算机的中断系统——中断控制器8059A 8259A的编程——8259A的控制字
8259A的命令字有两种。一种是初始化命令字(ICW),在8259A启动之前写 入,使其处于预定的初始状态。另一种是操作命令字(OCW),使处于初始状态 的8259去执行具体的某种操作方式。操作命令字可在8259初始化后的任何时 刻写入。
IR7 IR6
微机原理14162中断处理过程

8
§7.2 中断处理过程
二、CPU对中断的响应
3. 识别中断源
CPU要对中断进行处理,必须找到相应的中断服 务程序的入口地址,这就是中断源的识别。
4. 保护现场
为了不使中断服务程序的运行影响主程序的状态, 必须把断点处的相关寄存器及标志寄存器压栈保 护。
5. 执行中断服务程序
6. 恢复现场 7. 开中断及返回
2019/10/3
4
§7.2 中断处理过程
一、CPU响应中断的条件
中断允许触发器的状态可用指令CLI和 STI来改 变,下述三种情况可关闭中断:
1) 当CPU复位时,中断允许触发器处于关中 断状态;
2) 中断请求被响应后,CPU自动关中断; 3) CPU执行关中断指令CLI后,中断关闭。
2019/10/3
2019/10/3
7
§7.2 中断处理过程
二、CPU对中断的响应
CPU进入中断响应周期后,中断响应过程如下:
1. 关中断
CPU在响应中断后,发出中断响应信号INTA,同 时内部自动关中断,以禁止接受其它的中断请求。
2. 保护断点 把断点处的IP及CS值入栈保存,以备中断处理完 后能正确返回断点。
2019/10/3
四、中断优先级
17
§7.2 中断处理过程
实现方法:
将8个外 设的中断 请求触发 器组合为 一个端口, 并给这个 端口赋以 设备号 (口地址),
2019/10/3
四、中断优先级
18
§7.2 中断处理过程
四、中断优先级
然后,把各外设的中断请求信号相或后作为INTR信 号。任何外设有中断请求时,都可向CPU发出INTR 信号。CPU响应中断后,把中断寄存器的状态作为 一个输入端口读进CPU,然后逐位检测其状态,若 有中断请求就转入相应的中断服务程序,这样优先 级的级别取决于软件查询的顺序,先测试的中断源 具有较高的优先级。
第7章 中断系统

可 屏 蔽 中 断 请 求
软件中断
硬件中断
小结: 中断分类及中ຫໍສະໝຸດ 类型码8086/8088系统最多可处理256级不同类型的中断。
可屏蔽中断(INTR) 外部中断(硬件中断) 非屏蔽中断(NMI,中断类型码2) 中断分类 单步中断(中断类型码1) 内部中断(软件中断) 断点中断(中断类型码3) 溢出中断(中断类型码4) Int n 中断
器退出暂停状态,响应中断,进入中断处理程序。
若现行指令为WAIT指令,且 TEST 引脚加入低电平信号, 则中断请求信号INTR产生后,便使处理器脱离等待状态,响 应中断,进入中断处理程序。
HLT: 暂停指令
(4) 8259A连续两次接收(2个总线周期) INTA = 0的中断 响应信号后,便通过总线将中断矢量号送CPU。 (5) 保护断点。将标志寄存器内容、当前CS内容及当前IP 内容压入堆栈: (SP)←(SP)-2
((SP)+1:(SP))←(PSW)
(SP)←(SP)-2 ((SP+l:(SP))←(CS) (SP)←(SP)-2 ((SP)+1:(SP))←(IP)
(6) 清除IF及TF(IF←0,TF←0),以便禁止其它可屏蔽中 断或单步中断发生。 (7) 求中断程序的入口地址 :根据8259A向CPU送的中断 矢量号n求得矢量地址,再查中断矢量表,得相应中断处理程 序首地址(段内偏移地址和段地址),并将 位首地址置入CS及
7.1 概述
中断和异常是处理器处理突发事件时所采取的两种不同 的处理方法,具体来说,中断指的是处理器暂停当前的程序, 转而去处理中断事件;而异常虽然也会对异常事件作出反应, 但不一定会暂停当前的程序。 在8086/8088处理器时代,中断主要包括外部中断 和 内 部中断两种。 在386/486等32位处理器时代,内部中断的数量和功能被 扩充,习惯上,称内部中断为异常,而中断则主要指外部中 断。
单片机讲义第七章

一、中断的起因
什么可以引起中断? 生活中很多事件可以引起中断:有人 按了门铃了,电话铃响了,你的闹钟闹响 了,你烧的水开了….等等诸如此类的事件, 我们把可以引起中断的称之为中断源,单 片机中也有一些可以引起中断的事件, 8051中一共有5个:两个外部中断,两个 计数/定时器中断,一个串行口中断。
三、中断的响应过程
当有事件产生,进入中断之前我们必须先记住现 在看书的第几页了,或拿一个书签放在当前页的位置, 然后去处理不同的事情(因为处理完了,我们还要回 来继续看书):电话铃响我们要到放电话的地方去, 门铃响我们要到门那边去,也说是不同的中断,我们 要在不同的地点处理,而这个地点通常还是固定的。 89C51中也是采用的这种方法,五个中断源,每个 中断产生后都到一个固定的地方去找处理这个中断的 程序,当然在去之前首先要保存下面将执行的指令的 地址,以便处理完中断后回到原来的地方继续往下执 行程序。
二、中断的嵌套与优先级处理
设想一下,我们正在看书,电话铃响了,同时又 有人按了门铃,你该先做那样呢?如果你正是在等一 个很重要的电话,你一般不会去理会门铃的,而反之, 你正在等一个重要的客人,则可能就不会去理会电话 了。如果不是这两者(即不等电话,也不是等人上 门),你可能会按你通常的习惯去处理。总之这里存 在一个优先级的问题, 单片机中也是如此,也有优先级的问题。优先级 的问题不仅仅发生在两个中断同时产生的情况,也发 生在一个中断已产生,又有一个中断产生的情况,比 如你正接电话,有人按门铃的情况,或你正开门与人 交谈,又有电话响了情况。考虑一下我们会怎么办吧。
电平触发的外部中断的清除
对于电平触发的外部中断,CPU响应中断后, 虽然也是由硬件清除了相应的标志位,但是不 能对外部引脚上的电平进行处理,也就是说, 这时如果外部引脚上的低电平依然存在,会造 成重复中断,因此我们应该在电路上增加对外 部引起中断的信号进行处理。P148图7-5是一 个可行的方案之一。通过I/O口输出一个信号, 使得外部引脚上的中断请求信号变为高电平。
硬件技术基础第七章中断系统

CPU响应中断的条件和过程 CPU响应中断的条件和过程
恢复现场 把所保存的各个内部寄存器的内容和标志位的状态从 堆栈弹出,送回CPU中的原来位置。这个操作在8088 CPU中的原来位置 8088中也 堆栈弹出,送回 CPU中的原来位置。这个操作在8088 中也 是由服务程序中用POP指令来完成的。 POP指令来完成的 是由服务程序中用POP指令来完成的。 开中断与返回 在中断服务程序的最后,要开中断(以便CPU CPU能响应 在中断服务程序的最后,要开中断(以便 CPU能响应 新的中断请求)和安排一条返回指令,将堆栈内保存的IP 新的中断请求)和安排一条返回指令,将堆栈内保存的IP CS值弹出 程序就恢复到主程序中运行。 值弹出, 和CS值弹出,程序就恢复到主程序中运行。
中断系统
教学目的和要求
本章主要介绍中断的基本概念 , 中断响应过程 , 8088的中断方式 的中断方式, PC/XT的中断方式 的中断方式, 8088的中断方式,IBM PC/XT的中断方式,之后又介绍了 中断控制器8259 重点掌握中断概念、中断响应过程、 8259, 中断控制器 8259 , 重点掌握中断概念 、 中断响应过程 、 8088中断方式 中断方式。 8088中断方式。
中断系统
中断的屏蔽:有些中断源产生的中断,可以用编程的方法, 中断的屏蔽:有些中断源产生的中断,可以用编程的方法, CPU不予理睬 不予理睬。 使CPU不予理睬。 CPU响应中断转去执行中断服务程序前, CPU响应中断转去执行中断服务程序前,需要把被中 响应中断转去执行中断服务程序前 断程序的现场信息保存起来,以便执行完中断服务程序后, 断程序的现场信息保存起来,以便执行完中断服务程序后, 接着从被中断程序的断点处继续往下执行,这些现场信息 接着从被中断程序的断点处继续往下执行, 包括程序计数器的内容、CPU的状态信息 的状态信息、 包括程序计数器的内容、CPU的状态信息、执行指令后的 结果特征和一些通用寄存器的内容。 结果特征和一些通用寄存器的内容。 中断处理的隐操作: 中断处理的隐操作:有些信息的保存如程序计数器的内容 等由机器硬件预先安排完成。 等由机器硬件预先安排完成。 中断向量: 中断向量:有些信息的保存是在中断服务程序中预先安排 CPU响应中断 由中断源提供地址信息, 响应中断, 的。CPU响应中断,由中断源提供地址信息,
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
3.若CPU处于开中断状态,则在当前指令执行结束 后,启动中断响应总线操作,发出两个负脉冲作为响 应信号。
4.8259A接收到第一个负脉冲,完成如下工作:
(1)使ISR相应位置1,表示CPU已为该中断请求服务。 (2)使IRR的相应位清0。
5.8259A接收到第二个负脉冲,将中断类型号送上数据总 线。中断类型号由用户编程和中断请求引脚IRi的序号i共同决 定(CPU读取中断类型号,经响应过程后,进入中断服务程 序,直到服务结束返回)。
(2)设计
• ① 8259A初始化编程
• ;主片8259A的初始化
•
MOV AL,11H ;写入ICW1,设定边沿触发,级联方式
•
OUT 20H,AL
•
JMP INTR1 ;延时,等待8259A操作结束,下同
• INTR1:MOV AL,08H
•
;写入ICW2,设定IRQ0的中断类型号为08H
•
OUT 21H,AL
07H 08H 09H 0AH
功能 等待从键盘输入一个字符 并显示它 显示1个字符
从COM1接收1个字符 从COM1发送1个字符
向打印机输出1个字符
立即从键盘输入1个字符 或向显示器输出1个字符
等待从键盘输入一个字符 等待从键盘输入一个字符 显示一个字符串
从键盘接收1个字符串 存入缓冲区,并显示它
入口参数 无
各级中断的用途如表7-1所示。
表7-1 IBM PC/AT的中断源和类型号
中断向量地址指针 8259A引脚 中断类型号
优先级
中断源
00020H 00024H 00028H 001C0H 001C4H 001C8H 001CCH 001D0H 001D4H 001D8H 001DCH 0002CH 00030H 00034H 00038H 0003CH
主片IR0 主片IR1 主片IR2 从片IR0 从片IR1 从片IR2 从片IR3 从片IR4 从片IR5 从片IR6 从片IR7 主片IR3 主片IR4 主片IR5 主片IR6 主片IR7
08H 09H 0AH 70H 71H 72H 73H 74H 75H 76H 77H 0BH 0CH 0DH 0EH 0FH
• 例7-4使用INT 21H 的2BH系统功能设置日期为 2004年5月1日。其程序段为:
MOV DL,1 ;入口参数送入指定寄存器:把日子放入DL中
MOV DH,5 ;把月份放入DH中
MOV CX,2004
;把年份放入CX中,CX中的年份值是以1980为基准的偏移值
SUB CX,1980 ;减去1980才为年份设定值
(2)特殊全嵌套方式。
与全嵌套方式基本相同,所不同的是在特殊全嵌 套方式下,当执行某一级中断服务程序时,可响应同级 的中断请求,从而实现对同级中断请求的特殊嵌套 (8259A级联使用时,某从片的8个中断源对主片来说, 可以认为是同级的)。
特殊全嵌套方式用于多片级联。
3.优先级控制方式
(1)优先级自动循环方式。
6.若8259A工作在自动结束中断方式AEOI,则8259A清除 ISR的相应位,否则直至中断服务结束,发出EOI命令,才能 使ISR中的相应位清0。
7.3.3 8259A的工作方式 8259A有多种工作方式,这些工作方式可以通过初始化 命令字(ICW1~ICW4)和操作命令字(OCW1~ OCW4)来设置。
动
器
地址 译码
SP/EN D7~D0
CAS0 CAS1 CAS2
A0 CS
从片 8259A
IIRR01
外设的 中断申请
INT
IR7
来自其他从片
图7-12 参与8259A组成的级联中断系统图
7.3.5 8259A的编程命令 1.初始化命令字ICW
写ICW1
写ICW2
N
级联?
Y 写ICW3
N
要ICW4?
0(最高) 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15(最低)
定时器 键盘 从片8259A 时钟/日历钟 IRQ9(保留) IRQ10(保留) IRQ11(保留) IRQ12(保留) 协处理器 硬盘控制器 IRQ15(保留) 异步通信口(COM2) 异步通信口(COM1) 并行打印机2 软盘驱动器 并行打印口1
MOV AH,2BH ;设置日期功能号送入AH寄存器
INT 21H
;执行DOS调用
CMP AL,0FFH
;根据出口参数AL=00H,设置成功;AL=FFH,判断失败
JE ERROR ;不成功,转错误处理
┇
;成功,往下执行
7.4.2 DOS系统功能调用 1.字符设备I/O控制
• 字符设备包括键盘、显示器、打印机、串行通信接口 等。通过DOS系统功能调用可以实现单个字符或字符 串的输入与输出控制
19 IR1 18 IR0 17 INT
16 SP/EN 15 CAS2
图5-10 8259A引脚信号
7.3.2 8259A的工作过程
1.中断源通过IR0~IR7向8259A发中断请求,使得 8259A的中断请求寄存器IRR的相应位置1。
2.IRR中经中断屏蔽寄存器IMR允许后的置位位进入 优先权判别器PR,PR将其中最高优先权的中断请求从 INT输出,送至CPU的INTR端。
•
JMP INTR2
• INTR2:MOV AL,04H ;写入ICW3,设定主片IRQ2级联方式
•
OUT 21H,AL
•
JMP INTR3
• ;从片8259A的初始化
•
MOV AL,11H
•
;写入ICW1,设定边沿触发,级联方式
•
OUT 0A0H,AL
•
JMP INTR5
• INTR5:MOV AL,70H
• OUT 20H,AL ;写主片EOI命令
7.4 中断调用
7.4.1 DOS 和BIOS 中断的调用方法
1. 将入口参数送入指定的调用寄存器,如果没有入 口参数,就不需要这一步。 2.将功能号送入AH寄存器,将子功能号送入AL寄 存器,如果没有子功能号,不需要送AL。 3.产生一个软中断INT n ,转入子程序入口。 4.通过CPU的返回寄存器返回中断处理结果——出 口参数。如果没有返回值,也就不需要返回寄存器。
•
;写入ICW2,设定从片IR0,即IRQ8的中断类型号为70H
•
OUT 0A1H,AL
•
JMP INTR6
• INTR6:MOV AL,02H
•
;写入ICW3,设定从片级联到主片的IRQ2
•
OUT 0A1H,AL
•
JMP INTR7
• INTR7:MOV AL,01H
• ② 级联工作编程
• ;读ISR的内容
无
Ctrl-c处理 能 能 能 能 能 能
否 能 能 能
表7-2 字符设备的系统功能
• 例7-6 从键盘输入一串字符,并在显示屏上显示出来。注意09H功能显示字符串时是以‘$’符 号结束的,因此,要显示的字符串一律以‘$’结尾
8086/8088 CPU
MCE/PDEN
8288
总线
接 数接 据 总线
驱动器 IORC
INTA IOWC
总 驱动器
线 的OE端
D7~D0 地址 总线
INTR
地址 译码
INTA WR RD
SP/EN
CAS0 CAS1
主片 CAS2
8259A
A0 地址
IR0
IR1
IR7
数据总线 地址总线
驱
连接其他芯片
IR0
寄存器
IRR
IR7
中断屏蔽寄存器IMR
图5-9 8259A内部结构框图
2.8259A的引脚特性
CS 1 2
WR 3
RD 4
D7
5
D6 D5
6
D4
7
D3
8
D2
9
D1 10
D0 11
CAS0 12
CAS1 13
GND 14
28 VCC 27 A0
26 INTA 25 IR7 24 IR6 23 IR5 22 IR4 21 IR3 20 IR2
BUF BU M/S
D2
D1
AEOI PM
(2).操作命令字OCW
(1)操作命令字OCW1——屏蔽操作命令字
A0
D7
D6
D5
D4
D3
D2
D1
D0
1
(2)操作命令字OCW2——中断方式命令字
A0
D7
D6
D5
D4
D3
D2
D1
D0
1
R
SL EOI
0
0
L2
L1
L0
(3)操作命令字OCW3——状态操作命令字
A0
• MOV AL,0BH ;写入OCW3,读ISR命令
• OUT 0A0H,AL
• NOP
;延时,等待8259A操作结束
• IN AL,0A0H ;读出ISR
•
┇
• ;向从片发EOI命令
• MOV AL,20H
• OUT 0A0H,AL ;写从片EOI命令
•
┇
• ;向主片发EOI命令
• MOV AL,20H
T4
T3
(3)初始化命令字ICW3——主/从片初始化字
主片ICW3的格式如下:
A0
D7
D6
D5
D4
D3
D2
D1
D0
1
从片ICW3的格式如下:
A0
D7
D6
D5
4.8259A接收到第一个负脉冲,完成如下工作:
(1)使ISR相应位置1,表示CPU已为该中断请求服务。 (2)使IRR的相应位清0。
5.8259A接收到第二个负脉冲,将中断类型号送上数据总 线。中断类型号由用户编程和中断请求引脚IRi的序号i共同决 定(CPU读取中断类型号,经响应过程后,进入中断服务程 序,直到服务结束返回)。
(2)设计
• ① 8259A初始化编程
• ;主片8259A的初始化
•
MOV AL,11H ;写入ICW1,设定边沿触发,级联方式
•
OUT 20H,AL
•
JMP INTR1 ;延时,等待8259A操作结束,下同
• INTR1:MOV AL,08H
•
;写入ICW2,设定IRQ0的中断类型号为08H
•
OUT 21H,AL
07H 08H 09H 0AH
功能 等待从键盘输入一个字符 并显示它 显示1个字符
从COM1接收1个字符 从COM1发送1个字符
向打印机输出1个字符
立即从键盘输入1个字符 或向显示器输出1个字符
等待从键盘输入一个字符 等待从键盘输入一个字符 显示一个字符串
从键盘接收1个字符串 存入缓冲区,并显示它
入口参数 无
各级中断的用途如表7-1所示。
表7-1 IBM PC/AT的中断源和类型号
中断向量地址指针 8259A引脚 中断类型号
优先级
中断源
00020H 00024H 00028H 001C0H 001C4H 001C8H 001CCH 001D0H 001D4H 001D8H 001DCH 0002CH 00030H 00034H 00038H 0003CH
主片IR0 主片IR1 主片IR2 从片IR0 从片IR1 从片IR2 从片IR3 从片IR4 从片IR5 从片IR6 从片IR7 主片IR3 主片IR4 主片IR5 主片IR6 主片IR7
08H 09H 0AH 70H 71H 72H 73H 74H 75H 76H 77H 0BH 0CH 0DH 0EH 0FH
• 例7-4使用INT 21H 的2BH系统功能设置日期为 2004年5月1日。其程序段为:
MOV DL,1 ;入口参数送入指定寄存器:把日子放入DL中
MOV DH,5 ;把月份放入DH中
MOV CX,2004
;把年份放入CX中,CX中的年份值是以1980为基准的偏移值
SUB CX,1980 ;减去1980才为年份设定值
(2)特殊全嵌套方式。
与全嵌套方式基本相同,所不同的是在特殊全嵌 套方式下,当执行某一级中断服务程序时,可响应同级 的中断请求,从而实现对同级中断请求的特殊嵌套 (8259A级联使用时,某从片的8个中断源对主片来说, 可以认为是同级的)。
特殊全嵌套方式用于多片级联。
3.优先级控制方式
(1)优先级自动循环方式。
6.若8259A工作在自动结束中断方式AEOI,则8259A清除 ISR的相应位,否则直至中断服务结束,发出EOI命令,才能 使ISR中的相应位清0。
7.3.3 8259A的工作方式 8259A有多种工作方式,这些工作方式可以通过初始化 命令字(ICW1~ICW4)和操作命令字(OCW1~ OCW4)来设置。
动
器
地址 译码
SP/EN D7~D0
CAS0 CAS1 CAS2
A0 CS
从片 8259A
IIRR01
外设的 中断申请
INT
IR7
来自其他从片
图7-12 参与8259A组成的级联中断系统图
7.3.5 8259A的编程命令 1.初始化命令字ICW
写ICW1
写ICW2
N
级联?
Y 写ICW3
N
要ICW4?
0(最高) 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15(最低)
定时器 键盘 从片8259A 时钟/日历钟 IRQ9(保留) IRQ10(保留) IRQ11(保留) IRQ12(保留) 协处理器 硬盘控制器 IRQ15(保留) 异步通信口(COM2) 异步通信口(COM1) 并行打印机2 软盘驱动器 并行打印口1
MOV AH,2BH ;设置日期功能号送入AH寄存器
INT 21H
;执行DOS调用
CMP AL,0FFH
;根据出口参数AL=00H,设置成功;AL=FFH,判断失败
JE ERROR ;不成功,转错误处理
┇
;成功,往下执行
7.4.2 DOS系统功能调用 1.字符设备I/O控制
• 字符设备包括键盘、显示器、打印机、串行通信接口 等。通过DOS系统功能调用可以实现单个字符或字符 串的输入与输出控制
19 IR1 18 IR0 17 INT
16 SP/EN 15 CAS2
图5-10 8259A引脚信号
7.3.2 8259A的工作过程
1.中断源通过IR0~IR7向8259A发中断请求,使得 8259A的中断请求寄存器IRR的相应位置1。
2.IRR中经中断屏蔽寄存器IMR允许后的置位位进入 优先权判别器PR,PR将其中最高优先权的中断请求从 INT输出,送至CPU的INTR端。
•
JMP INTR2
• INTR2:MOV AL,04H ;写入ICW3,设定主片IRQ2级联方式
•
OUT 21H,AL
•
JMP INTR3
• ;从片8259A的初始化
•
MOV AL,11H
•
;写入ICW1,设定边沿触发,级联方式
•
OUT 0A0H,AL
•
JMP INTR5
• INTR5:MOV AL,70H
• OUT 20H,AL ;写主片EOI命令
7.4 中断调用
7.4.1 DOS 和BIOS 中断的调用方法
1. 将入口参数送入指定的调用寄存器,如果没有入 口参数,就不需要这一步。 2.将功能号送入AH寄存器,将子功能号送入AL寄 存器,如果没有子功能号,不需要送AL。 3.产生一个软中断INT n ,转入子程序入口。 4.通过CPU的返回寄存器返回中断处理结果——出 口参数。如果没有返回值,也就不需要返回寄存器。
•
;写入ICW2,设定从片IR0,即IRQ8的中断类型号为70H
•
OUT 0A1H,AL
•
JMP INTR6
• INTR6:MOV AL,02H
•
;写入ICW3,设定从片级联到主片的IRQ2
•
OUT 0A1H,AL
•
JMP INTR7
• INTR7:MOV AL,01H
• ② 级联工作编程
• ;读ISR的内容
无
Ctrl-c处理 能 能 能 能 能 能
否 能 能 能
表7-2 字符设备的系统功能
• 例7-6 从键盘输入一串字符,并在显示屏上显示出来。注意09H功能显示字符串时是以‘$’符 号结束的,因此,要显示的字符串一律以‘$’结尾
8086/8088 CPU
MCE/PDEN
8288
总线
接 数接 据 总线
驱动器 IORC
INTA IOWC
总 驱动器
线 的OE端
D7~D0 地址 总线
INTR
地址 译码
INTA WR RD
SP/EN
CAS0 CAS1
主片 CAS2
8259A
A0 地址
IR0
IR1
IR7
数据总线 地址总线
驱
连接其他芯片
IR0
寄存器
IRR
IR7
中断屏蔽寄存器IMR
图5-9 8259A内部结构框图
2.8259A的引脚特性
CS 1 2
WR 3
RD 4
D7
5
D6 D5
6
D4
7
D3
8
D2
9
D1 10
D0 11
CAS0 12
CAS1 13
GND 14
28 VCC 27 A0
26 INTA 25 IR7 24 IR6 23 IR5 22 IR4 21 IR3 20 IR2
BUF BU M/S
D2
D1
AEOI PM
(2).操作命令字OCW
(1)操作命令字OCW1——屏蔽操作命令字
A0
D7
D6
D5
D4
D3
D2
D1
D0
1
(2)操作命令字OCW2——中断方式命令字
A0
D7
D6
D5
D4
D3
D2
D1
D0
1
R
SL EOI
0
0
L2
L1
L0
(3)操作命令字OCW3——状态操作命令字
A0
• MOV AL,0BH ;写入OCW3,读ISR命令
• OUT 0A0H,AL
• NOP
;延时,等待8259A操作结束
• IN AL,0A0H ;读出ISR
•
┇
• ;向从片发EOI命令
• MOV AL,20H
• OUT 0A0H,AL ;写从片EOI命令
•
┇
• ;向主片发EOI命令
• MOV AL,20H
T4
T3
(3)初始化命令字ICW3——主/从片初始化字
主片ICW3的格式如下:
A0
D7
D6
D5
D4
D3
D2
D1
D0
1
从片ICW3的格式如下:
A0
D7
D6
D5