第8章 接口技术
8.1 分析教材内容
输入/输出接口电路,是微处理器和外部设备交换信息的通道,是微型计算机的重要组成部分。本章主要介绍:8255A并行I/O接口芯片;8251A串行I/O接口芯片;8253计数器/定时器芯片;AD574、ADC0809和DAC0832等模/数、数/模转换芯片。
输入/输出接口电路,一方面要接收来自CPU的地址信号、数据信号和控制信号,另一方面还要与各种类型的外设相连接,以实现CPU与外设之间的数据传送。
8.1.1 分析重点、难点问题
本章重点是:从硬件方面要掌握8255A并行I/O接口芯片;8251A串行I/O接口芯片;8253计数器/定时器芯片;AD574、ADC0809和DAC0832等模/数、数/模转换芯片与CPU的连接原理和连接方法。从软件方面要掌握可编程芯片的初始化编程,并掌握其应用程序的编写。要达到以上目的,还要从基本概念出发,循序渐进地进行。 1.并行通信和并行接口芯片 1)并行通信
所谓并行通信就是把一个字符的全部n个数据位用n条线同时进行传输。实现并行通信的接口就是并行接口。一个并行接口根据需要,可以设计为输入接口,负责输入信息;也可以设计为输出接口,负责输出信息;还可以设计为双向通信接口,既负责输入信息,又负责输出信息。例如,在计算机系统中连接纸带读入机的接口是输入接口;连接行式打印机的接口是输出接口;连接磁盘驱动器的接口是双向通信接口。 2)8255A可编程并行接口芯片
8255A是Intel系列的可编程并行接口芯片。通过软件可以设置该芯片的工作方式。 ① 8255A的内部结构
8255A芯片的内部结构如图8-1所示。 从图中可知,8255A由以下四部分组成: Ⅰ. 数据端口A、B、C
8255A有三个8位数据端口,分别为端口A、端口B和端口C。通过编程用户可以将其用作输入端口或者输出端口。三个端口内部组织结构如下:
? 端口A
端口A内部设置了一个8位数据输入锁存器和一个8位数据输出锁存器/缓冲器。因此,用端口A作为输入或输出端口时,数据均能被锁存。
? 端口B
端口B内部设置了一个8位的数据输入缓冲器和一个8位的数据输出锁存器/缓冲器。因
1
此,端口B作为输入端口时,数据不能被锁存,而作为输出端口时,数据能被锁存。
图8-1 8255A内部结构框图
? 端口C
端口C内部设置了一个8位数据输入缓冲器和一个8位数据输出锁存器/缓冲器。因此,当端口C作为输入端口时,数据不能被锁存,而作为输出端口时,数据能够被锁存。
在三个端口使用中,端口A和端口B常常作为独立的输入端口或者输出端口,端口C往往是配合端口A和端口B的工作。通过向芯片写入方式选择控制字,端口C可以被分成两个4位端口。根据芯片工作方式的不同,这两个4位端口,可以用作一般的输入输出,也可以分别作为端口A和端口B的输入状态信号、输出控制信号。
Ⅱ. A组控制和B组控制
A组控制电路控制端口A、端口C高4位(PC7~PC4)的工作方式和读/写操作。 B组控制电路控制端口B、端口C低4位(PC3~PC0)的工作方式和读/写操作。 这两组控制电路,根据芯片内部的控制寄存器内容(存放着CPU输出的方式选择控制字),以及来自读/写控制逻辑电路的读/写命令,决定两组端口的工作方式和读/写操作。
Ⅲ. 读/写控制逻辑电路
将CPU地址总线的A1、A0(8086为A2、A1)和CS(片选)信号及有关的控制信号(RD、
WR、RESET)组合,用来控制整个8255A芯片的工作过程,以完成对数据信息、状态信息
和控制信息的传输。
Ⅳ. 数据总线缓冲器
它是一个双向三态的8位数据缓冲器,8255A芯片通过它与系统数据总线相连,用来传送输入数据、输出数据、CPU发出的控制字以及外设的状态信息。
② 8255A的控制字
CPU通过向8255A控制端口中写入方式选择控制字来决定其工作方式。控制字分为两类,根据D7位的状态来决定。
Ⅰ. 方式选择控制字
方式选择控制字的格式如图8-2所示。
2
图8-2 8255A方式选择控制字
在方式选择控制字中,D7=1是其特征标志,D6、D5、D4和D3位用来选择A组的工作方式以及端口A和端口C上半部的输入/输出性质,D2、D1和D0位用来选择B组的工作方式以及端口B和端口C下半部的输入/输出性质。
? 8255A有三种工作方式,即: 方式0——基本的输入/输出方式 方式1——选通的输入/输出方式 方式2——双向传输方式
? 端口A可以工作于三种工作方式中任何一种,端口B只能工作于方式0或者方式1,
端口C经常配合端口A和端口B工作,为端口A或B提供控制信号和状态信号。 ? 允许划为同一组的两个端口分别工作于输入状态和输出状态。也即,端口A和端口
C的上半部合称A组,若A组工作在方式0,端口A用于输入时,端口C的上半部可用于输出。
为了巩固对8255A控制字的理解,下面举一例说明方式选择控制字的用法。
设在某8086系统中有一个8255A芯片,8255A之D7~D0接到8086系统数据总线之低八位,8255A之A1、A0分别接到系统地址总线之A2、A1。若已知该芯片的四个端口地址是0E0H、0E2H、0E4H和0E6H,要求该8255A芯片工作在如下工作方式:
端口A —— 方式0,输出 端口B —— 方式0,输入 端口C高四位 —— 输出 端口C低四位 —— 输入
经分析,其方式选择控制字为83H,以下指令完成该芯片工作方式的选择: MOV AL,83H ;方式选择控制字送AL
OUT 0E6H,AL ;方式选择控制字输出给8255A控制端口 Ⅱ. 端口C置位/复位控制字
端口C的各位经常作为控制位或状态位来使用,为了方便用户单独设置端口C之某一位的状态,在设计8255A芯片时,就设计了端口C置位/复位控制字。该控制字的D7位为0,这是其标志位。端口C的置位/复位控制字的具体格式如图8-3所示。
3
图8-3 8255A端口C置位/复位控制字
分析:图8-3中控制字的D3D2D1位指明了对端口C哪一位进行操作,而D0位则指明对端口C相应位的操作是置“1”还是清“0”,D6-D4为任意值。需要引起注意的是,尽管是利用该控制字对端口C的各位置“1”或清“0”,但是,该控制字必须写入8255A的控制口。例如,把端口C的PC7位置“0”,其控制字为00001110B,即十六进制的0EH;端口C的第五位置“1”,其控制字应为0BH。假设8255A控制口地址为0E6H,则可用下列程序实现上述要求。
MOV AL,0EH MOV DX,00E6H OUT DX,AL MOV AL,0BH OUT DX,AL
;PC7清“0”控制字送AL ;控制口地址送DX ;对PC7清“0”操作 ;PC5置“1”控制字送AL ;对PC5置“1”操作
③ 8255A的工作方式
8255A端口A有三种工作方式可以选择,而端口B只能在方式0或者方式1下工作。 Ⅰ. 方式0——基本输入/输出方式
在这种方式下,三个数据端口A、B、C(C分为两个4位端口),通过方式选择控制字,可任意选定其为输入口或者输出口。而且同属于一组的两个端口也可以分别定义为输入口或者输出口。各端口无固定的应答线联系。CPU只要对8255A执行I/O指令即可输入和输出数据。
方式0的主要特点归纳如下:
? 两个8位端口A、B及两个4位端口(端口C之高、低4位)中的任一端口,均可
以作为输入端口或输出端口,且各端口之间没有规定必然的联系。
? 四个端口的输入或输出,可以有16种不同的组合,故可以适用于多种用途。 ? 各端口输入时无锁存,输出时有锁存。 Ⅱ. 方式1——选通的输入/输出方式
在这种方式下,端口A和端口B进行输入/输出传输时,必须利用端口C提供的选通信号和应答信号,而且这些信号与端口C中的数位之间有着固定的对应关系,这种关系不是软件可以改变的。
4

