第 7章
输入输出接口
【 本章重点 】 本章重点介绍输入输出
接口的基本概念和输入输出接口的功
能;着重讨论不同外设数据传送的不
同方法及简单接口的应用。
【 本章难点 】 掌握无条件传送和查询
传送的工作原理,难点是接口芯片的
应用 。
7.1.1 输入 /输出接口
1,I/O接口的功能
一个接口的基本功能是在系统总线和 I/O设备之间传输信号,
提供缓冲作用, 以满足接口两边的时序要求 。
1) 寻址功能
2) 输入输出功能
3) 联络功能
4) 速度匹配功能
5) 数据格式转换功能
6) 中断管理功能
7) 可编程功能
7.1 微型计算机的输入 /输出接口
2.外设接口的编址方式
每个接口部件都含有一组寄存器,CPU与外设进行数据传送时,各类信息在
接口中进入不同的寄存器,一般称这些寄存器为 I/O端口,每个端口都
有一个端口地址。系统对各种寄存器的操作,实际上是通过寻址,对个
端口地址的选择和操作,因此外设接口( I/O端口)有两种编址方式。
( 1)外设地址与内存地址统一编址
这种编址方式又称为存储器映射编址方式。在这种编址方式中,将外设接
口地址和内部存储器地址统一安排在内存的地址空间中。即把内存地址
分配给外设,由外设来占用这些地址。用于外设的这些地址,存储器不
能再使用。
( 2)外设与内存独立编址
在这种编址方式中,内存地址空间和外设地址空间是相互独立的。例如,
在 8086CPU中,内存地址是连续的 1M字节,从 00000H~ FFFFFH,而外设
的地址范围从 0000H~ FFFFH。它们相互独立,互不影响。
7.1.2 输入 /输出的控制方式
概括起来,在微型计算机系统中,主要有如下
4种传送方式解决上述问题:
①无条件传送
②查询传送
③中断传送
④ 直接存贮器存取 ( DMA) 方式
1.无条件传送
在微机系统中,有一些简单外设,当它们工作时,随时都准备好接收
CPU的输出数据或它们的数据随时都是准备好的,CPU什么时候读
均可以正确地读到它们的数据。也就是说外设无条件准备好向 CPU
提供数据或接收 CPU送来的数据。在 CPU与这样的外设交换数据的
过程中,数据交换与指令的执行是同步的。因此也有人称其为同
步传送。
无条件传送方式是一种简单的输入输出方式,一般用于控制 CPU与
低速接口之间的信息交换,例如,开关、温度、压力流量等( A/D)
转换器。由于这些信号变换缓慢,当需要采集这些数据时,外设
已经将数据准备就绪了,因此无需检查端口的状态,就可以立即
采集数据。由于数据保持时间相对于 CPU的处理时间长得多,故输
入端可直接用输入缓冲器与 CPU的数据总线相连。若外设是输出设
备,一般要求接口有锁存能力,也就是 CPU送给外设的数据应该在
接口中保持一段时间,其原因是外设的速度较慢,所以要求 CPU送
到接口的数据能保持到外设动作相适应的时间。
开关 K看作一个简单的外设。 K的状态是确定的,要么闭合,要么打开。当
计算机通过外设接口读 K的状态时,一定会读到指令执行时刻 K的状态,
当 CPU读接口地址 FFF7H时, 或门输出为低电平 。 该电平使输入接口三态门
导通, 则开关 K的状态就由数据线 D0读到 CPU。 判断读入数据 D0=0时, K闭合;
D0=1时, K打开 。
+ 5 V
?10K
A
8
A
9
A
10
A
11
A
12
A
13
A
14
A
15
&
A
4
A
3
A
2
A
7
A
0
A
5
A
1
A
6
1
&
1?
IOR
D
0
【 例 7-1】 图中外设是简单的发光二极管,此外设的接口是用锁存器来实
现的,锁存器在打入脉冲 CP上升沿将输入端 D的数据锁存在它的输出 Q端 。
编写点亮二极管的程序 。
MOV AL,81H
MOV DX,0000H ;送端口地址
OUT DX,AL ;点亮发光二极管
【 例 7-2】 类似于例 1中,让接在 Q0~ Q7上的二极管自上而下
轮流点亮 3s,编写程序实现。
程序如下:
MOV AL,01H ;使 Q0为 1,LED0先亮
LOP,OUT 0000H,AL ;将信息送 0000H端口
CALL DELAY 3s ;调用 3S子程序
ROL AL,1 ;小循环左移 1位
JMP LOP ;循环点亮 LED
2.查询方式
无条件传送对于那些慢速的或总是准备好的外设是适应的。但是,许多
外设并不总是准备好的。 CPU与这类外设交换数据可以采用程序查询方式。
所谓查询方式就是微型计算机利用程序不断地询问外部设备的状态,根
据它们所处的状态来实现数据的输入输出。
为了实现这种工作方式,要求外部设备向微型计算机提供一个状态信息。
微型计算机校验外部设备所提供的状态信息,即查询外部设备,以便确定它
的下一步操作。
图 7-3给出了查询工作的示意图。
CPU 接



状态
数据
控制
图 7- 3查询工作方式示意图
( 1)单一外设的查询工作
最简单的情况是单一外设的情
况。其采用查询方式传送数据的过程
如下所述。如果 CPU要从外设接收一
个数据,则 CPU首先查询外设的状态,
看外设数据是否准备好,若没有准备
好,则等待;若外设已将数据准备好,
则 CPU从外设读取数据,接收数据后,
CPU向外设发响应信号,表示数据已
被接收。外设收到响应信号后,即开
始下一个数据的准备工作。
若 CPU需要向外设输出一个数据,
同样, CPU首先查询外设的状态, 看
其是否空闲, 若正忙, 则等待;若外
设准备就绪, 处于空闲状态, 则 CPU
向外设送出数据和输出就绪信号 。 就
绪信号用来通知外设; CPU送来有效
数据 。 外设接收数据后, 向 CPU发出
数据已收到的状态信息 。 这样, 一个
数据的输出过程就告结束 。
取外设状态
外设准备就

传送数据
传送完否
开始
N
Y
N
Y 结束
【 例 7-3】 如图 7-5所示,现欲将 48000H为首地址的顺序 100个单元的
数据,利用查询方式输出到外设。外设经输入输出接口与 8086的系统总
线连接。 CPU通过三态接口( 74LS244)可以查询外设的状态,而且当外
设状态信号 =1时,可以接收 CPU由锁存器( 74LS273)输出的数据。 =0时,
表示外设处于忙状态,不能接收数据。
程序如下:
START,MOV AX,4000H
MOV DS,AX
MOV SI,8000H
MOV CX,100
GOON,MOV DX,00FFH
WAIT,IN AL,DX
AND AL,01H
JZ WAIT
MOV AL,[SI]
OUT DX,AL
INC SI
LOOP GOON
RET
&
1?
A
0
A
1
A
2
A
3
A
4
A
5
A
6
A
7
IO W
A
8
A
9
A
11
A
10
A
12
A
13
A
14
A
15
D 0
D 7
~
I O R
D
0
Q
0
D
7
Q
7
74 LS 273
CP
~~
74244
E
D
0
外设
D 0
D 7
~
B U S Y
1?
1?
1?
图 7-5 查询工作方式的 I/O接口
(2)多个外设查询工作方式
上面我们介绍了单个外设利用
查询方式的工作情况。当系统
中有多个外设时,查询方式工
作的流程成图如图 7-6所示。
从图可以看出,CPU逐个外设进
行查询。若发现那个外设准备
就绪,就对该外设实施数据传
送。然后再对下一外设查询,
依次循环。从而可以实现,在
查询过程中,CPU不能做别的事
情,这就大大降低了 CPU的效率。
而且,假如某一外设刚好在查
询过后处于就绪状态,那么它
必须等到 CPU查询完所有外设,
再次查询此外设时才能发现它
处于就绪状态,而后对此外设
服务。这样就不能对外设进行
实时数据交换,这对许多实时
性要求较高的外设来说,就有
可能丢失数据。
1号外设
准 备 就绪?
2号外设
准 备 就绪?
3号外设
准 备 就绪?
n号外设
准 备 就绪?
对 1号外设服

对 2号外设服

对 3号外设服

对 n号外设服

N
N
N
N
Y
Y
Y
Y
§ 7.2简单接口
? 7.2.1三态门接口芯片
根据前面内容的介绍,大家已经了解到主机与外设之间的连接必须通过接口芯片来
完成信息的传送,如:信息的放大、隔离以及锁存。接口芯片的类型非常繁多,在
此我们介绍几种常用的简单的接口芯片。
一个典型的三态门接口芯片( 74LS244)如图 7-7所示。其中,DO0~ DO7为 8个输
入端,IO0~ IO7为 8个输出端,,是两个控制端,低电平有效,当控制端有效时,
三态门导通;当它们为高电平时,相应的三态门口呈现高阻状态。三态门只能作为
输入信号接口而不能作为输出接口,这是因为 74LS244三态门本身没有对信号的保
持或锁存能力。
图 7-7 74LS244简单示意图 图 7-8 74LS374简单示意图
7 4 L S 2 4 4
D O
0
D O
7
~ D I 0
D I
7
~
E
1
E
2
7 4 L S 3 7 4
D
0
D
7
~ Q 0
Q
7
~
O EC P
7.2.2锁存器接口芯片
前面提到的三态门器件,可以用作固定状态的输入接
口。但是,由于它没有保持(或称锁存)数据的能力,
无法直接用它实现数据的输出接口。最简单的输出接
口芯片 74LS374,它是一种带有三态输出的锁存器,其
引线图如图 7.8所示。其中 D0~ D7为 8个输入端,Q0~ Q7
为 8个输出端,为允许输出信号,低电平有效,CP脉冲
上升沿锁存,与 8086CPU连接时,一般接 ALE引脚。只
有当 =0时,74LS374的输出三态门才导通。 =1时,
74LS374的输出呈现高阻状态。由于 74LS374是 8位的带
有三态输出的锁存器,具有更大的使用灵活性,故它
既可以作为输入接口,又可以用作输出接口。
以下我们举例说明各接口的使用 。
7.2.3简单接口举例
1.已知 8D锁存器 74LS374用作输出接口,与 CPU总线连接图如
图 7-9所示。试编制一个接口程序,使其在 Q0输出端产生一个
周期和幅度均任意的方波,如图所示。
D0~ D7
D0~ D7 Q
0
CP
74LS374
AEN
270H
IOW
图 7-9方波输出接口电路
MOV DX,270H ; DX指向输出端口
MM,MOV AL,01H
OUT DX,AL ;输出方波的上升沿
CALL DELAY ;延时
MOV AL,00H
OUT DX,AL ;输出方波的上升沿
CALL DELAY ;延时
JMP MM ;循环
2,LED数码管
( 1) LED数码管分为共阳和共阴两种结构,在此只介绍一种共阳封装的 LED数
码管,如图 7-10所示。
图 7-10 共阳 LED数码管的示意图
a
b
g
f
c
d
e
61 0
1 5
D P
1
e
2
d
4
c
5
d p
6
b
7
a
9
f
1 0
g
3 8
( 2)接口电路
这段七段 LED数码管与微机系统总线有多种接口方式 。
此处介绍用 74LS138作为译码器进行选片, 用 74LS273作为
输出接口, 用三态门作为按钮 K的输出接口, 其连接图如图
7-11所示 。
在图 7-11中, 要使数码管显示某数字或符号, 必须用
软件来产生相应的数据 。 这是因为接口电路中没有硬件译
码器 。 例如, 要显示数字 3,则 LED的 a,b,c,d,g各段应
亮而 e,f应不亮 。 结合图, 则应向 74LS273写数据 4FH。 为
了方便, 可在内存中建立有关显示的数字 ( 或符号 ) 与相
对应输出数据的对应表 。
下面一段程序可判断按钮的状态 。 当 K闭合时, 显示 3,
当 K断开时显示 6。
1
1
1
1
1
1
1
1
~
Q
0
Q
1
Q
2
Q
3
Q
4
Q
5
Q
6
Q
7
Cp
a b c d e f
g
DP
+ 5 V
D
0
D
7
74 LS 273
8510 ??
1?
1?
&
74 LS 138
AG 2
BG 2
G
C
B
A
1?
K
+
?K10
D
0
0
Y
1
Y
D
0
D
7
~
IOW
A
0
A
1
A
2
A
4
A
6
A
3
A
7
A
9
A
8
A
5
A
11
A
13
A
10
A
12
A
14
A
15
I O R
START,MOV DX,00F1H
IN AL,DX
TEST AL,01H
JNZ KOPEN
MOV DX,00F0H
MOV AL,4FH
OUT DX,AL
JMP START
KOPEN,MOV DX,00F0H
MOV AL,7DH
OUT DX,AL
JMP START图 7-11 LED数码管及按钮的一种接口电路