有关 I/O接口的基本概念
I/O端口与其编址方式
主机与外设之间的数据传送方式
有关中断的基本概念
8259A可编程中断控制器
8086中断系统
输入 /输出及 8259A应用举例
8086CPU中断响应流程本章内容
掌握微型计算机接口技术的基本概念
了解主机与外设之间的各种数据传送方式
掌握中断技术的基本概念
了解 8086中断系统及其对各种类型中断的响应流程
了解 8259A中涉及到的有关概念
掌握 8259A的编程应用学习目的
8.1 I/O接口概述一、接口与接口技术微型计算机系统可通过系统总线与外设相连,进行系统的扩展与开发,而外设必须通过 接口 才能与 CPU交换信息 。
CPU或系统总线
I/O
接口电路外设外设与 CPU连接时存在如下问题:
1,速度的匹配问题;
2,时序的配合问题;
3,信息类型与信号电平的匹配问题;
(数字量,模拟量; TTL电平,RS-232C电平等 )
因此,外设必项通过接口才能与 CPU相连接。
4,信息表示格式的一致性问题;
(二进制格式,ASCII码,BCD码,串行信息、
并行信息 )
接口,CPU与外设之间的一种缓冲电路,是
CPU与外设之间信息交换的中转站 。
接口技术,应用硬件与软件相结合的方法,
研究 CPU与外设之间如何实现高效,可靠的信息交换的一门技术 。
内存CPU
智能仪器接口 通信接口 过程控制接口 输入接口 输出接口 外存接口数字化存储示波器,数字化万用表终端调制解调器
TTY 电传机
A/D转换器开关量输入
D/A转换器开关量输出键盘 数字化仪光笔 图形输入声音输入扫描仪点阵打印 CRT 显示激光打印 液晶显示喷墨打印 绘图仪
X-Y记录仪硬盘 软盘光盘 磁带微机控制各类接口框图二,CPU 与外设之间的接口信息
1,数据信息 (DATA)
(1) 数字量由键盘,光电输入机等输入的信息 。
(通常以二进制表示的数或以 ASCII 码表示的数或字符 )
CPU与外设交换的基本信息是数据,
有三种类型:
(2) 模拟量非电量信息 传感器 电量 信号处理 A/D CPU?
(3) 开关量两个状态的量 (可以用 0,1表示 )
例如电机的启与停,开关的合与开等。
2,状态信息 (STATUS)
输入时,输入设备是否准备好? (READY)
输出时,输出设备是否空闲? (BUSY)
反映当前外设工作状态的信息,例如:
3,控制信息 (CONTROL)
例如控制 I/O 设备启动或停止等。
CPU I/O设备I/O接口
1
2
3
AB
DB
CB
DATA
STATUS
CONTROL
CPU 与外设之间的接口信息
CPU通过接口输出用以控制外设工作的信息。
三、接口的功能接口用以解决 CPU与外设连接时存在的矛盾,一般有以下功能:
1,数据缓存,匹配不同的数据传送速率。
2,端口寻址,选择某一外设,某一端口。
3,命令译码,解释 CPU输出的命令,产生相应的操作控制信号 。
4,同步控制,协调时序上的差异 。
8.2 I/O 端口的编址方式接口电路中能被 CPU访问的寄存器或某些特定器件称为 I/O端口 。 I/O端口分为数据端口,状态端口和命令端口 。
其中端口 1为 数据端口,端口 2为 状态端口,端口 3为 控制端口 。
CPU I/O设备I/O接口
1
2
3
AB
DB
CB
DATA
STATUS
CONTROL
CPU可用输入 /输出指令或存储器访问指令对端口进行读 /写,具体应用何种指令应视端口的编址方式而定 。
通常有两种编址方式:统一编址方式和独立编址方式 。
一、统一编址方式 (存储器对应 I/O方式 )
端口地址与存储器地址统一编址译码器CPU
AB 去存储器去 I/O端口
RD
WR
特点:
1,I/O端口与存储单元统一编址,占用了存储器空间 。
2,用存储器访问指令来处理 I/O,指令灵活,但指令执行时间较长 。
二、独立编址方式 (专用 I/O方式 )
译码器
8086
CPU
去存储器去 I/O端口
IOM/
译码器
RD
WR
A0~ A15
A0~ A19
1,I/O端口与存储器,都有自己的地址译码器,地址空间独立,互不影响。
2,用专用 I/O指令访问端口,程序易读。
特点:
问题,I/O端口地址译码电路如何设计?
I/O 端口地址译码电路设计原则
I/O 端口地址译码一般由 地址信号 和 控制信号 的不同组合实现。其原则是:
(2) 低位地址线直接连接到 I/O 接口芯片,
实现 片内寻址 。
(1) 高位地址与 CPU 的控制信号组合,经译码电路产生 I/O 接口芯片的片选信号
( ),实现 片间寻址 。CS
8.3 主机与外设之间的数据传送方式微机 与外设间的数据传送,实际上是 CPU
与 I/O接口间的数据传送 。 CPU与外设间的数据传送方式一般有三种,程序控制方式,中断方式 和 DMA方式 。
一,程序控制方式程序控制方式是指 CPU与外设间的数据传送是在程序的控制下完成的一种数据传送方式 。 这种方式又分为 无条件传送方式 和 条件传送方式 。
无条件传送一般适合于数据传送不太频繁的情况,如对开关,数码显示器等一些简单外设的操作 。 所谓无条件,就是假设外设已处于就绪状态,数据传送时,程序就不必再去查询外设的状态,而直接执行 I/O指令进行数据传输 。
1.无条件传送方式输出锁存器输出设备 输入设备输入缓冲器端口译码器数据总线地址总线
M/IO
WR
RD
无条件传送输入输出接口框图输入操作,IN AL,PORT
M/IO=0,RD=0,地址译码有效,输入缓冲器被选中。
无条件传送输入输出接口框图输出锁存器输出设备 输入设备输入缓冲器端口译码器数据总线地址总线
M/IO
WR
RD
M/IO=0,WR=0,地址译码有效,输出锁存器被选中。
输出操作,OUT PORT,AL
2.条件传送方式下 图为查询式输入接口电路框图 。
( 1) 查询式输入查询式输入接口电路框图地址总线
M/IO
RD
端口译码数据总线
READY
数据缓冲器三态缓冲器 R S
Q D + 5V
锁存器输入设备数据选通
80H
81H
D7
工作原理,CPU读状态口,若 READY=0,则循环检测
READY;若 READY=1,读数据口读入数据,同时置 READY=0。
地址总线
M/IO
RD
端口译码数据总线
READY
数据缓冲器三态缓冲器 R S
Q D + 5V
锁存器输入设备数据选通
80H
81H
D7
N
Y
READY=1?
输入状态信息输入数据查询式输入程序流程图
WAIT,IN AL,81H
TEST AL,80H
JZ WAIT
IN AL,80H
下 图为查询式输 出 接口电路框图 。
( 2) 查询式输 出查询式输出接口电路框图地址总线 端口译码
BSUY 状态寄存器
RD
RS
D Q
输出设备
+ 5V
应答
M/ IO
WR 数据锁存器数据数据总线选通信号
90H
91H
D0
工作原理,CPU读状态口,检测 BUSY信号,若
BUSY=1,则等待;若 BUSY=0,则通过数据口输出数据 。
地址总线 端口译码状态寄存器
RD
RS
D Q
输出设备
+ 5V
应答
M/ IO
WR 数据锁存器数据数据总线选通信号
90H
91H
D0
BUSY
Y
N
BUSY=1?
输入状态信息输出数据查询式输出程序流程图
WAIT,IN AL,91H
TEST AL,01H
JNZ WAIT
MOV AL,DATA
OUT 90H,AL
二,中断传送方式为了进一步提高 CPU的效率和使系统有实时性能,可以采用中断传送方式 。 在中断传送方式下,当外设准备好时,主动向 CPU发出中断请求,请求 CPU进行数据的输入输出 。
中断方式输入接口电路框图数据
STB
输入设备
+ 5V
数据锁存器中断请求触发器中断允许触发器
D R Q
中断类型号 三态缓冲器译码器三态缓冲器 D7~ D0
RD
A15~ A0
M/ IO
G INTA
INTR
工作原理:若输入设备准备好数据,且中断允许,则通过中断请求触发器发 INTR。 如果 IF=1,则 CPU在当前指令执行完后,进入 中断响应周期,发 INTA,待到中断类型号,进入中断服务实现数据传送 。
数据
STB
输入设备
+ 5V
数据锁存器中断请求触发器中断允许触发器
D R Q
中断类型号 三态缓冲器译码器三态缓冲器 D7~ D0
RD
A15~ A0
M/ IO
G INTA
INTR
中断方式的数据输入采用中断传送方式时,外设处于主动地位,无需 CPU花费大量时间去查询外设的工作状态 。 与程序方式相比,大大提高了
CPU的效率 。
外设请求中断
INTR有效主程序中断服务程序输入数据外设准备数据三,DMA方式
DMA (Direct Memory Access),是存储器与外设或存储器之间进行大量数据传送的方法,是在 DMA控制器 (DMAC)
的控制下进行的 。
CPU
总线存储器外设程序控制的数据输入 /输出
DMA
DMA与程序控制数据传送路径比较
1.DMA与程序控制数据传送路径的比较
2.DMA传送控制原理图
DMA传送控制原理图
CPU
DMAC
存储器外设
HLDA HOLD
DREQ
DACK
DB
IOR / IOW
AB
MEMW / MEMR
3.DMA传送的一般操作过程外设准备好进行 DMA操作,
外设接口向 DMAC发 DREQ
DMAC向 CPU发 HOLD
CPU现行总线周期结束,向 DMAC发 HLDA,
AB,CB,DB呈 高阻态
DMAC接管总线向外设接口发 DACK
DMA传送结束?
DMAC撤消 HOLD信号,CPU重新控制总线
N
Y
DMAC向 AB发地址信息,向外设,存储器发 IOR,MEMW或 IOW,MEMR,且自动修改地址指针,
4.DMA 控制器的功能
① 能向 CPU 发出 DMA 请求信号。
② CPU 响应后,接管对总线的控制,进入
DMA方式。
③ 发出读、写控制信号。
④ 决定数据传送的地址和数据传送的长度。
⑤ 判断 DMA 操作的结束,撤消总线请求信号,
使 CPU 恢复正常工作。
5.DMA 方式与中断方式的比较中断方式特点 DMA方式控制数据传送
CPU 状态响应适用性由 DMA控制器控制
I/O? 存储器不破坏 CPU 内部寄存器状态请求-响应,级别高于中断适用于高速 I/O设备和成组数据交换由 CPU程序控制
I/O? CPU? 存储器请求-响应,级别比 DMA方式低适用于慢速 I/O
设备,实时处理破坏 CPU内部寄存器状态
8.4 中断的基本概念一,什么叫中断?
中断申请主程序 中断服务程序返回中断示意图所谓中断,是指这样一个过程:当 CPU正在执行程序过程中,由于某一 突然 事件的发生,暂时中止 正在执行的程序,转去处理突然发生的事件 ( 执行 中断服 务程序 ),处理完毕,再返回 原来被中止的程序继续运行 。
日常生活中类似,中断,的例子:
例 1:门铃响时,放下手中正在做的事情,
跑去开门,招待客人;客人走后,接着做原来的事情 。
例 2:教师讲课过程中,同学遇有疑问,不同理解之处,随时向老师提问 。
问题:请同学们列举类似,中断,的例子 。
二、应用中断技术的优点
1.实现 CPU 与外设的并行工作,提高了 CPU
的效率 。
N
Y
READY?
输入状态信息输入数据查询方式的数据输入 中断方式的数据输入外设请求中断
INTR有效主程序中断服务程序输入数据外设准备数据二、应用中断技术的优点
1,实现 CPU 与外设的并行工作,提高了 CPU 的效率。
2,实现实时处理。
3,实现故障处理。
三、中断源引起中断的原因,产生中断请求的来源。
通常有以下几种:
1,一般的 I/O 设备,如键盘、打印机等。
2,实时时钟。
3,故障源。
4,为了调试程序而设置的中断。
(例如设置断点,单步运行等 )
四、中断系统的功能计算机系统中,用于实现中断功能的硬件和软件的集合,称为 中断系统 。
中断系统应解决如下问题:
1,中断请求信号的产生 ( 中断源如何申请中断? )
2,CPU如何响应? (如何知道有中断请求?
是否有求必应? 响应后的处理过程? )
3,中断优先权问题
4,中断的具体服务
5,中断服务完毕,如何返回原程序?
五、实现中断优先权的方法判断和确定中断源的中断优先权,可以采用 软件 和 硬件 两种方法 。
当系统中有多个中断源存在时,若有几个中断源同时提出申请,CPU先响应谁?
当 CPU正响应某一中断过程中,又有另外的中断源提出中断请求,CPU是否响应?
为此提出了中断优先权的概念 。
1,用软件确定中断优先权优先权管理电路三态缓冲器译码锁存器G
INTR
D7 ~D0
A15~A0
RD
中 断 源 A
中 断 源 B
中 断 源 C……
…
M / IO
1.用软件确定中断优先权软件查询流程图优先权管理电路三态缓冲器译码锁存器
G
INTR
D7 ~D0
A15~A0
RD
中 断 源 A
中 断 源 B
中 断 源 C
……
…
IOM
在 中 断 服 务 中读 入 请 求 状 态
A 申 请?
B 申 请?
中 断 返 回为中断源 A
服务的程序段
Y
C 申 请?
为中断源 B
服务的程序段为中断源 C
服务的程序段 ……
Y
Y
采用软件查询方式的特点:
询问的次序,即为优先权的次序。
硬件简单。
由查询转至相应的服务程序的时间长,
尤其在中断源较多的情况。
2.硬件方式
( 1) 若 CPU 未处理任何中断,则,优先权失 效,信号为高,当任一中断源请求中断时,通过门 2发出 INTR 信号 。
1
2
8-3
优先权编码器优先权寄存器
A <B
比较器
A2
A1
A0
B2
B1
B0
比较失效中断请求 0
中断请求 1
中断请求 2
…………7
D7 ~ D0
INTR
编码器和比较器的优先权排队电路
( 2) 若 CPU 正在进行中断处理,当某一中断源请求中断时,能否向 CPU 发出 INTR
信号,受比较器的控制 。
2.硬件方式
1
2
8-3
优先权编码器优先权寄存器
A <B
比较器
A2
A1
A0
B2
B1
B0
比较失效中断请求 0
中断请求 1
中断请求 2
…………7
D7 ~ D0
INTR
编码器和比较器的优先权排队电路
×
××
2,硬件方式
1
2
8-3
优先权编码器优先权寄存器
A <B
比较器
A2
A1
A0
B2
B1
B0
比较失效中断请求 0
中断请求 1
中断请求 2
…………7
D7 ~ D0
INTR
编码器和比较器的优先权排队电路思考题:与软件查询方式比较,采用硬件方式有何特点?
六,8086CPU 响应外部中断的过程
CPU 在每一个指令周期的最后一个总线周期的最后一个 T状态采样 INTR 或 NMI
信号线。
下面以 INTR 为例,说明 8086 CPU 响应中断的过程。
执行一条指令最后一个总线周期的最后一个 T状态?
有 INTR?
中断开放? (FR中的 IF=1?)
关中断 (置 FR中 IF=0) 信号发 IN T A
断号地址 (CS,IP)入栈FR 入栈识别中断源,转入相应中断服务程序保护现场中断服务处理恢复现场开中断 STI (置 FR中 IF=1)
中断返回 IRET
取下一条指令
No
No
No
Yes
Yes
Yes
讨论:
1,为什么要在中断服务程序中执行 STI
指令?
2,STI 指令在中断服务程序中的不同位置时,对 CPU 处理中断有何影响?
七、小结
1,实现断点地址的保护与恢复。
2,实现现状信息的保护。
3,实现中断优先权的排队。
4,实现中断的嵌套。
中断服务 2
(高优先级 )
主程序中断服务 1
中断过程由计算机的中断系统,配合用户设计的中断服务程序来实现 。 中断应具备以下功能:
INT n 指令中断逻辑非屏蔽中断请求中断控制系统
( 8259A)
INT 3
指令
INTO
指令单步中断除数为
0中断
…
可屏蔽中断请求
NMI
INTR
硬件中断软件中断
8.5 8086的中断系统一、中断类型
8086 能处理 256种中断,分为两大类:外部中断和内部中断 。
其中断分类如右图
8086的中断分类
1,外部中断 (硬件中断 )
( 1) 非屏蔽中断 NMI (类型号为 2)
有效,不受 FR 中 IF 的影响,常用于处理系统的重大故障。
( 2) 可屏蔽的中断 INTR
高有效,CPU 是否响应,取决于
FR 中 IF 的状态 。 常用于各种外设的中断 。
2,内部中断 (软件中断 )
通常由三种情况引起:
(1) INT n 指令中断 (n 为中断类型号 )
(2) 处理 CPU 某些错误的中断
除法错中断 (中断类型号为 0)
溢出中断 (INTO) (中断类型号为 4)
(3) 为调试程序设置的中断
a 单步中断当 FR 中 TF = 1时,每执行一条指令,CPU
产生类型为 1 的单步中断。
b 断点中断设置断点实际上是把指令,INT 3” 插入到程序中,CPU 每执行到断点处的
,INT 3” 指令,便产生类型为 3 的中断。
二、中断优先级
8086 系统中,中断优先级的次序为:
高低内部中断 (除法错,INTO,INT n)
NMI
INTR
单步中断三、中断向量表
CPU 响应中断后,如何得到中断服务程序的 入口地址 (中断向量 ),转入到中断服务程序? 8086CPU 通过建立中断向量表的方法解决 。
中断向量 (中断服务程 序 入 口 地址 ) 在表中的地址 = 中断类型号 × 4
中断向量表溢出中断
0000,0014 H
0000,0013 H
0000,0010 H
0000,000F H
0000,000C H
0000,000B H
0000,0008 H
0000,0007 H
0000,0004 H
0000,0003 H
0000,0000 H
类型 5
类型 255
供用户定义的中断
(共 224个)
0000,007 FH
0000,007 EH
0000,03 FFHCS
IP
CS
IP
CS
IP
CS
IP
CS
IP
CS
IP
CS
IP
专用的中断
(共 5个)
保留的中断
(共 27个)
类型 32
类型 31
类型 0
类型 4
类型 3
类型 2
类型 1
除数为 0 中断非屏蔽中断单步中断断点中断四、中断向量的装入
BIOS 负责 0~ 1FH 共 32个中断向量的装入 。 用户若想装入自己的中断向量到向量表中的,可用以下方法:
1,用 STOS 指令填空中断向量表假设类型号为 60H 的中断向量为
CLI
CLD
MOV AX,0
MOV ES,AX
MOV DI,4?60H ; DI 指向表中对应位置
MOV AX,OFFSET_INTR ; 取偏移地址
STOSW ; AL?[DI],AH?[DI+1];
DI+2?DI
MOV AX,SEG_INTR ; 取段基址
STOSW
STI
SEG_INTR,OFFSET_INTR。
2,利用 MOV 指令写入中断向量
CLI
MOV AX,00H
MOV ES,AX
MOV BX,4?60H ; BX 指向表中对应位置
MOV AX,OFFSET_INTR
MOV ES:[BX],AX ; 装入编程地址
MOV AX,SEG_INTR
MOV ES:[BX+2],AX ; 装入段基址方法 1,2由用户直接操作中断向量表,因此,要熟悉中断向量表的具体组织 。
3,利用 DOS 功能调用,INT 21H,的 AH = 25
H 装入中断向量
MOV AL,60H ; 类型号?AL
MOV AH,25H ; 功能号 25H?AH
MOV DX,SEG_INTR
MOV DS,DX
MOV DX,OFFSET_INTR ; DS:DX=中断向量
INT 21H
方法 3由 DOS功能调用具体实现,中断向量表对用户是透明的 。
1,取类型号;
2,计算向量地址;
3,根据向量地址查表,将偏移地址送 IP,段基址送 CS;
4,转入中断服务程序,进行中断处理。
五,8086CPU 转入中断服务程序的过程
8086转入中断处理程序的过程
1800H
F000H
00H
18H
00H
F0H
PUSH
IRET
…
…
…
…
…
例:执行 INT 21H
向量地址=
21H? 4 = 84H
CPU
IP
CS
MEM
( 4)
( 1)
( 2)
( 3)
0,0000H
0,0084H
0,0087H
0,03FFH
F000,1800H
中断向量表
2,计算向量地址;
向量地址=
4 =
3,根据向量地址查表,将偏移地址送 IP,段基址送 CS;
4,转入中断服务程序,进行中断处理。
1,取类型号;
21H
8.6 8259A 可编程中断控制器在微 机系统中,可以使用 8259A 扩展外部中断,Intel 8259A 可编程中断控制器,主要有以下功能:
3,在中断响应周期,8259A 可提供相应的中断类型号 。
1,1片 8259A 能管理 8级中断,通过级联用 9
片 8259A可以构成 64 级主从式中断系统 。
2,每一级中断可以屏蔽或允许。
4,可编程使 8259A 工作在多种不同的方式。
一,8259A 的内部结构与引脚信号控制逻辑中断服务寄存器
ISR
优先权电路
PR
中断请求寄存器
IRR
中断屏蔽寄存器 IMR
读写控制逻辑级联缓冲比较器数据总线缓冲器
D0~D7
RD
WR
CS
A0
CAS0
CAS1
CAS2
ENSP
INTA INT
IR0
IR1
IR7
…
8259A内部逻辑框图
1,数据总线缓冲器
8位、双向、三态,是 8259A与 CPU
之间的数据接口。
D0~ D7直接与 CPU 数据总线的低 8位连结。
2,读 /写控制逻辑
。接高位地址的译码输出:CS
A0,常常与地址信号线 A0相连。
相连。、的与,WRRDC P UWRRD
8259A的两个端口地址
CPU 通常利用:
OUT 指令,。配合写入有关的控制字与 A0,CSWR
IN 指令,
有关寄存器的内容。
内部配合读出与 A8 2 5 9A0,CSRD
3,中断请求寄存器 IRR
8 位,若 IRi 有效 (,1”,),
对应位置,1”,直到 IRi 得到响应。
因此,IRR记录外中断源 IRi的请求信息。
4,中断服务寄存器 ISR
8位,当 IRi得到响应时,对应位置,1”。
ISR 记录正在处理的 IRi,当 中断嵌套 时,
可能多位置,1”。
因此,ISR记录 CPU对 IRi的响应情况。
5,中断屏蔽寄存器 IMR
8位,某位置,1”,对应 IRi 禁止产生中断。
因此,IMR控制是否对 IRi进行屏蔽操作 。
6,优先权电路实现优先权的判断与处理,采用编码器和比较器电路,如下图所示 。
8259A中的中断优先权电路比较器
B
0
B
0
B
0
A > B
A
0
A
1
A
2
中断请求优先级编码器中 断 屏 蔽 寄 存 器 I M R
中断请求寄存器
I R R
I S R 编 码 器? 1
&
&
&
I N T
D
0
D
1
D
2
D
3
D
4
D
5
D
6
D
7
IR
0
IR
1
IR
2
IR
3
IR
4
IR
5
IR
6
IR
7
图 7 - 12 中断优先权电路比较器比较器中断请求优先级编码器中 断 屏 蔽 寄 存 器中断请求寄存器中断请求寄存器中断请求寄存器编 码 器图
7,控制逻辑
( 1) 由 IRR 和 PR 的情况,向 8259A 其它部件发出控制信息。
( 2) 向 CPU 发出 INT 信号,接收 CPU INTA
信号。
8,级联缓冲 /比较器可以实现 8259A的级联,扩展外中断。
(1) CAS2,CAS1,CAS0 引脚
① 主 8259A,CAS2~ CAS0 输出,输出被响应的从片的标志码。
问题,8259A级联时,如何确定主 8259A的
IRi接有从片,从片接入主 8259A的 IRi?
8259A
从片 A
8259A
主片
8259A
从片 B
INT
CAS0
CAS1
CAS2
IR0
INT
CAS0
CAS1
CAS2
IR0
INT
CAS0
CAS1
CAS2
IR7 IR6 IR3 IR0 …SP/EN SP/EN IR7
CS A0 INTA CS A0 INTA CS A0 INTA
… SP/EN …IR7
AB
CB
DB
GND GND Vcc
② 从 8259A,CAS2~ CAS0 输入,接收主片发出的标志码,
与自己的标志码比较 。 若相等,下一个 INTA信号到来时,将中断 类型号 送至数据总线 。
从片 A标去码,011,从片 B标志码,110
(2) SP / EN引脚
① 当 8259A 工作于非缓冲方式 (直接与
CPU 的 DB 相连 )
主片,1SP?
从片,0SP?
SP 为输入,是主从芯片定义引脚。
② 当 8259A 工作于缓冲方式 (通过总线缓冲器与
CPU 的 DB 相连 )
EN为输出,用于 CPU与 8259A传送数据信息时 启动数据总线驱动器 。
DB DBCPU 数据总线驱动器
8259A
ENOE
此时,主从芯片的定义由 ICW4中的 M/S实现。
8259A 的引脚图
Vcc
A0
IR
7
IR
6
IR
5
IR
4
IR
3
IR
2
IR
1
IR
0
I NT
C AS
2
1
2
3
4
5
6
7
8
9
10
11
12
13
14
28
27
26
25
24
23
22
21
20
19
18
17
16
15
I N T A
ENSP
WR
RD
CS
D
7
D
6
D
5
D
4
D
3
D
2
D
1
D
0
C AS
0
C AS
1
GND
图 7 - 13 8259 A 引脚图图 引脚图二,8259A 的中断处理过程下面以 8259A单片使用为例,说明其中断处理过程。
1,当一条或多条中断请求线 IR0 ~ IR7变高 时,
设置相应的 IRR位 。
2,PR对中断优先权和中断屏蔽寄存器的状态进行判断之后,如某中断优先权最高且为允许中断状态,就向 CPU发高电平信号
INT,请求中断服务 。
3,CPU响应中断时,送回应答信号 INTA 。
4,8259A接到来自 CPU的第一个信号 INTA时,
当前中断服务寄存器 ( ISR) 中相应位置位,
并把 IRR中相应位复位 。 同时,8259A准备向数据总线发送中断类型号 。
5,在 8259A发送中断类型号的后一个 INTA 脉冲期间,如果是在 AEOI(自动结束中断 )方式下,在这个 INTA 脉冲结束时复位 ISR的相应位 。 在非自动中断结束方式下,ISR相应位要由中断服务程序结束时发出的 EOI命令来复位 。
三,8259A 的工作方式
8259A有多种工作方式,这些工作方式可以通过初始化命令字 ( ICW1?ICW4) 和操作命令字 ( OCW1?OCW4) 来设置 。
1,引入中断请求的方式
边沿触发方式 。 以上跳沿向 8259A请求中断,上跳沿后可一直维持高电平,不会再产生中断 。
电平触发方式 。 以高电平申请中断,但在响应中断后必须及时清除高电平,以免引起第二次误中断 。
中断查询方式 。 外设通过 8259A申请中断,
但 8259A却不使用 INT信号向 CPU申请中断,
CPU用软件查询确定中断源,并为其服务 。
2,连接系统总线的方式
在大系统中,要求数据总线有总线缓冲器 。 8259A与这种带总线缓冲器的系统总线连接的方式称 缓冲器方式 。
在小系统中,则 8259A不需要总线缓冲器而是将其直接接至数据总线 。 8259A与这种不需总线缓冲器而直接连到系统总线的方式称 非缓冲器方式 。
3,屏蔽中断源的方式
普通屏蔽方式 。 利用操作命令字 OCW1,
使屏蔽寄存器 IMR中的一位或几位置 1来屏蔽一个或几个中断源的中断请求 。 若要开放某一个中断源的中断请求,则将 IMR中相应的位置 0。
特殊屏蔽方式 。 在某些场合,在执行某一个中断服务程序时,要求允许另一个优先级比它低的中断请求被响应,此时可采用特殊屏蔽方式 。 它可通过 OCW3的 D6D5= 11来设定 。
4,优先级排队的方式
全嵌套方式 。 在此种方式下中断优先级按 0? 7顺序进行排队,只允许中断级别高的中断源去中断中断级别低的中断服务程序 。
特殊全嵌套方式 。 它和全嵌套方式基本相同,所不同的是在特殊全嵌套方式下,当执行某一级中断服务程序时,可响应同级的中断请求,从而实现对 同级中断 请求的特殊嵌套 (8259A级联使用时,某从片的 8个中断源对主片来说,可以认为是同级的 )。 特殊全嵌套方式用于多片级联 。
优先级自动循环方式 。 在这种方式下,
优先级顺序不是固定不变的,一个设备得到中断服务后,其优先级自动降为最低 。 其初始的优先级顺序规定为 IR0,IR1,…,IR7。
该方式用在系统中多个中断源优先级相等的场合 。
优先级特殊循环方式 。 这种方式与优先级自动循环方式唯一的区别是,其初始的优先级顺序不是固定 IR0为最高,然后开始循环,
而是由程序指定 IR0? IR7中任意一个为最高优先级,然后再按顺序自动循环,决定优先级 。
5,结束中断的处理方式
自动中断结束方式 。 在中断服务程序中,
中断返回之前,不需发中断结束命令就会自动清除该中断源所对应的 ISR位 ( 实际上在
CPU发第二个信号时,8259即自动消除 ISR中的对应位 ) 。 这种方式用在多个中断不会嵌套的系统中 。
非自动中断结束方式 。 在中断服务程序返回之前,必须发中断结束命令才能使 ISR中的当前服务位清除 。
四,8259A 的初始化命令字
8259A 初始化编程时,有四个初始化命令字 ICW(Initialiation Command Word),即
ICW1?ICW4 ; 8259A工作期间,有三个操作命令字 OCW(Operation Command Word),即
OCW1~ OCW3。
8259A 只有两个端口地址 A0= 0 偶地址端口1 奇地址端口因此,对 8259A
读 /写操作时,要注意控制字写入的端口地址写入的顺序有关的标志位
1,ICW1
(IRi 触发方式,是否单片使用,是否写入 ICW4)
0 1 LTIM? SNGL IC4
A0 D7 D6 D5 D4 D3 D2 D1 D0
标志位
① LTIM,规定 IRi的触发方式
1 高电平触发
0 触发
=
② SNGL,是否单片使用
1 单片使用
0 级联使用
=
③ IC4,是否写入 ICW4
1 后面写入 ICW4
0 不写入 ICW4
=
例,某 8086微机系统中,使用单片 8259A,
中断请求信号为上升沿触发,需要设置 ICW4,
端口地址为 20H,21H,则其初始化命令字
ICW1应为,00010011= 13H,设置 ICW1的指令为:
MOV AL,13H
OUT 20H,AL
2,ICW2
(中断类型号的高 5位 )
(中断类型号的低 3位由 8259A 自动编码产生 )
1 T7 T6 T5 T4 T3
A0 D7 D6 D5 D4 D3 D2 D1 D0
IRi 对应中断类型号的高 5位
T7 T6 T5 T4 T3 T2 T1 T0
由 ICW2规定 0 0 0
0 0 1
0 1 0
1 1 1
IR0
IR1
IR2
IR7
例,某 PC机中 8个可屏蔽中断 ( IR0? IR7)
的类型号为 08H? 0FH,A0= 1,端口地址为
21H,则 ICW2为,08H,设置 ICW2的指令为:
MOV AL,08H
OUT 21H,AL
3,ICW3
(级联时,主从芯片的级联引脚 )
若 ICW1 中 SNGL=
1 不写入 ICW3
0 写入 ICW3
(1) 写给主片的 ICW3
Si = 1,表示主片 IRi上接有从片。
1 S7 S6 S5 S4 S3 S2 S1 S0
A0 D7 D6 D5 D4 D3 D2 D1 D0
(2) 写给从片的 ICW3
ID2 ID1 ID0 该从片
0 0 0 接入主片的 IR0
0 0 1 接入主片的 IR1
1 1 1 接入主片的 IR7
1 0 0 0 0 0 ID2 ID1 ID0
A0 D7 D6 D5 D4 D3 D2 D1 D0
从片的标志码例:某 8086微机系统中,主片 8259A的 IR2,IR6
引脚上分别接有从片 8259A,则主,从片的 ICW3初始化命令字设置如下:
主片初始化命令字,(口地址设为 20H,21H)
MOV AL,44H ; 44H为主片的 ICW3,表示其 IR6,
IR2上接有从片
OUT 21H,AL ;将 ICW3写入奇地址端口从片 1的初始化命令,(口地址为 30H,31H)
MOV AL,02H
OUT 31H,AL
从片 2的初始化命令,(口地址为 40H,41H)
MOV AL,06H
OUT 41H,AL
4,ICW4
1 0 0 SFNM BUF M/S AEOI 1
A0 D7 D6 D5 D4 D3 D2 D1 D0
0
标志位 用于 8088/
8086系统
0 正常的完全嵌套方式
1 特殊的完全嵌套方式
(1) SFNM,规定 8259A中断的嵌套方式
(单片使用时,两种方式一样。 )
SFNM=
① 正常的完全嵌套方式高级的中断
② 特殊的完全嵌套方式同级的或高级的中断注意:级联使用时,某一从片的 IRi对主片来说是同级的 (同级中断 )。
此处,要理解同级中断的概念 !
(to CPU)
INTA INT
从 8259A
IR7 IR6 … IR0 IR7 IR6 … IR0
INTA INT
CAS0
CAS1
CAS2
CAS0
CAS1
CAS2
主 8259A
INTA (from CPU)
INTR
… …
例如:
若主,从 8259A工作于固定优先权方式,从片的优先级为 IR0?IR1 IR7。 但对主片来说,从片的 IR0 ~ IR7 是同级的 。
1 缓冲方式
0 非缓冲方式
(2) BUF
=
(3) M/S
① 当 8259A 工作于缓冲方式时 (BUF=1),
M/S用于定义主、从芯片。
1 主 8259A
0 从 8259A
M/S =
② 当 8259A工作于非缓冲方式时 (BUF = 0),
SP引脚为输入,用于定义主从芯片,此时
M/S 不起作用。
(4) AEOI,规定中断的结束方式
(如何使 ISR中对应位清 0)
① AEOI = 1 自动中断结束方式当 CPU 发出第二个 后,ISR 中的相应位复位,此时,不能实现中断嵌套 。
INTA
② AEOI = 0 非自动中断结束方式由程序发出 EOI 命令 (由 8259A 的
OCW 实现 ),使 ISR 中相应位复位。
五,8259A 的初始化编程逻辑用 ICW1设置:是否级联?
请求信号的触发方式后面是否用 ICW4
用 ICW2设中断类型码是否为级联方式?
本片为主片吗?
设 ICW3各位对应
IR0~IR 7 的连接状况设 ICW3 高 5位为 0;
低 3位为标识码用 ICW4 吗?
用 ICW4 设:为特殊全嵌套方式?
为缓冲方式?
为自动 EOI方式?
为 8086/8088系统?
END
N
Y
N
N
Y
8259A的初始化流程注意:级联使用时,主,
从 8259A 都要作初始化操作 。
例,PC/XT 系统中 8259A的初始化编程
20H,21H为 8259A的端口地址,
在 BIOS 中,8259A的初始化程序段如下:
MOV AL,13H ; ICW1=0001,0011B,边沿触发,单片使用,; 要 ICW4.
OUT 20H,AL
MOV AL,08H ; ICW2=08H,IR0~IR7对应的中断类型号; 为 08H~0FH
OUT 21H,AL
MOV AL,09H ; ICW4=09H,正常的嵌套方式,; 非自动中断结束方式
OUT 21H,AL
六,8259A 的操作命令字对 8259A 进行初始化编程后,8259A
作好了接收中断请求输入的准备,在
8259A 工作期间可由操作命令字 OCW1~
OCW3 规定其各种工作方式 。
1,OCW1(中断屏蔽操作命令字)
设置或清除 IMR 的各个位。
1
A0 D7 D0
M7 M0…………
…………
Mi=1 表示 IRi被屏蔽例,设 OCW1= 06H,则表示 IR1,IR2 两个引脚上的中断申请被屏蔽,其他的中断申请 (IR0,IR3?IR7)则得到允许 。 8259A编程指令为:
MOV AL,00000110B ; OCW1屏蔽字
OUT 21H,AL ;屏蔽字写入奇地址口;的 OCW1寄存器
2,OCW2 (优先权循环方式和中断结束方式操作命令字 )
0 R SL EOI 0 0 L2 L1 L0
A0 D7 D6 D5 D4 D3 D2 D1 D0
标志位有两个作用:
(1) 8259A 工作于非自动中断结束方式时,如何复位 ISR 中的对应位?有两种方法,
SFNM
① 一般方法:令 SL = 0,EOI =1
将 OCW2写入 8259A后,将刚刚被服务的 IRi对应位复位。
② 特殊方法:令 SL = 1,EOI = 1
写入 OCW2后,使 L2L1L0指定的位复位。
L2 L1 L0
0 0 0
0 0 1
1 1 1
D0
D1
D7
ISR中的 Di
IR0
IR1
IR7
对应的 IRi
(2) 定义 8259A 的优先权工作方法
① R = 0 固定优先权方式
IR0? IR1? …? IR7
② R = 1,SL = 0 优先权自动循环方式例,IR7 IR6 IR5 IR4 IR3 IR2 IR1 IR0
初始优先权为,7 6 5 4 3 2 1 0
若 ISR = 0 1 0 1 0 0 0 0
则当 IR4
服务完毕后,优先权为,2 1 0 7 6 5 4 3
③ R = 1,SL = 1 优先权特殊循环方式此时,L2L1L0 规定循环开始时的最低优先权例,1 1? 0 0 1 0 1
IR5优先权最低此时,优先权为:
IR7 IR6 IR5 IR4 IR3 IR2 IR1 IR0
1 0 7 6 5 4 3 2
例:若使 8086系统中 8259A的优先级顺序为 IR3,IR4,IR5,IR6 IR7,IR0 IR1,IR2,试编写一段程序实现该优先顺序,设 8259A的偶地址为 20H。
根据题意要求,为实现上述优先级顺序,
应先确定 OCW2,然后将它写入 8259A的偶地址端口:
MOV AL,0C2H ; OCW2
OUT 20H,AL ;把 OCW2写入 8259A的偶地址端口 。
OCW2,R SL EOI 0 0 L2 L1 L0
1 1 0 0 0 0 1 0
例,试编一段程序,用以清除 8086系统中
8259A的 ISR第 6位( ISR6),8259A的偶地址为 20H。
为实现题意要求,应先确定 OCW2的内容,
然后将 OCW2写入 8259A的偶地址端口。
OCW2:
MOV AL,66H ; OCW2
OUT 20H,AL ;把 OCW2写入 8259A的偶地址端口。
R SL EOI 0 0 L2 L1 L0
0 1 1 0 0 1 1 0
3,OCW3
0 0 ESMM SMM 0 1 P RR RIS
A0 D7 D0
标志位
(特殊屏蔽方式和中断查询方式操作命令字 )
有三个作用:
(1) 设置和撤消特殊屏蔽工作方式
① 正常的屏蔽方式由 OCW1 设置 IMR 实现
② 特殊的屏蔽工作方式因此,可以通过设置或撤消特殊的屏蔽工作方式,动态改变优先权的结构 。
正常的屏蔽方式设置特殊的屏蔽方式只要 IMR中的对应位没有置,1”,
8259A就可以接受其中断请求。
撤消特殊的屏蔽方式正常的屏蔽方式
1SMM
1ESMM令
1SMM
0ESMM令
(2) 为 CPU 读取 8259A内部寄存器提供选择
IN AL,INTA1 ; IMR? AL
8259A 中的 IMR由 OCW1设置,对应奇地址端口,可以写入,也可以读出。
② 8259A 中 IRR,ISR 只能读出,不能写入,
都对应偶地址端口 。 此时,可先写 入
OCW3,OCW3中的 RR,RIS 规定从偶地址端口读出的是 IRR 或 ISR 的值 。
MOV AL,OCW3
OUT INTA0,AL
IN AL,INTA0 ; 若 OCW3中
RR RIS 则读出的是
1 1 ISR
1 0 IRR
例:试编写一段程序,以实现将 8086系统中 8259A的 IRR,ISR,IMR三寄存器的内容读出并送入存储器从 0080H开始的数组中,设
8259A的偶地址为 20H,奇地址为 21H。
MOV AL,0AH ; OCW3=0AH,指出要读 IRR
OUT 20H,AL ; OCW3写入 8259A的偶地址端口
IN AL,20H ;读回 IRR的内容
MOV [080H],AL ;将 IRR的内容存入从 080H开始的单元中
MOV AL,0BH ; OCW3= 0BH,指出要读 ISR
OUT 20H,AL
IN AL,20H ;读回 ISR的内容
MOV [ 081H ],AL ;将 ISR的内容存入内容
IN AL,21H ;读回 IMR
MOV [082H],AL ; IMR内容存入内存
(3) 使 8259A 和 CPU 的通信方式由中断方式?
查询方式某些情况下,当 IF设置为 0时,用查询方式为中断源服务。
令 OCW3 中的 P = 1,写入 OCW3后,
若之前有 IRi有效,8259A 把 CPU 的下一个读信号看作 信号,使 ISR 中最高优先权的某一位置位,同时送以下数据至 DB。
INTA
MOV AL,OCW3 ; 其中 P=1
OUT INTA0,AL ; 发 OCW3
IN AL,INTA0 ; 读偶地址端口此时,AL 中的数据
I W2 W1 W0
D7 D0
当前最高优先权
IRi对应的编 码
0 0 0
0 0 1
1 1 1
IR0
IR1
IR7
1 表示有中断请求
0 没有中断请求例,假如 8259A的 IR2输入引脚上有中断申请,但此时 8086CPU内部的中断允许标志 IF=
0,8086CPU应如何知道其 8259A的 IR2输入引脚上有中断请求?
为使 8086CPU知道其 8259A IR2引脚上有中断申请,可用中断查询方式来解决 (即 CPU先发一个查询命令 OCW3,然后接收 8259A的查询字 ),其程序如下:
OCW3为:
0 E S M M SMM 0 1 P RR R I S
0 0 0 0 1 1 0 0
MOV AL,0CH ; P= 1查命令 OCW3
OUT 20H,AL ;输出查询命令,即 OCW3
写入 8259A的偶地址端口
IN AL,20H ;读 8259A的查询字七,8259A 对 ICW,OCW的识别
8259A 只占两个端口,但 ICW 有 4个,
OCW有 3个。
1,A0 = 0 (偶地址端口 ) 写入的有:
ICW1,OCW2,OCW3
(D4=1)?
0D
0D
4
3?
0D
1D
4
3
用标志位识别
2,A0 = 1 (奇地址端口 ) 写入的有:
ICW2? ICW3? ICW4? OCW1
按写入顺序识别注意,初始化过程中可能没有 ICW3或 ICW4,
应根据具体情况确定 。
8.7 输入输出及 8259A应用举例一、输入输出应用举例 (流水灯及其控制 )
1,电路原理及说明
74LS273锁存器的输出控制 LED发光管的亮,暗 (1,亮,0,暗 ),由 CPU通过
74LS244缓冲器构成的输入口读取 S1~ S4
的开关状态,进行左,右移位以确定流水灯的方向和显示模式 。
··
··
D7
D6
D5
D4
D3
D2
D1
D0
D8
D7
D6
D5
D4
D3
D2
D1
O8
O7
O6
O5
O4
O3
O2
O1
CLK CLR +5V
1Y1
1Y2
1Y3
1Y4
1A1
1A2
1A3
1A4
2A1
2A2
2A3
2A4
2Y1
2Y2
2Y3
2Y4
1G
2G
7 4 L S 2 7 3
IOR
IOW
Y5
+5V
S1 S4
S2 S3Y
5=350H-353H
7 4 L S 2 4 4
2,源程序及其说明
DATA SEGMENT
DIS0 DB ‘PRESS ANY 2 OF THE KEYS TO QUIT ’,24H
DIS1 DB ‘S1,LEFT-SHIFT,24H
DIS2 DB ‘S2; RIGHT-SHIFT’,24H
DIS3 DB ‘S3; 1H-7L’,24H
DIS4 DB ‘S4; 7H-1L’,24H;以上为提示信息
FLAG1 DB 0 ;左移
FLAG2 DB 0 ; 1 亮 7 暗
DATA ENDS
CODE SEGMENT
MAIN PROG FAR
ASSUME CS,CODE,DS,DATA
START,MOV AL,3 ;屏幕初始化,设置视屏显示模式为 03h,; 80× 25行 16色
MOV AH,0
INT 10H ; BIOS视频服务中断
MOV AX,DATA
MOV DS,AX
MOV AH,2 ;在 CRT上显示提示说明
MOV BH,0 ;页号
MOV DX,0614H ; DH=行号,DL=列号 置光标位置
INT 10H
MOV DX,OFFSET DIS0 ;要显示字符串,DIS0— DIS4的内容
MOV AH,3 ; DOS功能调用号
INT 21H ; DOS功能调用;重置光标位置,显示提示信息,S1,LEFT— SHIFT”
MOV AH,2
MOV BH,0
MOV DX,0914H
INT 10H
MOV DX,OFFSET DIS1
MOV AH,9
INT 21H;重置光标位置,显示提示信息,S2,RIGHT— SHIFT”
MOV AH,2
MOV BH,0
MOV DX,0A14H
INT 10H
MOV DX,OFFSET DIS2
MOV AH,9
INT 21H;重置光标位置,显示提示信息,S3,1H— 7L”
MOV AH,2
MOV BH,0
MOV DX,0B14H
INT 10H
MOV DX,OFFSET DIS3
MOV AH,9
INT 21H;重置光标位置,显示提示信息,S4,1H— 7L”
MOV AH,2
MOV BH,0
MOV DX,0C14H
INT 10H
MOV DX,OFFSET DIS4
MOV AH,9
INT 21H
MOV AH,01H ;设输出控制字 01H (1亮 7暗 )
AA,MOV DX,0350H
MOV AL,AH
OUT DX,AL
MOV AL,FLAG1 ;取移位标志,FLAG=0,左移;; FLAG=FFH,右移
CMP AL,0
JNE RR1
ROL AH,1
JMP RR ;转读按键程序
RR1,ROR AH,1
RR,MOV DX,0350H ;读按键
IN AL,DX
AND AL,0F0H
CMP AL,0F0H
JNE KP ;有键按下,转 KP键处理
BBZZ,MOV CX,5 ;延时控制,延时时间过短,可置; CX=1000,0等
BB,MOV BX,0
BB1,DEC BX
JNZ BB1
LOOP BB
JMP AA ;转流水灯控制输出
KP,CMP AL,70H ; 键处理
JNE KP1
MOV FLAG1,0 ; 设置左移标志 FLAG1=0
JMP BBZZ ;转延时控制输出
KP1,CMP AL,0B0H
JNE KP2
MOV FLAG1,0FFH ; S2按下,设置右移标志; FLAG1=FFH
JMP BBZZ ;转延时控制输出
KP2,CMP AL,0D0H
JNE KP3
MOV AL,FLAG2 ; S3按下,显示反转判断,; FLAG2=0,1亮 7暗;; FLAG2=FFH,7亮 1暗
CMP AL,0FFH
JNE KP20
XOR AH,0FFH ; 显示反转
MOV FLAG2,0
KP20; JMP BBZZ ;转延时控制输出
KP3,CMP AL,0E0H
JNE BACK ;同时按下两个以上键,程序终止退出
MOV AL,FLAG2 ;显示反转判别
CMP AL,0
JNE KP30
XOR AH,0FFH ; 显示反转
MOV FLAG2,0FFH
KP30; JMP BBZZ
BACK,MOV AL,0 ;关灯,程序终止退出
MOV DX,0350H
OUT DX,AL
MOV AX,4C00H
INT 21H
MAIN ENDP
CODE ENDS
END START
二,8259A应用举例
1,电路原理及说明采用微机主板上的 8259A中断控制器,
中断请求信息接至 IRQ2,可选择 8253的 OUT2
和 OUT1,ADC0809的 EOC或外部中断请求信号 INT1为中断源 。 本例中选择 INT1为中断源,
在主程序中显示流水灯 (1亮 7暗 ),按下 S1,流水灯反转 (1暗 7亮 )并右移 。
D2
D0
D3
D1
1Y1
1Y2
1Y3
1Y4
1A1
1A2
1A3
1A4
2A1
2A2
2A3
2A4
2Y1
2Y2
2Y3
2Y4
7 4 L S 2 4 4
1G
2G
IOR
Y4
+5VY4=358H- 353H
IRQ2
ADC8889 EOC
8253 OUT1
8253 OUT2
INT1
S1
2,源程序及其说明
TCC1 EQU 0FFFFH
TCC2 EQU 0FFFFH
DATA SEGMENT
DA DB ‘[S1],INTERRUPT ’,24H; 提示信息 ;
DDA DB ‘[S2- S4],QUIT,24H ’ ; 提示信息 ;
DDBB DB 01H ;输出控制字 (LED)
DATA ENDS
STACK SEGMENT PARA STACK ‘STACK’
DW 256 DUP (?)
STACK ENDS
CODE SEGMENT
MAIN PROC FAR
ASSUME CS,CODE,DS,DATA,ES,DATA
START,PUSH DS
MOV AX,0
PUSH AX
MOV AX,DATA
MOV ES,AX
MOV DS,AX; 设置窗口,左上角 (CH,CL),右下角 (DH,DL)
MOV CX,0 ;窗口页上滚
MOV DX,184FH
MOV BH,7
MOV AL,0 ; 屏幕清 0
MOV AH,6 ; 调用号
INT 10H; 设置光标位置,显示提示信息
MOV AH,2
MOV BH,0
MOV DX,0614H
INT 10H ; 将光标设置在 6行 20列
MOV DX,OFFSET DA
MOV AH,9
INT 21H ; 显示字符串,[S1]INTERRUPT”; 设置光标位置,显示提示信息
MOV AH,2
MOV BH,0
MOV DX,0714H
INT 10H ; 将光标移到 7行 20列位置
MOV DX,OFFSET DDA
MOV AH,9
INT 21H ; 显示字符串,[S1- S4],
QUIT”; 读取 0AH号原中断向量,并压无栈保护
CLI ; 关中断
MOV AL,0AH ; 保存原有中断向量
MOV AH,35H ; 读取 0AH号的中断向量
INT 21H ; 返回向量在 ES,BX中
PUSH ES ; 保留读取的向量值
PUSH BX; 置入新的中断向量
PUSH DS
MOV DX,OFFSET SHOW ;装入中断向量
MOV AX,SEG SHOW ; 中断服务程序 SHOW的入口地址
MOV DS,AX ; 设置 0AH号中断向量
MOV AL,0AH ; 即将 DS,DX内容放入向量表中
MOV AH,25H
INT 21H
POP DS; 开放 IR2
IN AL,21H ; 读入原 IMR
AND AL,11111011B ; 设 IMRR的 D2=1,其余位不变
OUT 21H,AL ; 写 1MR,即开放 1R2,其余的屏蔽字不变
STI ; 开中断; 显示流水灯
TT,MOV AL,DDBB ; 显示流水灯
ROL AL,1
MOV DDBB,AL
MOV DX,350H ; LED显示端口,‘1’ 对应发光
OUT DX,AL
MOV CX,500H ; 延时
BB,MOV BX,8000H
BB1,DEC BX
JNZ BB1
LOOP BB; 读取键值,判断是否退出
IN AL,DX
AND AL,0E0H ; 读入键盘信号,有 S2- S4中任一键按下,退出
CMP AL,0E0H
JE TT ; 否,继续流水灯方式; 恢复原中断向量,关灯并退出
CLI ; 是,准备退出
IN AL,21H ; 写 IMR
OR AL,00000100B ; 恢复原来的 1MR,屏蔽 1R2
OUT 21H,AL
POP DX ; 恢复原有中断向量
POP DS
MOV AL,0AH ; 设置 0AH号中断向量
MOV AH,25H
INT 21H
STI ; 开中断
MOV DX,350H
MOV AL,00H
OUT DX,AL ; 关闭所有的 LED显示灯
RET ; 返回 DOS
MAIN ENDP; 中断服务程序
SHOW PROC FAR ; 中断处理 (服务 )程序
CLI ; 关中断
PUSH AX
PUSH CX ; 保护现场
AGAIN,MOV CX,1000 ; 流水灯反转并右移
MOV AL,7FH
ROR AL,1
MOV DX,350H
OUT DX,AL
LOOP AGAIN
EXIT,MOV AL,20H
OUT 20H,AL ; 送中断结束命令字
POP CX
POP AX ; 恢复现场
IRET
SHOW ENDP
CODE ENDS
END START
8.8 8086CPU中断响应流程内部中断?
NMI?
INTR?
TF= 0?
执行下条指令完成当前指令
IF= 1?
Y
N
Y
N
Y
N Y
N
N
Y
第一个中断响应周期
AD7 ~ AD0 浮空第二个响应周期,取中断类型码
A
内部中断?
NMI?
INTR?
TF= 0?
执行下条指令完成当前指令
IF= 1?
标志进栈保存 TF,将 IF,TF清 0
断点地址进栈查中断向量表,转中断服务程序保护现场中断服务恢复现场开中断,返回
Y
N
Y
N
Y
N Y
N
N
Y
中断响应流程第一个中断响应周期
AD7 ~ AD0 浮空第二个响应周期,取中断类型码标志进栈保存 TF,将 IF,TF清 0
断点地址进栈查中断向量表,转中断服务程序保护现场中断服务恢复现场开中断,返回
A
内部中断?
NMI?
INTR?
TF= 0?
执行下条指令完成当前指令
IF= 1?
标志进栈保存 TF,将 IF,TF清 0
断点地址进栈查中断向量表,转中断服务程序保护现场中断服务恢复现场开中断,返回
Y
N
Y
N
Y
N Y
N
N
Y
中断响应流程第一个中断响应周期
AD7 ~ AD0 浮空第二个响应周期,取中断类型码
1,8086CPU各种类型中断的优先级;
2,CPU响应 INTR的条件;
3,INTR与其它类型中断响应过程的异同。
请同学们总结:
CS
IP
CS
IP
控制逻辑中断服务寄存器
ISR
优先权电路
PR
中断请求寄存器
IRR
中断屏蔽寄存器 IMR
读写控制逻辑级联缓冲比较器数据总线缓冲器D0~D7
RD
WR
CS
A0
CAS0
CAS1
CAS2
ENSP
INTA INT
IR0
IR1
IR7
…
8259A
从片 A
8259A
主片
8259A
从片 B
INT
CAS0
CAS1
CAS2
IR0
INT
CAS0
CAS1
CAS2
IR0
INT
CAS0
CAS1
CAS2
IR7 IR6 IR3 IR0 …SP/EN SP/EN
CS A0 INTA CS A0 INTA CS A0 INTA
…IR7 SP/EN …IR7
AB
CB
DB
GND GND Vcc