并行接口:指数据的各位同时进行传送的数据通信接口。
数据传输方式
|
无条件传输 |
简单直接,无需握手 |
|
查询方式 |
CPU主动查询外设状态 |
|
中断方式 |
外设主动请求CPU服务 |
|
DMA方式 |
直接存储器访问,无需CPU干预 |
8255A 是 Intel 公司为 8080/8085/8088 微型机系统设计的通用可编程I/O接口芯片:
可编程:用程序设置工作方式,无需附加外部电路 通用性强,使用灵活 单电源 +5V 供电

8255A 提供 3个8位端口(共24条I/O线):
|
端口 |
输入 |
输出 |
|---|---|---|
|
PA |
锁存 |
缓冲/锁存 |
|
PB |
缓冲 |
缓冲/锁存 |
|
PC |
缓冲 |
缓冲/锁存 |
注:端口A输入带锁存,这是与B、C口的区别。 锁存 = 有记忆,保持住最后一次给的值; 不锁存 = 没有记忆,输出随输入实时变化,输入消失了输出也就消失了。
数据线
|
输入操作(读) | |||||
|
0 |
0 |
0 |
1 |
0 |
端口A→数据总线 |
|
0 |
1 |
0 |
1 |
0 |
端口B→数据总线 |
|
1 |
0 |
0 |
1 |
0 |
端口C→数据总线 |
|
输出操作(写) | |||||
|
0 |
0 |
1 |
0 |
0 |
数据总线→端口A |
|
0 |
1 |
1 |
0 |
0 |
数据总线→端口B |
|
1 |
0 |
1 |
0 |
0 |
数据总线→端口C |
|
1 |
1 |
1 |
0 |
0 |
数据总线→控制字寄存器 |
|
断开功能 | |||||
|
× |
× |
× |
× |
1 |
数据总线→三态 |
|
1 |
1 |
0 |
1 |
0 |
非法状态 |
|
× |
× |
1 |
1 |
0 |
数据总线→三态 |
控制字
8255A 的工作方式由 CPU通过I/O指令向控制字寄存器写入控制字 来设置。

方式选择控制字(D7=1)
|
1 |
A组 |
B组 |
D7 = 1:方式选择控制字标志位
D6D5:A组工作方式(00=方式0,01=方式1,1X=方式2)
D4:PA口方向(1=输入,0=输出)
D3:PC高4位方向(1=输入,0=输出)
D2:B组工作方式(0=方式0,1=方式1)
D1:PB口方向(1=输入,0=输出)
D0:PC低4位方向(1=输入,0=输出)
如:A组方式0,B组方式1,PA输入,PB输出,PC输入
对应控制字 = 1 00 1 1 1 0 1 = 99H (10011001B)
C端口按位置位/复位控制字(D7=0)
|
0 |
无效位 |
指定C端引脚 |
电平 |
用于单独控制PC口某一位的输出电平:
D7 = 0:置位/复位控制字标志
D6~D4:无效位
D3~D1:选择PC口的位号(000=PC0,...,111=PC7)
D0(D3~D1选的PC口置值):1=置位(高电平),0=复位(低电平)
一次只能指定一个引脚。
工作方式
|
方式0 |
基本输入输出 |
简单无条件传输 |
|
方式1 |
选通输入输出 |
单向可选择,带联络信号 |
|
方式2 |
双向选通输入输出 |
双向传输,仅A口可用 |
0:基本输入输出

任一个端口(8位端口(A、B)和两个4位端口(C))可独立设置为输入或输出
输出是锁存的:锁存输出数据,最大并行输出24位
输入是不锁存的:仅缓冲外设输入数据
PC口上半部分与下半部分可定义不同方向
应用场景:
无条件读写:CPU直接与8255交换数据 查询方式:利用PC某些位作为PA、PB口的控制和状态信息
例1:初始化与数据传送
设定:A组、B组方式0,PA口和PC口输入,PB口输出;8255地址 50H-53H
控制字:1 00 1 1 0 0 1 = 99H
初始化程序:
MOV AL, 99H OUT 53H, AL ; 写入控制字寄存器 将PA数据输出到PB:
IN AL, 50H ; 读PA口
OUT 51H, AL ; 写到PB口 将PC数据存入1000H:
MOV BX, 1000H IN AL, 52H ; 读PC口 MOV [BX], AL
1:选通输入输出
端口A或B作为数据的的输入/输出,端口C的某些位作为专用联络信号线 需要设置专用的联络信号线/应答信号线 数据传送可采用查询方式或中断方式 数据的输入输出都有锁存功能 每个端口包括:8位数据口 + 3条挂钩线,提供查询/中断逻辑
若A、B口都工作于方式1,PC口大部分引脚分配为固定联络信号;若只有一个端口工作于方式1,剩余13位(24-11)可工作在方式0

方式1输入(A组)联络信号:
|
STB (选通输入) |
PC4 |
外设发出的数据选通信号,低电平有效 |
|---|---|---|
|
IBF (输入缓冲器满) |
PC5 |
8255发出的状态信号,高电平有效 |
|
INTR (中断请求) |
PC3 |
向CPU发出的中断请求,高电平有效 |

方式1输出(A组)联络信号:
|
OBF (输出缓冲器满) |
PC7 |
8255发出的信号,低电平有效 |
|---|---|---|
|
ACK (响应) |
PC6 |
外设发出的应答信号,低电平有效 |
|
INTR (中断请求) |
PC3 |
向CPU发出的中断请求,高电平有效 |
方式1输入(B组)联络信号:
|
信号 |
引脚 |
功能 |
|---|---|---|
|
STB |
PC2 |
选通输入 |
|
IBF |
PC1 |
输入缓冲器满 |
|
INTR |
PC0 |
中断请求 |

方式1输出(B组)联络信号:
|
信号 |
引脚 |
功能 |
|---|---|---|
|
OBF |
PC1 |
输出缓冲器满 |
|
ACK |
PC2 |
响应 |
|
INTR |
PC0 |
中断请求 |
2:双向选通输入输出(Bidirectional,仅A可)

一个 8位双向总线端口(A) + 一个 5位控制端口(C,用于用作A的控制和状态信息)
输入和输出都是锁存的
可用程序查询或中断方式与CPU联系

联络信号:
|
信号 |
引脚 |
方向 |
功能 |
|---|---|---|---|
|
STB |
PC4 |
输入 |
外设选通输入 |
|
IBF |
PC5 |
输出 |
输入缓冲器满 |
|
OBF |
PC7 |
输出 |
输出缓冲器满 |
|
ACK |
PC6 |
输入 |
外设响应 |
|
INTR |
PC3 |
输出 |
中断请求 |
中断允许位 INTE 的操作
|
端口 |
方式 |
INTE控制位 |
置位/复位控制字 |
|---|---|---|---|
|
PA |
方式1或2 |
PC4(输入), PC6(输出) |
0XXX1001B (置位PC4) 0XXX1101B (置位PC6) |
|
PB |
方式1 |
PC2(输入/输出) |
0XXX0101B (置位PC2) |
INTE 是内部中断允许触发器,通过C口按位置位/复位命令设置。
7004

被折叠的 条评论
为什么被折叠?



