可编程并行通信接口8255A

可编程并行通信接口8255A

8255A内部结构

在这里插入图片描述

1.数据端口A、B、C
(1)端口A:一个8位输入锁存器,一个 8位输出锁存器/缓冲器;输入、输出时,数据均受到锁存。
(2)端口B:一个8位输入缓冲器,一个8位输出锁存器/缓冲器
(3)端口C:一个8位输入缓冲器,一个8位输出锁存器/缓冲器;输入时不锁存,输出时锁存。
2.A组控制和B组控制
A组控制电路控制端端口A和端口C高4位( P C 7 PC_7 PC7 ~ $ ) 的 工 作 方 式 和 读 / 写 操 作 B 组 控 制 电 路 控 制 端 端 口 A 和 端 口 C 低 4 位 ( )的工作方式和读/写操作 B组控制电路控制端端口A和端口C低4位( )/BAC4(PC_3$ ~ P C 0 PC_0 PC0)的工作方式和读/写操作
3.读/写控制逻辑电路
负责管理8255A的数据传输过程,接收CS*、地址总线信号A1、A0及RD*、WR*、RESET等信号
4.数据总线缓冲器
这是一个三态双向8位缓冲器,它是8255A与CPU系统数据总线的接口。

8255的芯片引脚信号

① 和外设一边相连的信号
P A 0 ~ P A 7 PA_0~PA_7 PA0PA7:端口A的输入/输出线。
P B 0 ~ P B 7 PB_0~PB_7 PB0PB7:端口B的输入/输出线。
P C 0 ~ P C 7 PC_0~PC_7 PC0PC7:端口C的输入/输出线。
②与CPU一边相连的信号
D 0 ~ D 7 D_0~D_7 D0D7:双向数据线,用于CPU向8255A发送命令、数据和8255A向CPU回送状态、数据和8255A向CPU回送状态、数据。
CS ‾ \overline{\text{CS}} CS : 片选信号,低电平有效。只有片选信号有效时,其他信号才有效。
RD ‾ \overline{\text{RD}} RD:读信号,低电平有效。
WR ‾ \overline{\text{WR}} WR :写信号,低电平有效。
RESET ‾ \overline{\text{RESET}} RESET:复位信号,高电平有效。RESET信号来到时,所有内部寄存器被清除,同时3个数据端口自动设为输入端口。
A1、A0: 端口选择信号。
0 0 :选中端口A
0 1 :选中端口B
1 0 :选中端口C
1 1 :选中控制端口

8255A的控制字

1.方式选择控制字
指定8255A的工作方式及其方式下3个并行端口(PA、PB、PC)的方向,是作输入还是作输出。
在这里插入图片描述

8255A有三种基本工作方式
方式0:基本的输入/输出方式
方式1:选通的输入/输出方式
方式2:双向传输方式


【例]】假设控制端口为FFFEH,要求:
· A端口:方式1输入
· C端口上半部:输出,C口下半部:输入
· B端口:方式0输出
· 方式控制字:10110001B或B1H
初始化的程序段:

MOV DX,FFFEH	;假设控制端口为FFFEH
MOV AL,B1H		;方式控制字
OUT DX,AL		;送到控制端口

2.端口C置1/置0控制字
指定端口C的某一位(某一个引脚)输出高平或低电平。
在这里插入图片描述

【注】C端口控制字虽然是对端口C操作,但应写入到控制端口地址,而不是写入到C数据端口


【例】PC7置1,PC3置0

MOV DX, FFFEH		;假设控制端口为FFFEH
MOV AL,00001111B	;PC7置1
OUT DX,AL
MOV AL,00000110B	;PC3置0
OUT DX,AL

关于两个控制字的讨论
① 方式选择控制字 是对8255A的3个端口的工作方式及功能进行指定,即进行初始化,初始工作要在使用8255A之前做。
② 端口C按位 置1/置0,控制字只是对C端口的输出进行控制,使用它并不破坏已经建立的3种工作方式,而是对它们实现动态控制的一种支持。它可放在初始化程序以后的任何地方。
③ 两个控制字的最高位( D 7 D_7 D7)都分配作了特征位,之所以要设置特征位,是为了识别两个不同的命令。( D 7 D_7 D7 = 1:作为方式选择控制字; D 7 D_7 D7 = 0:作为端口C置1/置0控制字)
④ 端口C按位 置1/置0的控制字只能写入控制端口。


8255的工作方式

端口A可以工作在方式0、1、2三种方式下
端口B只能工作在方式0、1两种方式
端口C的高、低4位分别配合端口A、B工作,在方式0下端口C可设定为输入或输出
1.方式0——基本的输入/输出方式
方式0提供两个8位端口(A和B)和两个4位端口( P C 7 PC_7 PC7 ~ P C 4 PC_4 PC4 P C 3 PC_3 PC3 ~ P C 0 PC_0 PC0),任何一个端口都可用做输入或输出(单向),由CPU用简单的I/O指令来进行读/写。
特点:

  1. 任何一个端口既可做输入端口,也可做输出端口,各端口之间没有必然的联系。
  2. 一般用于无条件传送的场合,也可以用做查询式传送。习惯上将A端口和B端口作为数据端口,将C端口作为控制输出和状态输入端口。

【例】端口A工作在方式0并作为输入,读取K1—K8八个开关量,送B端口显示。B端口工作在方式0作为输出。
已知端口地址如下:
端口A: FFD8H
端口B: FFD9H
端口C: FFDAH
控制端口:FFDBH

CODE	SEGMENT
ASSUME	CS:CODE
		ORG	32E0H
PA	 EQU	0FFD8H	;A端口地址
PB	 EQU	0FFD9H	;B端口地址
PC	 EQU	0FFDAH	;C端口地址
PCTL EQU	0FFDBH	;控制端口地址
H2:	MOV DX,PCTL
	MOV AL,90H	;控制字(1001 0000B=90H)
	OUT DX,AL 
P2: MOV	DX,PA
	IN	AL,DX	;读A端口数据
	MOV	DX,PB
	OUT	DX,AL	;将A端口数据送B端口
	JMP	P2
CODE ENDS
	 END H2

2.方式1——选通的输入/输出方式
需设置专用的联络信号线或应答信号线,以便对I/O设备和CPU两侧进行联络。
特点:

  1. C端口为A端口和B端口提供选通信号和应答信号,信号与端口C中的数位之间有固定对应关系
  2. 当A端口和B端口中有工作于方式1下的端口时,C端口的某些位用作信号位,其余仍可用作普通的I/O位(每个工作在方式1下的端口,在C端口中就有3位被规定为配合方式1工作的信号)
  3. 可工作于条件传送方式和中断传送方式

方式1时输入端口对应的控制信号
在这里插入图片描述

STB ‾ \overline{\text{STB}} STB:选通信号,低电平有效(表示外设已经准备好数据)
由外设提供的输入信号,当其有效时,将输入设备送来的数据锁存至8255A的输入锁存器
I B F IBF IBF:输入缓冲器满信号,高电平有效(表示端口已经接收数据)
8255A输出的联络信号。当其有效时,表示数据已锁存在输入锁存器
I N T R INTR INTR:中断请求信号,高电平有效(请求CPU接收数据)
8255A输出的信号,可用于向CPU提出中断请求,要求CPU读取外设数据
方式1时输出端口对应的控制信号
在这里插入图片描述

OBF ‾ \overline{\text{OBF}} OBF:输出缓冲器满信号,低有效(表示CPU已经输出了数据)
8255A输出给外设的一个控制信号,当其有效时,表示CPU已把数据输出给指定的端口,外设可以取走
ACK ‾ \overline{\text{ACK}} ACK:响应信号,低有效(表示外设已经接收到数据)
外设的响应信号,指示8255A的端口数据已由外
设接受
I N T R INTR INTR:中断请求信号,高有效(请求CPU再次输出数据)
当输出设备已接收数据后,8255A输出此信号向CPU提出中断请求,要求CPU继续提供数据


3.方式2——双向传输方式
特点:

  1. 只适用于端口A
  2. C端口提供5位作为控制信号和状态信号。

方式2的控制信号
在这里插入图片描述

P C 6 PC_6 PC6设置INTE1(输出)
P C 4 PC_4 PC4设置INTE2(输入)
输入和输出中断通过或门输出INTRA信号


【例】现要求用一个8255A作为终端机的接口。由端口A输出字符到终端机的显示器,端口B用于键盘输入字符,端口C为终端状态信息输入端口。当 P C 0 PC_0 PC0=1表示键盘输入字符就绪, P C 7 PC_7 PC7=0表示显示缓冲器已空。要求用查询方法把从键盘输入的每个字符都送到终端机的显示缓冲器上,当输入的是回车符(ASCII码为0DH)时操作结束。假设该8255A芯片的端口地址是60H~63H(8088),试编写包括8255A的初始化程序在内的输入输出驱动程序。

CSEG	SEGMENT
ASSUME	CS:CSEG
START:	MOV AL,10001011B
		OUT 63H,AL
KEY:	IN AL,62H
		TEST AL,01
		JZ KEY
		IN AL,61H
		CMP AL,0DH
		JZ STOP
		MOV AH,AL
DISP:	IN AL,62H
		TEST AL,80H
		JNZ DISP
		MOV AL,AH
		OUT 60H,AL
		JMP KEY
STOP:	MOV AH,4CH
		INT 21H
CSEG	ENDS
		END START
  • 2
    点赞
  • 45
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值