第 6章 输入输出及中断技术主要内容,
I/O端口及其编址方式简单接口芯片及其应用基本输入输出方法中断的基本概念及工作过程中断控制器 8259
6.1 输入输出接口主要内容:
I/O接口与 I/O端口的概念
I/O端口的编址方式
端口地址译码
数据传送方式一,I/O接口与端口
I/O接口:
将外设连接到总线上的一组逻辑电路的总称
实现外设与主机之间的 信息交换
I/O端口:
接口中的寄存器
I/O接口要解决的问题
速度匹配 (Buffer)
信号的驱动能力 (电平转换器、驱动器 )
信号形式和电平的匹配 (A/D,D/A)
信息格式 (字节流、块、数据包、帧 )
时序匹配 (定时关系 )
总线隔离 (三态门 )
接口的功能
数据的缓冲与暂存
信号电平与类型的转换
增加信号的驱动能力
对外设进行监测、控制与管理,中断处理二,I/O端口的编址方式数据端口状态端口控制端口端 口
I/O端口
CPU
数据状态控制外设
I/O端口的编址方式统一编址独立编址端口与内存的统一编址特点:
指令及控制信号统一
内存地址资源减少内存地址
960KB
I/O地址
64KB
00000H
F0000H
FFFFFH
端口的独立编址特点:
内存地址资源充分利用
能够应用于端口的指令较少内存地址
I/O
地址
00000H
FFFFFH
FFFFH
0000H
端口的独立编址
8
0
8
8
总线
A19-A0
A15-A0
MEMR,MEMW
IOR,IOW,AEN
存储器输入 /输出
8088/8086的 I/O端口编址
采用 I/O独立编址方式 (但地址线与存储器共用 )
地址线上的地址信号用 IO/M来区分
I/O操作只使用 20根地址线中的 16根,A15~ A0
可寻址的 I/O端口数为 64K(65536)个
I/O地址范围为 0~ FFFFH
IBM PC只使用了 1024个 I/O地址 (0~ 3FFH)
三,I/O地址的译码目的:
确定端口的地址参加译码的信号:
IOR,IOW,A15 ~ A0
OUT指令将使总线的 IOW信号有效
IN指令将使总线的 IOR信号有效
I/O地址的译码
当接口只有一个端口时,16位地址线 一般 应 全部参与译码,译码输出直接选择该端口;当接口具有多个端口时,则 16
位地址线的高位 参与译码(决定接口的基地址),而低位则用于确定要访问哪一个端口
I/O地址的译码
某外设接口有 4个端口,地址为 2F0H~
2F3H,则其基地址为 2F0H,由 A15~ A2
译码得到,而 A1,A0用来确定 4个端口中的某一个连接四,I/O数据的传送方式并行 —— 一个数据单位同时传送串行 —— 数据按位传送
6.2 简单接口电路掌握:
接口电路的分类及特点
两类简单接口芯片的应用一、接口的基本构成数据线控制线状态线
DB
CB
AB
数据输入寄存器
(or 三态门 )
数据输出寄存器
(锁存器 )
状态寄存器
(or 三态门 )
命令寄存器译码电路控制逻辑接口的基本构成
数据输入 /输出寄存器 —— 暂存输入 /输出的数据
命令寄存器 —— 存放控制命令,用来设定接口功能、工作参数和工作方式
状态寄存器 —— 保存外设当前状态,以供 CPU读取接口的基本构成
CPU I/O
接口外设数 据端口地址控 制数 据状 态控 制二、接口的类型及特点输入接口输出接口接 口接口特点输入接口:
要求对数据具有控制能力(常用三态门实现)
输出接口:
要求对数据具有锁存能力(常用锁存器实现)
三、三态门接口高电平、低电平,高阻态三态门接口三态门的工作波形:
A0~A15
IOR
译码输出
D0~D7 开关状态地址有效
74LS244
含 8个三态门的集成电路芯片
在外设具有数据保持能力时用来输入接口
74LS244应用例 教材 p252
P251图三态门接口应用例
利用三态门作为输入接口(接口地址 380H) 接到地址范围为 70000H~ 71FFFH的 EEPROM芯片的 READY/BUSY端,当三态门输出高电平时,
可向 98C64A写入一个字节数据,输出低电平时则不能写入。画芯片与系统的连接图三态门接口应用例
D0~D7
A0
A12

WE
OE
READY/BUSY

A0
A12
MEMW
MEMR
高位地址信号
D0~D7
D0
380H
CE译码
IOR
四、锁存器接口
通常由 D触发器构成
特点:
具有对数据的锁存能力不具备对数据的控制能力常用锁存器芯片
74LS273
不具备数据的控制能力
74LS374
具有对数据的控制能力
P254图锁存器芯片 74LS374
D0~D7
Q0
Q7
..
.
OE
CP译码器
D0~D7
Q0
Q7
..
.
OE
CP
译码器做输出口,做输入口,
外设自外设
I/O接口综合应用例
根据开关状态在 7段数码管上显示数字或符号
设输出接口的地址为 F0H
设输入接口地址为 F1H
当开关的状态分别为 0000~ 1111时,在
7段数码管上对应显示 ’0’~ ’F’
符号 形状 7段码.gfedcba 符号 形状 7段码.gfedcba
’0’ 00111111 ’8’ 01111111
’1’ 00000110 ’9’ 01100111
’2’ 01011011 ’A’ 01110111
’3’ 01001111 ’B’ 01111100
’4’ 01100110 ’C’ 00111001
’5’ 01101101 ’D’ 01011110
’6’ 01111101 ’E’ 01111001
’7’ 00000111 ’F’ 01110001
O1 I1
O2 I2
O3 I3
O4 I4
E1
K0~ K3
+5V
G
G2A
G2B
C
B
A
≥1
74LS244
D0 Q0
| Q1
D7 Q2
Q3
Q4
CP Q5
Q6
Q7
a
b
c
d
e
f
g
DP
7406
反相器
74LS273 Rx8
≥1
74LS138
D0~ D7
IOW#
IOR#
Y0
Y1
F0H = 0000 0000 1111 0000
F1H = 0000 0000 1111 0001
&
≥ 1
A7~ A4
A15~ A8
A3
A2
A1
A0
D0
D1
D2
D3
译码器
I/O接口综合应用例 —— 程序段
……
Seg7 DB 3FH,06H,
5BH,4FH,66H,6DH,
7DH,07H,7FH,67H,77H,
7CH,39H,5EH,79H,71H
……
LEA BX,Seg7
MOV AH,0
GO,MOV DX,0F1H
IN AL,DX
AND AL,0FH
MOV SI,AX
MOV AL,[ BX+SI]
MOV DX,0F0H
OUT DX,AL
JMP GO
简单 I/O扩展实验一、实验目的
1、熟悉 74LS273,74LS244的应用接口方法。
2、掌握输入、输出的基本方法。
二、实验内容
1、用逻辑电平开关作为 74LS244的输入,用发光二极管作为
74LS273 的输出。编写程序使得逻辑电平开关的输入状态从发光二极管上显示出来。
三、实验原理图四、连线指导
1、将 74LS244的输入 1A1-1A4,2A1-2A4分别与逻辑电平开关电路的 K1-K8相连;
2、将 74LS273的输出 SO0-SO7分别与发光二极管电路的 LED1-
LED8相连;
五、编程运行
1、实现功能是:当逻辑电来开关拔上时为 5V,拔下时为 0V。 发光二极管输入‘ 1为亮,’ 0'为灭。
6.3 基本输入 /输出方法无条件传送查询式传送中断方式传送直接存储器存取 (DMA)
一、无条件传送
适用于总是处于准备好状态的外设
优点:软件及接口硬件简单
缺点:只适用于简单外设,适应范围较窄无条件传送例
读取开关的状态
当开关闭合时,输出编码使发光二极管亮
D
CP
Q
D0
D1
输出口地址 38F3H
输入口地址 38F0H
+5V
1
二、查询工作方式适用场合:
外设并不总是准备好
对传送速率和效率要求不高对外设及接口的要求:
外设应提供设备状态信息
接口应具备状态端口查询工作方式
优点:软件比较简单
缺点,CPU效率低,数据传送的实时性差,速度较慢单一外设时的工作流程超时?
READY?
与外设进行数据交换超时错读入并测试外设状态
Y
N
Y
N
传送完?
防止死循环复位计时器
N
Y
查询工作方式例外设状态端口地址为 03FBH,第 5位 (bit5)为状态标志( =1忙,=0准备好)
外设数据端口地址为 03F8H,写入数据会使状态标志置 1 ;外设把数据读走后又把它置 0。
试画出其电路图,并将 DATA下 100B数输出
D5
D7-D0
A9
|
A3
≥1
&
A15
|
A10
≥1
IOW
D7-D0
3F8H
外设
D7
D6
D5
D4
D3
D2
D1
D0
BUSY
CP
Q7
Q6
Q5
Q4
Q3
Q2
Q1
Q0
状态端口
G
G2A
G2B
C
B
A
A2
A1
A0
74LS138
Y0
≥1
IOR
Y3
OE
74LS374
3FBH
程序段?
三、中断控制方式特点:
外设在需要时向 CPU提出请求,CPU再去为它服务。服务结束后或在外设不需要时,CPU可执行自己的程序
优点,CPU效率高,实时性好,速度快
缺点:程序编制较为复杂以上三种 I/O方式的共性均需 CPU作为中介:
软件,外设与内存之间的数据传送是通过 CPU执行程序来完成的( PIO方式)
硬件,I/O接口和存储器的读写控制信号、地址信号都是由 CPU发出的
缺点:程序的执行速度限定了传送的最大速度(约为几十 KB/s)
四,DMA控制方式特点:
外设直接与存储器进行数据交换,CPU
不再担当数据传输的中介者
总线由 DMA控制器( DMAC)进行控制
( CPU要放弃总线控制权),内存 /外设的地址和读写控制信号均由 DMAC提供
DMA控制方式
DMAC 外设接口CPU
QRD
MEM
DACK
HOLD
HLDA

BUS
控制信号
DMA控制方式的工作过程
外设向 DMA控制器发出,DMA传送请求”信号 DRQ
DMA控制器收到请求后,向 CPU发出“总线请求”信号 HOLD
CPU在完成当前总线周期后会立即发出 HLDA
信号,对 HOLD信号进行响应
DMA控制器收到 HLDA信号后,就开始控制总线,并向外设发出 DMA响应信号 DACK
DMA控制方式的工作过程
DMA控制器送出地址信号和相应的控制信号,
实现外设与内存或内存与内存之间的直接数据传送例:从外设向内存传送一个字节
DMAC向 I/O接口发出读信号,同时往地址总线上发出存储器的地址和存储器写信号和 AEN
信号。
DMA控制方式的工作过程
DMA控制器自动修改地址和字节计数器,
并判断是否需要重复传送操作。当规定的数据传送完后,DMA控制器就撤销发往 CPU
的 HOLD信号。 CPU检测到 HOLD失效后,
紧接着撤销 HLDA信号,并在下一时钟周期重新开始控制总线。
DMA的三种传送方式
连续传送(块传送):
DMAC在申请到总线后,将一块数据传送完后才释放总线,而不管中间 DREQ是否有效。
单次传送(每次传送一个字节):
每个 DMA周期只传送一个字节就立即释放总线。
按需传送(猝发传送):
只要 I/O接口的数据缓冲可用,就可进行传送。
此时 I/O接口需要有一定大小的 FIFO缓冲区。
数据块传送:
Y
N
允许 DMA
DMA请求?
DMAC请求总线
CPU响应,DMAC获总线控制权
DMA传送一个字节块结束?
地址增量,计数器减量
DMAC释放总线
Y
N
每次传送一个字节:
N
Y
N
允许 DMA
DMAC请求总线
CPU响应,DMAC获总线控制权
DMA传送一个数据块结束?
释放总线至少一个总线周期地址增量,计数器减量
DMAC释放总线
Y
测试 I/O的 DREQ
DMA请求?
按需传送:
N
Y
CPU响应,DMAC获总线控制权
DMA传送一个字节块结束?
测试 I/O的 DREQ
有效?
地址增量,计数器减量释放总线,请求中断无效,释放总线允许 DMA
DMA请求?
DMAC请求总线
Y
N
Y
N
DMA控制方式优点:
数据传输 由 DMA硬件来控制,数据 直接在内存和外设之间交换,可以达到很高的传输速率(可达几 MB/s)
6.4 中断技术掌握:
中断的基本概念
中断响应的一般过程
中断向量表及其初始化
8088/8086中断系统一、中断的基本概念中断:
CPU执行程序时,由于发生了某种随机的事件
(外部或内部 ),引起 CPU暂时中断正在运行的程序,转去执行一段特殊的服务程序 (称为中断服务程序或中断处理程序 ),以处理该事件,
该事件处理完后又返回被中断的程序继续执行,
这一过程称为中断。
中断源
引起 CPU中断的事件,发出中断请求的来源内部中断外部中断异常中断软件中断可屏蔽中断非屏蔽中断异常事件引起中断指令引起
INTR中断
NMI中断引入中断的原因
提高数据传输率
避免了 CPU不断检测外设状态的过程,
提高了 CPU的利用率
实现对特殊事件的实时响应二、外部中断响应的一般过程
中断请求
中断判优及中断源识别
中断响应
中断处理(服务)
中断返回中断请求
中断请求信号应保持到中断被处理为止
CPU响应中断后,中断请求信号应及时撤销
NMI
INTR
中断源识别
软件查询法
中断矢量法。由中断源提供中断类型号,
CPU根据类型确定中断源中断判优 —— 要解决的问题
对同时产生的中断:
首先处理优先级别较高的中断;若优先级别相同,则按先来先服务的原则
对非同时产生的中断:
低优先级的中断程序允许被高优先级的中断源所中断中断嵌套中断判优 —— 控制方法软件判优顺序查询中断请求,先查询的先服务
(即先查询的优先级别高)
硬件判优链式判优、并行判优(中断向量法)
用软件确定中断优先权软件查询流程图优先权管理电路三态缓冲器译码锁存器
G
INTR
D7 ~D0
A15~A0
RD
中 断 源 A
中 断 源 B
中 断 源 C
……

IOM
在 中 断 服 务 中读 入 请 求 状 态
A 申 请?
B 申 请?
中 断 返 回为中断源 A
服务的程序段
Y
C 申 请?
为中断源 B
服务的程序段为中断源 C
服务的程序段 ……
Y
Y
采用软件查询方式的特点:
询问的次序,即为优先权的次序。
硬件简单。
由查询转至相应的服务程序的时间长,
尤其在中断源较多的情况。
中断向量法根据中断向量决定优先权,由专门的中断控制电路处理。
链式判优电路(菊花链)
用硬件电路控制优先权。
用硬件确定中断优先权菊花链逻辑电路
INTAin
IREQ
INTR
&
=1
≥1
INTAout
DB
三态门 中断向量码
E
外设接口中断确认菊花链逻辑电路中断响应
向中断源发出 INTA中断响应信号;
保护断点。包括 FLAGS,CS和 IP
获得中断服务程序入口地址固定入口法中断向量法中断处理中断服务子程序的特点:
为“远过程”
用 IRET指令返回中断服务子程序完成的工作
保护现场
开中断( STI)
中断处理
关中断( CLI)
恢复现场
中断返回中断返回
执行 IRET指令,使 IP,CS和 FLAGS从堆栈弹出执行一条指令最后一个总线周期的最后一个 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
三,8088/8086中断系统内部中断外部中断除法错中断 0
单步中断 1
断点中断 3
溢出中断 4
软件中断 N
非屏蔽中断 2
可屏蔽中断
256
个中断源
NMI
INTR
中断逻辑软件中断指令溢出中断除法错单步中断非屏蔽中断请求中断控制器
8259A
PIC
8086/8088CPU内部逻辑断点中断 可屏蔽中断请求
n
4
3
0
1
2
8086/8088中断源类型:
中断向量表


00000H
003FFH
1KB
中断向量表
存放各类中断的中断服务程序的入口地址
建立在内存起始地址为 0— 3FFH的 1KB特殊空间。
使中断向量码与中断服务程序地址建立特殊关系若中断向量码为 n,则其在中断向量表上的地址为 4n— 4n+3共占 4个字节,其中
4n,4n+1中存放与其对应的中断服务程序的偏移地址,4n+2,4n+3中存放段地址。
例:写出中断向量码为 80的中断向量在中断向量表中的存放位置。
偏移地址低位 ——
偏移地址高位 ——
段地址低位 ——
段地址高位 ——
若已知中断向量表如下:
计算该中断对应的中断服务程序入口地址。
05H00141H
80H00140H
10H00143H
00H00142H
程序入口地址为 10580H
中断向量码为 30H的中断服务程序的入口地址为 20120H,试画出这个中断向量在中断向量表中的存放情况。
8088内部中断响应过程特点:
无 INTA周期
中断类型码固定或由指令给出
8088内部中断响应过程响应过程步骤:
① PUSH FLAG
② LET ( TF=1)
③ CLI/CLT IF,TF
④ PUSH CS
⑤ PUSH IP
⑥ ( I P) =( TYPE*4+1),( TYPE*4+0)
⑦ ( CS) =( TYPE*4+3),( TYPE*4+2)
8088外部中断响应过程可屏蔽中断:
① 第 1个 INTA,PIC进行优先级排队判优处理
② 第 1个 INTA,PIC把中断类型码放到 DB上,由 CPU读入
③ PUSH FLAG
④ LET TEMP = TF
⑤ CLEAR IF,TF
⑥ PUSH CS
⑦ PUSH IP
⑧ ( I P) =( TYPE*4+1),( TYPE*4+0)
⑨ ( CS) =( TYPE*4+3),( TYPE*4+2)
NMI中断响应过程与内部中断类似时序

p273
8088/8086中断系统的优先级
优先级从高到低的顺序为:
–内部中断
–NMI中断
–INTR中断
–单步中断中断响应和处理流程 p274
当 NMI,INTR、单步和除法错中断同时产生时,响应顺序为:
响应除法错中断响应 NMI中断响应 INTR中断响应单步中断级别高的中断可以中断级别低的中断服务程序
6.5 中断控制器 8259
了解:
8259的主要引线及结构掌握:
8259的各种工作方式
8259的初始化编程
中断程序设计的一般过程和方法可编程中断控制器 Intel 8259A
在微 机系统中,可以使用 8259A
扩展外部中断,Intel 8259A 可编程中断控制器,主要有以下功能:
3,在中断响应周期,8259A 可提供相应的中断类型号 。
1,1片 8259A 能管理 8级中断,通过级联用 9
片 8259A可以构成 64 级主从式中断系统 。
2,每一级中断可以屏蔽或允许。
4,可编程使 8259A 工作在多种不同的方式。
一,8259A的外部引脚及内部结构
1,中断控制器 Intel 8259A功能
2,8259A的引线
8259A的引线
1
2
3
4
5
6
7
8
9
10
11
12
13
14G N D
C A S
1
C A S
0
D
0
D
1
D
2
D
3
D
4
D
5
D
6
D
7
WR
RD
CS 28 V
CC
27 A
0
26 I N T A
25
24
23
22
21
20
19
18
17
16
15
IR
7
IR
6
IR
5
IR
4
IR
3
IR
2
IR
1
IR
0
I N T
EN/ SP
C A S
2
数据总线( 双向)
RD
WR
CS
C A S
2
~ C A S
0
I N T
I N T A
IR
0
~ IR
7
D
7
~ D
0
读输入写输入命令选择地址选片级连线从程序/ 允许缓冲中断输出中断响应输入中断请求输入
A
0
EN / SP
引脚名 引脚说明
8259A内部逻辑框图
3.内部 结构
IR
0
IR
1
IR
2
IR
3
IR
4
IR
5
IR
6
IR
7
中断请求寄存器
( I R R )
优先权电路中断服务寄存器
( I S R )
控 制 逻 辑
I N T A I N T
中断屏蔽寄存器 ( I M R )
内部总线数据总线缓冲器
D
7
~ D
0
读/ 写逻辑
RD
WR
A
0
CS
级连缓冲/ 比较器
C A S
0
C A S
1
C A S
2
EN / SP
8位寄存器,用于寄存所有要求服务的中断请求信号。
用于识别和管理
IRR中各位的优先权级别用于寄存所有正在被服务的中断级用于寄存 IR0— IR7
的中断屏蔽标志负责向 CPU发中断请求信号 INT和接收来自 CPU的中断响应信号 INTA,并产生 8259
内部所需的各种控制信号。
8259A与标准系统总线的连接
CS
A
0
D
7
~ D
0
RD WR
I N T I N T A
C A S
0
C A S
1
C A S
2
EN / SP
IR
0
IR
1
IR
2
IR
3
IR
4
IR
5
IR
6
IR
7
译码
A
7
…A
1
A
0
OR / I OW / I
I N T
I N T A
数据总线 ( 8 )
控制总线地址总线 ( 1 6 )
从程序/ 允许缓冲器
8 2 5 9 A
二,8259的工作过程
8259A应用于 8080/8085和 8088/8086系统中时,它的中断响应顺序有所不同,下面分别主要说明 8088/8086。
① 当有一条或若干条中断请求输入线 ( IR7~IR0) 变高,
则使中断请求寄存器 IRR的相应位置位 。
② 若中断请求线中至少有一条是中断允许的,则 8259A由
INT引脚向 CPU送出中断请求信号 。
③ 若 CPU是处在开中断状态,则在当前指令执行完以后,
用 INTA信号作为响应 。
④ 8259A在接收到 CPU的 INTA信号后,使最高优先权的
ISR位置位,而相应的 IRR位复位。但在此周期中,8259A并不向系统数据总线送任何内容。
⑤ 8088/8086CPU将启动另一个中断响应周期,输出另一个 INTA脉冲。 在这个周期,8259A向数据总线输送一个 8位的指针(向量),CPU读取此向量并把它乘以 4,就可以从中断服务程序入口地址表中取出中断服务程序的入口地址(包
⑥ 这样中断响应周期就完成了,CPU就可以转至中断服务程序。若 8259A工作在 AEOI模式,则在第二个 INTA脉冲结束时,使中断源在 ISR中的相应位复位;否则,直至中断服务程序结束发出 EOI命令,才使 ISR中的相应位复位。
三,8259的工作方式
1 查询与读状态
CPU可以通过命令字查询 8259,或读 IRR,ISR及 IMR的内容来了解 8259的工作状态。
2 中断屏蔽方式
8259的 8个中断请求线上的每个中断请求都可以写入相应的屏蔽字,实现是否屏蔽。中断屏蔽的方式有两种。
普通屏蔽方式在正常情况下,当一个中断请求被响应时,8259将禁止所有同级或低级的中断请求。
特殊屏蔽方式在特殊情况下,希望较低优先级的中断请求也能允许产生中断。
3、缓冲模式
在大系统中,要求数据总线有总线缓冲器 。 8259A与这种带总线缓冲器的系统总线连接的方式称 缓冲器方式 。
在小系统中,则 8259A不需要总线缓冲器而是将其直接接至数据总线 。 8259A与这种不需总线缓冲器而直接连到系统总线的方式称 非缓冲器方式 。
4 中断嵌套方式
8259的中断嵌套方式分为完全嵌套和特殊完全嵌套两种。
完全嵌套中断优先权管理为固定方式(高 IR0— IR7低),
在 CPU中断服务期间,只允许响应比当前服务的中断优先级高的中断请求进入,对于同级或低级的中断请求禁止响应。
特殊完全嵌套与完全嵌套相似,但使用在多片级联时,在 CPU中断服务期间,可允许同级中断请求进入,常用于多片级联中的主片。
5 中断优先权方式
8259的中断优先权的管理方式有固定优先权方式和循环优先权方式两种。
固定优先权方式在固定优先权方式中,IR0—IR7的中断优先权级别是由系统确定好的,它们由高到低( IR0—IR7) 顺序排列。
循环优先权方式
自动优先权循环当某一中断请求 IRi 服务结束后,该中断的优先权降为最低,IRi+1
变为最高,依次循环。
指定优先权循环可利用命令指定最低优先级。若令 IR3最低,则 IR4最高 …
( a )
0
IR
7
1 0 1 0 0 0 0
7 6 5 4 3 2 1 0
最低优先权 最高优先权
IR
6
IR
5
IR
4
IR
3
IR
2
IR
1
IR
0
,I R,状态优先权状态
0
IR
7
1 0 0 0 0 0 0
IR
6
IR
5
IR
4
IR
3
IR
2
IR
1
IR
0
2 1 0 7 6 5 4 3
最低优先权最高优先权
,I R,状态优先权状态
( b )
6 中断结束方式当某个中断服务完成时,必须给 8259一个中断结束命令,使该中断级在 ISR中的相应位清,0”,从而使中断结束。 8259有两种不同的中断结束方式。
自动结束方式
CPU进入中断响应,8259就在最后一个中断响应周期的 INTA信号的下降沿自动将 ISR中被响应的中断级对应位复位“清 0”。
(只能用于单个 8259,且无嵌套的情况)
非自动结束方式( EOI)
在这种方式下,从中断服务程序返回前,必须输出中断结束命令( EOI),把 ISR当前对应位清,0”。
(特殊 EOI命令):用于特殊嵌套方式。
(非特殊 EOI命令):用于全嵌套方式下。
四 8259A的级联
一片主 8259最多可接 8片从 8259;
最多可连接 64级中断源;
对 8259进行初始化编程时要分别对主片和每一个从片进行编程设置;
D0 ~D7—— 数据总线 D0~D7
A0—— 地址总线的 A0
CS—— 地址总线的 A1~A15
主 CAS0~CAS2—— 从 CAS0~CAS2
从 INT—— 主 IRn 主 INT—— CPU INTR
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
例:已知 8259的端口地址为 FF00H和 FF01H,试用下面给出的器件完成 8259与系统的连接五 8259的编程
8259的功能很强,可以用各种不同的工作方式工作,
在 8259内部有两组寄存器,一组为 命令寄存器,用于存放
CPU写入的初始化命令字 ICW1—ICW4,另一组为 操作命令寄存器,用于存放 CPU写入的操作(工作)命令字
OCW1—OCW3。
当 8259工作时,将根据这两组寄存器中的内容,决定
8259的初始工作方式以及具体的操作方式(单片或级联、
嵌套方式、结束方式、中断优先权方式、屏蔽方式等)。
控制信号对 8259内部寄存器的寻址操作
ICW1
1,8259的初始化命令字可向 ICW1—ICW4寄存器中写入相应内容,用于设置
8259的初始工作方式。
1) ICW1 ( 芯片控制字)
写入条件,A0=0,D4=1
D0,表示初始化过程是否需要写入 ICW4。 D0=1时表示是
8086/8088系统,必需写 ICW4,否则不需写。
D1,=1表示 8259为单片,否则为多片级联。
D2,D5—D7,只在 8080/8085中使用,在 8088中不起作用。
D3,表示中断请求信号起作用的触发方式。 D3=1为电平触发,D3=0为边沿触发。
A0 D7 D6 D5 D4 D3 D2 D1 D0
0 0 0 0 1 LTIM A S IC4
2) ICW2( 中断类型命令字)
当应用于 8088/8086系统中时,ICW2的 D7~D3用于确定中断向量码的 T7~T3,此时 ICW2的 D2~D0 位由
8259的 IR0—IR7确定。
低 3位 A8—A10由中断请求 IR0—IR7自动引入。
IR0=000,IR1=001,IR2=010……..IR6=110,IR7=111
高 5位 T7—T3
A
9
A
14
/ T
6
A
1 5
/ T
7
1 A
8
A
0
D
7
D
6
D
5
D
4
D
3
D
2
D
1
D
0
A
13
/ T
5
A
12
/ T
4
A
11
/ T
3
A
10
中断向量地址的 A
15
~ A
8
( M C S - 8 0 / 8 5 系统 )中断向量地址的 T
7
~ T
3
( M C S - 8 6 )
3) ICW3( 主 /从片初始化字)
用于 8259级联方式下,在级联方式下才需写入。
主片中,ICW3的每一位对应一个 IR输入,哪一位为 1,表示该位接一从片。
从片中,ICW3使用最低三位表示从片所接主片的 IR编号。
D0—D2,表示从片对应于主片的级联编码。
D3—D7,不起作用,常取 0。
ID
0
001 ID
3
A
0
D
7
D
6
D
5
D
4
D
3
D
2
D
1
D
0
0 0 0 ID
2
0 1 2 3 4 5 6 7
0 1 0 1 0 1 0 1
0 0 1 1 0 0 1 1
0 0 0 0 1 1 1 1
从 ID
S
1
S
6
S
7
1 S
0
A
0
D
7
D
6
D
5
D
4
D
3
D
2
D
1
D
0
S
5
S
4
S
3
S
2
1 = I R 有一个从装置输 入
0 = IR 没有从装置输入
( a )
I C W
3
( 从装置)
( b )
1 0 0 1 0 0 1 0
0 0 1
表示主 8259中 IR1,IR4,IR7上接有从属 8259
表示该从 8259接在主 8259的 IR1上
4) ICW4( 方式控制字)
A E O I001? PM
A
0
D
7
D
6
D
5
D
4
D
3
D
2
D
1
D
0
0 S F N M B U F M / S
1 = 8 0 8 6 / 8 0 8 8模式
0 = M C S - 8 0 / 8 5模式
1 = 自动 E O I
0 = 正常 E O I
0 ×
1 0
1 1
非缓冲方式缓冲方式 / 从缓冲方式 / 主
1 = 特殊的全嵌套方式
0 = 不是特殊的全嵌套方式非自动结束
D5— D7未定义,一般设置为 0
当 ICW1中 D0为 0时,不需设置 ICW4,此时 ICW4全为 0,即为:
非缓冲、非自动结束、用于 8080/8085系统
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
2,8259的工作命令字在写完初始化命令字后,8259在其中断输入端 IR0—IR7就可以接受中断请求信号了。
若不再写入任何工作命令字 OCW,8259便处于初始化设置的中断工作方式,这时中断源优先权是 IR0最高,IR7最低,且清除了所有中断屏蔽。
若希望改变初始化的 8259中断控制方式,
或为了屏蔽某些中断,或为了读出 8259的一些状态信息,则必须继续向 8259写入操作命令字
OCW。
8259的工作命令字有 3个,OCW1—OCW3
1) OCW1( 中断屏蔽字)
用于设置对 8259中断的屏蔽操作,写入到中断屏蔽寄存器 IMR中。若 OCW1的某位为,1”,则对应的中断源被屏蔽。
M
1
M
6
M
7
1 M
0
A
0
D
7
D
6
D
5
D
4
D
3
D
2
D
1
D
0
M
5
M
4
M
3
M
2
中断屏蔽
1 =置屏蔽
0 =复位屏蔽例如:当 OCW1=80H 时,则 IR7中断被屏蔽。
2) OCW2
用于设置优先级是否循环,循环的方式及中断结束的方式。
L
1
SLR0 L
A
0
D
7
D
6
D
5
D
4
D
3
D
2
D
1
D
0
E O I 0 0 L
2
0 1 2 3 4 5 6 7
0 1 0 1 0 1 0 1
0 0 1 1 0 0 1 1
0 0 0 0 1 1 1 1
有效的中断请求级别非特殊 E O I命令特殊的 E O I命令按非特殊的 E O I命令旋转按自动的 E O I方式旋转 ( S E T )
按特殊的 E O I方式旋转置优先权命令
*
*
*
100
110
101
001
000
111
按自动的 E O I方式旋转( 清除)
011
010
中断结束自动旋转特殊旋转
* 用 L
2
~ L
0
无效
R为优先级循环控制位,R=1
为循环优先级,R=0为固定优先级
L2— L0为系统最低级编码,用来指定某个 IR优先级最低。
EOI中断结束命令,=1时将复位 ISR中相应位。
例:若使 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
3) OCW3
用于设置查询方式,特殊屏蔽方式以及用来读
8259的中断请求寄存器 IRR,中断服务寄存器 ISR的当前状态。
无关置特殊
( 屏蔽)
A
0
0 E S M M
D
7
D
6
S M M
D
5
0 1 P RR R I S
D
4
D
3
D
2
D
1
D
0
复位特殊屏蔽
11
无作用
00
1010
特殊屏蔽模式在下一个脉冲读
I S R
在下一个读脉冲读
I R R
11
无作用
00
1010
RD
读寄存器命令
1 =查询命令
0 =非查询命令例:试编写一段程序,以实现将 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内容存入内存
8259A 的初始化命令序列流程先写 ICW,后写
OCW,ICW只能一次写入,OCW
可在操作中随时写入。
8259编程举例 1:
某微机系统使用一片 8259管理中断,
中断请求由 IR2引入,工作方式采用边沿触发,完全嵌套,非缓冲方式和非自动结束,中断向量码(类型号)为 40H,设端口地址为 20H和 21H,试编写初始化程序。
例:某微机系统使用主、从两片 8259管理中断,从片中断请求 INT与主片的 IR2连接。设:主片工作于特殊完全嵌套、非缓冲和非自动结束方式,中断类型号为
40H,端口地址为 20H和 21H; 从片工作于完全嵌套、非缓冲和非自动结束方式,
中断类型号为 70H,端口地址为 80H和 81H。
试编写主、从两片的初始化程序。