第七章 可编程接口芯片
? 可编程接口概术
? 可编程并行输入/输出接口芯片 8255A
? 可编程定时/计数器接口芯片 8253
? 可编程接口概术
一个简单的具有输入功能和输出功能的
可编程接口 电路如下图,它包括一个输入接口,
其组成主要是八位的三态门;一个输出接口,
其组成主要是八位的锁存器;另外还有八位的
多路转换开关及控制这个开关的寄存器 FF。
输入接口
输出接口
寄存器F F
多路转
换开关 I/O线数据总线
8
8
8
8
用户对寄存器 FF写入的内容称为命令
字或方式控制字,而寄存器 FF称为命令
寄存器,相应的端口称为命令端口或控
制端口,对可编程芯片初始化过程实际
上就是对芯片的控制端口写入各种命令
字的操作过程。
? 目前常用的可编程芯片有如下几种:
? 8255A 并行 I/O接口
? 8253 计数器 /定时器
? 8251 串行 I/O
? 8259A 中断控制器
7.1 可编程并行输入/输出接口芯片 8255A
一, 功能
8255A是一种通用的可编程并行 I/ O接口芯
片, 广泛用于几乎所有系列的微型机系统中,
如 8086,MCS51,Z80CPU系统等 。 8255A具
有 3个带锁存或缓冲的数据端口, 可与外设并
行进行数据交换 。 用户可用程序来选择多种操
作方式, 通用性强 。 使用灵活, 可为 CPU与外
设之间提供并行输入/输出通道 。
二,8255A的内部结构
并行输入/输出
端口
A组和 B组控

数据总线缓
冲器
读/写控制
电路
三,8255A的管脚分配
1、与外设连接的管脚
我们已经知道 8255A有三个数据端口,每个
端口是 8位的,由此可推算与外设相连接的管
脚共有 24位。其中 A口有 PA7— PA0八个 I/O引脚,
B口有 PB7— PB0八个 I/O引脚,C口有 PC7— PC0八
个 I/O引脚。特别地对于 PC7— PC0,其中可有若
干根复用线可用于“联络”信号或状态信号,
其具体定义与端口的工作方式有关。
2、与 CPU连接的管脚
包括数据线 D7— D0,读写控制线和,
复位线 RESET,以及和 CPU地址线相连接
的片选信号、端口地址控制线 A0和 A1。
3、电源线和地线
8255A的电源引脚为 VCC和 GND。 VCC为电源
线,一般取+ 5V 。 GND为电源地线。
四,8255A的工作方式及编程
1,8255A的工作方式
8255A有三种工作方式,它们是:
①方式 0—— 基本输入/输出方式;
②方式 1—— 选通输入/输出方式;
⑨方式 2— 一双向传送方式。
2,8255A编程
所谓 8255A编程,就是用户在使用 8255
前,用户可用软件来定义端口的工作方
式,选择所需要的功能。
1.方式控制字
这是一个八位的控制字,代表的信息
非常丰富。上面提到 8255A内部的 3个
端口分为 A,B两组,因此方式控制字
也就相应地分成两个部分,分别控制 A
组和 B组,其格式如下,
2,C口置,1” /清,0” 控制字
置, 1”又称为置位操作,而清, 0”称
为复位操作。
3.读入状态字
当 8255A由程序设定在方式 1或方式 2
工作时,C口就根据不同的情况,产生
或接收, 联络, 信号。如果这时我们
对 C口进行读操作,则读出的内容就包
含两部分内容,一部分是那些作为 I/O
线上的内容,另一部分是与, 联络,
状态有关的内容。
方式 1的输入状态字
五,8255A的 三种工作方式
1,8255A工作在方式 0
例 1,8255A的 A口和 B口工作在方式 0,
A口为输入端口,接有四个开关。 B口为
输出端,接有一个七段发光二极管,连
接电路如图所示。试编一程序要求七段
发光二班管显示开关所拨通的数字。
a
g
DP
f
e
d
b
c
电路
LED数
码管
段码表
……
mov al,90h ;设置 8255方式字
mov dx,ctrl_port
out dx,al
mov dx,a_port
in al,dx ;取键盘信息
and al,0fh ;屏蔽高 4位
mov bx,offset tab1 ;取段码表首地址
xlat ;查表得段码
mov dx,b_port ;输出显示
out dx,al
2,8255A工作在方式 1—— 输入
A口的选通信号,当其有效时,
外设把数据打入 A口的输入缓
冲器
A口的输入缓冲器, 满, 信号,
当其有效时表示 A口的输入缓
冲器已暂存一个有效数据。
A口的中断请求信号。当其有
效时,8255A的 A口向 CPU申请
中断,要求 CPU从 A口取数
中断允许信
号。
8255A工作在方式 1(输入) 时序图
8255A工作在方式 1(输入)
当 A口已接受外设数据后,有两种方式
通知 CPU取数:其一用条件查询方式,
通过查询缓冲器是否, 满,,即 IBFA是
否为高电平来取数。其二用中断方式。
在条件传送中,一般要有所谓的, 握手,
信号来协调数据的传送。, 握手, 信号
至少要有两位信号线,其中一位是由接
口电路发给外设,功能是向外设提供接
口电路的信息。另一位是由外设发给接
口,功能是向接口提供外设的信息。显
然在 8255A的选通输入方式中 STBA和
IBFA是一对, 握手, 信号。
例 2,8255A的 A口和 B口分别工作在方式 1和
方式 0,A口为输入端口,接有 8个开 关。
B口为输出端,接有 8个发光二极管,连
接电路如图所示。现要求用方式 1把改变
后的键信息输入到 CPU并通过 B口显示。
例题 2电路图
8
2
5
5
A
K
K 7
K 0
PA 0
PA 7
??
PC 4
PB 0
PB 7
PC 5
LED 0
LED 7
LED
??
STB A
IBF A
这个系统的工作过程如下:
1、用户通过改变 K0~ K7,产生新的键信息;
2、按下开关 K,产生选通信号,数据进入 A口的缓冲器,
此步骤实际上告诉 CPU,8255的 A口来了一个新数据;
3,IBFA有效使 LED点亮。这里含有两个信息,一个是
8255A
通知 CPU其 A口来了一个新数据,另一个是告诉用户 CPU
尚未
取走这个这个数据,用户不得再送其他数据;
4,CPU取走这个数据,LED熄灭;
5、转步骤 1。
设 8255的 I/O地址分布为 88H— 8EH,相应的程序段如下:
mov al,10111001b ;设置 A口为方式 1的输入,
loop1,in al,8ch ;取 C口的状态线
test al,00100000b;测试 IBFA信息
jz loop1 ;等待用户设定新的键值
mov cx,0ffffh ;延时, LED灯亮 ( 相对于步骤 3)
loop2,loop loop2
in al,80h ;取数 。 LED灯灭 ( 相对于步骤 4)
out 82h,al ;更新 B口的显示
jmp loop1 ;重复
3,8255A工作在方式 1—— 输出
外设回答信号。由外设发出。
当其有效时,表示外设已接
收数据。
A口的输出缓冲器, 满, 信号,
当其有效时表示 A口的输出缓
冲器已暂存一个有效数据。
A口的中断请求信号。当其有
效时,8255A的 A口向 CPU申请
中断,要求 CPU送数给 A口
中断允许信
号。
8255A工作在方式 1(输出)时序图
当 A口已接受外设数据后,有两种方式
通知 CPU取数:其一用条件查询方式,
通过查询缓冲器是否, 满,,即 IBFA是
否为高电平来取数。其二用中断方式。
在这种方式下, OBFA和 ACKA是一对
,握手, 信号 。 OBFA是 8255A产生, 当
其有效时, 告诉外设 A口已有一个新数据 。
ACKA是外设产生, 当其有效时, 通知 A
口外设已把数据取走 。
例 3,8255A的 A口工作在方式 1的输出,
接有 8个发光二极管, 现要求把内存中的
10个数,通过 A口发送给发光二极管以二
进制的形式供用户抄录 。
例题 3电路图
8
2
5
5
A
K
PC 7
PA 0
PA 7
PC 6
LED 0
LED 7
LED
??
+5V
ACK A
OBF A
这个系统的工作过程如下:
1,CPU把内存中的一个数据写入 A口;
2,LED灯亮,告诉用户 LED显示的是新数据;
3,用户抄录数据;
4,用户按下开关 K,发 ACK信号,告诉 CPU数
据已取走;
转第一步。
mov cx,10 ;送 10个数
mov bx,offset xx ;数组指针送 bx
loop1,mov al,[bx] ;取数
out 88h,al ;送数到 A口
loop2,in al,8ch ;取 C口状态线
anl al,80h ;测试 IBOA
jnz loop2;用户尚未抄录数据,检测 ;等待,;此时; LED灯亮 ( 对应步骤 2)
call delay;用户已抄录数据, LED灯灭 ( 对;应步 骤 4)
inc bx ;准备送下一个数
loop loop1 ;循环 10次
4,8255A工作在方式 2—— 双向
外设回答信号。由外设发出。
当其有效时,表示外设已接
收数据。
A口的输出缓冲器, 满, 信号,
当其有效时表示 A口的输出缓
冲器已暂存一个有效数据。
A口的中断请求信号。当其有
效时,8255A的 A口向 CPU申请
中断,要求 CPU访问 A口
中断允许
信号。
中断允许
信号。
A口的输入缓冲器, 满, 信号,
当其有效时表示 A口的输入缓
冲器已暂存一个有效数据
A口的选通信号,当其有效时,
外设把数据打入 A口的输入缓
冲器
如果设定某个 8255A的 A口和 B口分别
工作在方式 2和方式 1下, 则这个 8255A的
C口的 I/O功能将不在存在 。 当然如果 B
口是工作在方式 0下, 则 C口还有 3根线可
作 I/O线用 。
六,8255应用举例
1、与打印机接口
例 4:在某一 8086系统中接有一个打印机,
8255A作为输出接口。工作在方式 0,试
编一程序将缓冲区 BUFF内的 400H个字节
的 ACK码送打印机打印。
打印机具体工作过程如下:
1,数据线 D7— D0出现有效
数据;
2,STB有效, 通知打印机,
接口给打印机一个数据,
数据从数据线进入打印
机;
3,BUSY有效, 告诉接口,
打印机正在打印数据 。
打印完毕, BUSY变为无
效, 表示打印结束 。
8
2
5
5
A
PA 0
PA 7
??



D 0
D 7
PC 0
PC 4
STB
BUSY
print_data proc ;打印子程序, 入口在 dl中
print1,in al,c_port ;无条件读 C口数据
test al,00010000b ;测试 busy线
jnz print1 ; busy有效, 循环测试
mov al,dl
out a_port,al ;打印数据进入 A口
mov al,00000000b ;发选通信号
out ctrl_port,al
mov al,00000001b
out ctrl_port,al
ret ;返回主程序
print_datA endp
2,人机交互接口 —— 动态显示
例 5、常用的显示称为动态显示,它采用扫
描显示技术,可以使硬件开销降低很多。对于
一个 8位数据显示,它就需要两个输出端口就
可以了。其电路如图所示。在两个输出端口中,
一个称为段信号通道,它用来输出要显示数据
的段码;另一个称为位信号通道,用来决定当
前要显示数据的位置。
动态显示电路图
??
??
A

8255A
PA 7
|
|
PA 0
B

8255A
PB 7
|
|
PB 0
?? ??
??
+5V










段驱动
位驱动
LED6LED7
??
??
? 显示系统的具体工作步骤如下:
a,设要显示的初始位码 i= 0;
b,送第 i位的段信号;
c,送第 i位的位信号;
d,延时;
e,i+ 1- >i
f,如果 i小于 8,转 b
g,8位数据显示结束。
? 程序如下:
a_port equ 80h ;定义 8255A的四个端口
b_port equ 82h
c_port equ 84h
ctrl_port equ 86h
……
data segment ;定义数据段
tab1 db 3FH,06H,5BH,4FH,……,;定义段码表
dispbuff db 2,0,0,2,0,8,2,2 ;定义显示缓冲区
data ends
3,人机交互接口 —— 键盘扫描
例 6、图所示为矩阵式键盘电路,其特点
是由按键组成一个矩阵,矩阵的行线和
列线分别作为两个传输方向相反的 I/O接
口信号线,比如行线作为输入接口信号
线,列线作为输出接口信号线,或反之。
键盘扫描电路图
8255A
PC 0
PC 1
PC 2
PC 3
PC 4
PC 5
PC 6
PC 7
+5V
K 8 K 10K 9 K 11
K 0 K 2K 1 K 3
K 4 K 6K 5 K 7
K 12 K 14K 13 K 15
在翻转法中,行列线交换输入、输出,
两步就可获取键位置信息。可见这种方
法要比扫描法效率高。
7,2 可编程定时/计数器接口芯片 8253
一、功能
定时和脉冲信号的处理与接口是完全有别于
并行信号的,其特点是信号形式简单但需要连
续检测,下面介绍的 INTEL8253可编程定时/
计数器就是可以实现所要求这方面功能。 8253
内部有 3个独立的 16位定时/计数器通道。计
数器可按照二进制或十进制计数,计数和定时
范围可在 1— 65535之间改变,每个通道有 6种
工作方式,计数频率可高达 2MHz以上。
二,8253的内部结构
计数通道
数据总线
缓冲器
读/写控
制电路
通道控制
寄存器
三,8253的管脚分配
通道管脚
数据线
通道选择
控制线
四,8253的编程
8253只有一个控制字, 8253的一个方式
控制字只决定一个计数通道的工作模式 。
8253的控制字格式如图所示 。 共分为 4部
分, 通道选择, 计数器读 /写方式, 工作
方式和计数码的选择 。
五,8253的工作方式
1、方式 0—— 计数结束中断方式
工作方式 0有如下特点:
a,门控信号 GATE必须为 1,计数器才能计数;
b,计数时通道输出端 OUT一直为 0;
c,通道计数器计数到 0后, OUT由 0到 1,同时计数器停
止工作 。
2、方式 1—— 可编程序的单独负脉冲
方式 1工作过程如下:
a,门控信号 GATE是触发信号, 上升沿有效 。 即开始
计数是由 GATE的上升沿触发的;
b,触发后, 通道计数器开始计数, 输出端 OUT由高变
低;
c,计数器计数到 0,OUT再由低变高 。
3,方式 2—— 速率发生器
方式 2的特点如下:
a,GATE门为 1,计数器才能工作, 对 CLK
端上的脉冲进行计数;
b,当计数器, 减, 计数到 1时, 输出端由高
变低, 再经过一个 CLK周期, 即计数器计数
到 0时, 输出端 OUT又跳变为高 。 所以方式
2输出周期性负脉冲信号, 其宽度固定为一
个 CLK周期;
c,当计数器的值减为 0时, 自动重新装入计
数初值, 实现循环计数 。
4、方式 3—— 方波发生器
方式 2虽然可以作分频电路,但其输出
是窄脉冲,如果是方波,就只有选方式 3
5、方式 4—— 软件触发方式
方式 4在工作过程中有以下特点:
a,门控信号 GATE为高电平, 计数器开始减
1计数, OUT维持高电平;
b,当计数器减到 0,输出端 OUT变低, 再经
过一个 CLK输入时钟周期, OUT输出又变
高 。
方式 4—— 软件触发方式
6、方式 5—— 硬件触发方式
这种工作方式同方式 4很相似,当
控制字写入控制寄存器后,输出端 OUT
变高。同方式 4不同的一点是当计数值
写入通道计数器后,通道并未被触发,
也就是计数器并不立即开始计数。只
有当 GATE信号的上升沿触发通道后,
通道计数器才开始计数。
方式 5—— 硬件触发方式
8253的工作方式小结
? 8253的六种工作方式可归为两类,一
个是充当频率发生器,另一类主要是作
计数器来使用。下面我们就从这个角度
来讨论总结 OUT和 GATE门的作用。
? 与频率发生器有关的工作方式
8253有两种方式与频率发生器有关,即方式 2
和发生 3,对 OUT端,方式 2提供给用户的是负
脉冲,方式 3提供给用户的是方波。在这个两
种方式下,GATE信号要始终保持为高。
? 与计数器有关的工作方式
对于计数器类,有方式 0,1和方式 4,5。启动计数
器的方式有两种,一种是 CPU把时间常数写入相应通道
后,计数器就开始工作,我们可以称之为软件启动方
式,在这种启动方式下,GATE要始终保持为高电平,
所以方式 0和方式 4可以称为软件启动方式。另一种是
硬件启动计数器,即 CPU把时间常数写入计数器后,即
使 GATE为高电平,计数器并不工作。只有 GATE发生跳
变,其上升沿启动计数器工作,所以方式 1和方式 5就
可以称为硬件启动方式。计数器溢出时,OUT有两种输
出形式,要么是电平,要么是负脉冲。前者有方式 0方
式 1,后者有方式 4和方式 5。
六,8253应用举例
例 1,现有一个高精密晶体振荡电路,
输出信号是脉冲波,频率为 1MHz。要求
利用 8253做一个秒信号发生器,其输出
接一发光二极管,以 0.5秒点亮,0.5秒
熄灭的方式闪烁指示。设 8253的通道地
址为 80H~ 86H(偶地址)
解,1、时间常数计算
这个例子要求用 8253作一个分频电
路,而且其输出应该是方波,否则发
光二极管不可能等间隔闪烁指示。频
率为 1MHz信号的周期为 1微妙,而 1Hz
信号的周期为 1秒,所以分频系数 N可
按下式进行计算:
1 10 00 00 0 1000000
11
SSN
SS
?
??? ? ?
由于 8253一个通道最大的计数值是 65536,
所以对于 N= 1000000这样的大数,一个通道
是不可能完成上述分频要求的。由于
即取两个计数器,采用级联方式。
2、电路
121 0 0 0 0 0 0 1 0 0 0 1 0 0 0N N N? ? ? ? ?
OUT 0
GATE 0
CLK 0
1MHz 8 2 5 3 通道0
+5 V
OUT 1
GATE 1
CLK 1
1KHz
8 2 5 3 通道1
3、工作方式选择
由于通道 1要输出方波信号推动发光二极管,
所以通道 1应选工作方式 3。对于通道 0,只要
能起分频作用就行,对输出波形不做要求,所
以方式 2和方式 3都可以选用。
这样对于通道 0,我们取工作方式 2,BCD计数;
对于通道 1,我们取工作方式 3,二进制计数
(当然也可选 BCD计数)
4、程序
mov al,00110101b ;通道 0控制字
out 86h,al
mov al,00 ;通道 0初始计数值
out 80h,al
mov al,10h
out 80h,al
mov al,01110110b ;通道 1控制字
out 86h,al
mov al,0e0h ;通道 1初始计数值, 03E8H=1000BCD
out 82h,al
mov al,03h
out 82h,al
例 2,计件系统。计件系统的功能就是记录
脉冲的个数。
一个脉冲代表一个事件,比如交通道路检测
系统中通过检测点的车辆,工业控制系统中流
水线上已加工好的工件。要求在计件过程中,
PC机可以显示当前计数器的内容,当完成
10000个工件记录后,系统发出 1KHz信号推动
喇叭发音通知用户。
解,1、电路。
需要两个通道,一个作为计数,选用通道 0。另一
个产生 1KHz信号,选用通道 1。 工作原理如下,传感
器电路把物理事件转换为脉冲信号输入到通道 0计数,
当记录 10000个事件后,通道 0计数器溢出,GATE端输
出高电平,这时通道 1开始工作,产生 1KHz信号推动喇
叭发音 。
OUT 0
GATE 0
CLK 0
1MHz
82 53 通道0
+5V
OUT 1
GATE 1
CLK 1
82 53 通道1
计件
脉冲
驱动
放大
2、工作方式选择
对于通道 1,由于要产生 1KHz信号,故选用工作方
式 3。对于通道 0,要求初始计数值写入计数通道后,
计数器就可以工作,则通道 0的启动方式应是软件启动。
另外由于要求计数溢出后产生一个信号来启动一个事
件,即喇叭发音,故可选的工作方式为方式 0和方式 4,
对于图所示方案,通道 1的 GATE信号由通道 0的 OUT
信号产生,这个 OUT信号应该是电平型的,所以通道
0应选用方式 0。
3、时间常数
N0= 1000
4、程序(见书)
1
1 M H z 1 0 0 0 K H z= = 1 0 0 0
1 K H z 1 K H z
N ?