第八章输入输出接口技术本章内容
§ 8.1 接口技术概述
§ 8.2可编程并行接口 8255A
§ 8.1 接口技术概述主机将数据送到外设,称为输出外设将数据送到主机,称为输入 简称 I/O操作
8086有专用的 I/O指令( IN,OUT)
IN — 产生 IORD信号(或 IOR) — 读操作
OUT — 产生 IOWR信号(或 IOW) — 写操作接口 ——,桥梁”,主机与外设进行数据传输,
必须经过接口。
1.什么是输入 /出接口技术?
在 8086系统中,端口地址范围:
0000H~FFFFH —— 64K个端口,只用 AB的
A15~A0,A19~A16一般取,0”。
注:端口地址在 0~FFH(0~255)之间,采用直接寻址或间接寻址,地址超过 FFH,必须采用间接寻址。
OUT 2080H,AL → 错误!
例,IN AL,80H 正确!→
MOV DX,0080H;
IN AL,DX; 将 80H端口中的数 → AL正确!

MOV DX,2080H;
OUT DX,AL; 将( AL) → 2080H 端口 正确!→
① 数字量:二进制表示一个数据(字节,ASCII码)
② 模拟量:随时间连续变化的物理量(电压、电流、
湿度、压力、流量 …… )
③ 开关量:二进制,0”和,1”描述外设的状态(开关、
启停、通断 …… )
④ 脉冲信号:上下沿跳变信号。
3,接口的分类并行接口串行接口
2,接口常用的信息并行接口:多以字节为单位输入 /出。
特点:传输距离近(一般不超过两米),传输速度快。
串行接口:以位( Bit) 为单位进行数据传输。
特点:传输距离相对较远,速率较慢,常用于通讯、网络等。
三态门缓冲器做输入接口( 74LS244,74LS245)
单向 双向锁存器作输出接口( 74LS273( 0),74LS373)
步骤:构造总线系统将接口挂在总线上按题意要求设置接口电路例:设有一个总线系统,DB( D7~D0),AB( A15~A0)
IORD,IOWR,要求用 74LS244与输入设备连接,用
74LS373与输出设备相连接,端口地址分别为 80H和
82H,要求用 74LS138译码。
5.无条件传输方式
2
1.8255A内部结构和引脚功能
§ 8.2 可编程并行接口 8255A
PA口 (双向 8位 )
PB口 (双向 8位 )
PC口 (双向 8位 ),可单独使用,
也可以拆成两个 4位使用。
PC口 (高 4位 )
PC口 (低 4位 )
A组
B组 与外设连接
A1 A0
0 0 IORD=0
IOWR=0
外设 → PA → CPU
外设 ← PA ← CPU
0 1 IORD=0
IOWR=0
外设 → PB → CPU
外设 ← PB ← CPU
1 0 IORD=0
IOWR=0
外设 → PC → CPU
外设 ← PC ← CPU
1 1 内部控制寄存器选择内部缓冲寄存器,可以直接,挂,在 DB上
A组控制逻辑,包括 PA口和 PC.7~ PC.4为 PA
口提供控制和联络信号。
B组控制逻辑,包括 PA口和 PC.3~ PC.0为
PB口提供控制和联络信号。
读写控制逻辑,接收控制信号,并产生 8255内部控制时序某端口地址为 40H,
哪个端口的?其余端口地址?
PA口 40H
PB口 41H
PC口 42H
控制口 43H
某端口地址为 40H,
哪个端口的?其余端口地址?
PA口 40H
PB口 42H
PC口 44H
控制口 46H
2,8255A的工作方式方式 0:基本输入 /输出方式(无条件传送方式),
PA,PB,PC口均可工作在此方式。
方式 1:选通输入 /输出方式(有条件传送方式或中断),PA,PB可工作在此方式,此时
PC口为 PA,PB口提供控制和联络信号。
方式 3:双向输入 /输出方式,只有 PA 可工作在此方式,即可做输入又可做输出。
3,8255A的工作方式选择控制字
8255A的内部有一个控制寄存器,它占用一个端口地址,专门用来接收 CPU送来的控制字。格式如下:
D7 D6 D5 D4 D3 D2 D1 D0
1
方式控制特征位
D6 D5 PA口的工作方式控制字
0 0 PA口的工作方式 0
0 1 PA口的工作方式 1
1 x PA口的工作方式 2
D4,PA口的输入 /输出选择
0 输出
1 输入
D3,PC.7~ PC.4的输入 /输出选择
0 输出
1 输入
D2,PB口的工作方式选择
0 PB口的工作方式 0
1 PC口的工作方式 1
D1,PB口的输入 /输出选择
0 输出
1 输入
D0,PC.3~ PC.0的输入 /输出选择
0 输出
1 输入方式控制特征位
D7 D6 D5 D4 D3 D2 D1 D0
1
A组 B组例,8086系统扩展 8255并行接口,其数据线接
8086CPU数据线低 8位,PA口接输出设备,PB
口接输入设备,PC.7~PC.4 连接四个开关,由
8086CPU将开关状态取入,然后根据开关状态去控制 PC.3~PC.0驱动四个发光二极管(高电平亮,
低电平灭)。设 PA口的端口地址为 A0H,用 138
译码器译码设计电路并编写驱动程序。
① 工作方式选择字
1 0 0 0 1 0 1 0 8AH
② 设计电路初始化程序,MOV AL,8AH
OUT A6H,AL
注:对于 8255的四个端口地址是连续的,当某个端口地址被确定以后,其余的端口地址也就自然确定了,CPU执行 OUT指令时,IOWR=0,
M/IO=0,地址译码后 CS=0,具备了选通 8255的条件。
IN AL,0A2H
OUT 0A0H,AL
PB口输入数据
PA口输出数据
IN AL,0A4H
AND AL,0F0H
PC口输入开关状态屏蔽掉低四位
MOV CX,4
SHR AL,CX
OUT 0A4H,AL
右移四位
PC口低四位去控制发光二极管
4,8255A的 PC口的功能
① 可独立使用(方式 0)与外设连接
② 可以拆成两部分 A组 高四位
B组 低四位联络信号握手信号
③ 可以工作于位控工作方式,单独使用某一根
I/O线 对外设进行控制,例如灯的亮灭,电机的启停等
④ 可以对 8255做中断控制
⑤ 可以做 8255的状态字
5,8255A的位控制功能 → PC口位控制特征位
D7 D6 D5 D4 D3 D2 D1 D0
0 0 0 0
无用可任意一般取 0
选择 PC.0~ PC.7 输出状态
0 0 0 — PC.0
0 0 1 — PC.1
0 1 0 — PC.2
1 1 1— PC.7
0
1
例,8086系统扩展 8255并行接口,其数据线接
8086CPU数据线低 8位,设 8255某端口地址为
A6H,利用其位控功能实现灯灭、继电器闭合,
电机起转。
PA口 A0H
PB口 A2H
PC口 A4H
控制口 A6H
驱动程序:
MOV AL,00H
OUT A6H,AL
MOV AL,0BH
OUT A6H,AL
MOV AL,0FH
OUT A6H,AL
灯灭继电器闭合启动电机
6,PC口的联络功能
8255工作于的方式 1或方式 2(选通输入方式)
PC口为 PA口,PB口提供联络信号(握手信号)
① 方式 1
输入输出输入 (以 PA口为例)
STB (PA口 PC.4,
PB口 PC.2):将外设数据送到 PA口上,产生一个约 0.5us的负方波,
STB的下降沿将外设上的数据锁在 PA口的锁存器中 → IBF=1;
IBF (PA口 PC.5,
PB口 PC.1):当 PA口数据缓冲区满时,IBF=1并保持,通知外设 PA口已接到数据。
INTR (PA口 PC.3,PB
口 PC.0):当 STB=1,
IBF=1,INTE=1(三高条件),则 INTR= 1,
CPU响应该中断
( IF=1),在中断服务程序中执行一条 IN
指令,将 PA口中的数据缓冲区中的数据
→ CPU
使 IBF=0.恢复初态,
等待下一个数据输入。
PA口输入时,中断允许触发器
INTE是由 PC.4位控方式设置的,
当置 PC.4=1时,允许中断申请。
输出 (以 PB口为例)
OBF(PA口 PC.7,PB口
PC.1)当 CPU执行 OUT
指令,将数据送到 PB
口的数据缓冲器时
OBF=0(约 0.3us)的负脉冲,利用下降沿将数据锁在 PB口输出锁存器,并启动外设。
ACK(PA口 PC.6,PB口
PC.2)当外设接收到数据后向 8255回送一个应答信号,同时使
OBF变高,OBF的上升沿使 ACK变高。
INTR(PA口 PC.3,PB口
PC.0)当 ACK=1,
OBF=1,INTE=1(三高条件),则 INTR= 1,
CPU响应该中断,进入中断服务程序,使
INTR=0,撤销中断请求,
在中断服务程序中送出下一个数据,开始新的过程。
PB口输出时,中断允许触发器 INTE是由
PC.2位控方式设置的,
当置 PC.2=1时,允许中断申请。在实际应用中进入中断服务程序之前,应该先向外设送出一个无意义的数据,目的是使系统进入中断,真正的输出数据在中断服务程序中。
7,8255的状态字若 8255A的工作方式设定为方式 1或方式 2时,
读 PC口便可读得相应的状态字,以便了解
8255A的工作状态,并供 CPU查询。
方式 1
方式 2
8,8255应用举例例 1,某系统要求使用 8255的 PA口工作于方式 1作输入,PB口工作于方式 0作输出,PC口高 4位做联络信号线后剩余的 I/O线做输入、低 4
位输出。设 8255端口地址为 60 H~ 63H
控制字为 10111000B= 0B8H
初始化程序为:
MOV AL,0B8H
OUT 63H,AL
例 2,若 PA口工作于方式 1作为输入,要使用中断传送方式 。
MOV AL,00001001B
OUT 63H,AL
PC.4的按位置位字,
例 3,假设利用 8255的 PA口方式 0与打印机相连,将内存缓冲区 BUFF中的字符打印输出来。硬件连接见图。设
8255的工作频率与 CPU的工作频率相当。打印机接口要求在 STB有效时,才能接受数据;而在 BUSY有效时,
则表示打印机忙,不能接收数据。
DATA SEGMENT
BUFF DB ‘HELLO,WORLD’,13,10,’$’
PORTA EQU 60H
PORTB EQU 62H
PORTC EQU 64H
PORTCN EQU66H
DATA ENDS
CODE SEGMENT
ASSUME CS,CODE,DS,DATA
START,MOV AX,DATA
MOV DS,AX
MOV SI,OFFSET BUFF
MOV AL,88H ; 8255初始化
OUT PORTCN,AL
OUT PORTCN,AL ; PC口高 4位输入,; 低 4位输出
MOV AL,01H ; PC.0置 1,;STB初始状态 =1
WAIT,IN AL,PORTC ;查询打印机状态,
TEST AL,80H ;判 BUSY=1?
JNZ WAIT ;若“忙”则等待
MOV AL,[SI] ;从缓冲区取数
CMP AL,‘ $’ ;判是结束符‘ $’否?
JZ PRINT_OVER ;若是结束符‘ $’,退出
OUT PORTA,AL ;输出字符
MOV AL,00H
OUT PORTCN,AL ; 产生选通信号( STB=0);启动打印机
MOV AL,01H ;使 STB=1,负脉冲结束。
OUT PORTCN,AL
INC SI ;修改缓冲区指针
JMP WAIT
PRINT_OVER,MOV AH,4CH ;返回 DOS
INT 21H
CODE ENDS
END START