8255A可编程并行接口芯片详解
8255A可编程并行接口芯片详解
8255A可编程并行接口芯片
本篇文章详细介绍了8255A可编程并行接口芯片的各个方面,包括其内部结构、工作方式、编程方法以及实际应用。
并行数据传输方式
以计算机的字长,通常是8位、16位或32位为传输单位,一次传送一个字长的数据。这种传输方式适合于外部设备与微机之间进行近距离、大量和快速的信息交换,例如微机与并行接口打印机、磁盘驱动器。同时,这也是微机系统中最基本的信息交换方法,例如系统板上各部件之间,接口电路板上各部件之间。
8255A简介
8255A包括四个端口——1个控制端口,3个数据端口,还包括端口的译码和控制电路、中断控制电路。支持三种输入输出工作方式。
一、8255A的内部结构和引脚
1.与外设接口(数据端口)
- 端口A(PA0~PA7):支持工作方式0、1、2,常作数据端口,功能最强大。
- 端口B(PB0~PB7):支持工作方式0、1,常作数据端口。
- 端口C(PC0~PC7):仅支持工作方式0,可作数据、状态和控制端口,分两个4位,每位可独立操作,控制最灵活,最难掌握。
2.与处理器接口
二、8255A的工作方式
- 方式0:基本输入输出:端口A、端口B、端口C高4位和低4位可作为输入口或输出口,适用于无条件传送和查询方式的接口电路。
- 方式1:选通输入输出:端口A、端口B可作为输入口或输出口,端口C用作端口A和端口B的联络信号,适用于查询和中断方式的接口电路。
- 方式2:双向选通输入输出:端口A可作为输入口和输出口,端口C的一部分作为端口A的联络信号,适用于双向传送数据的外设,适用于查询和中断方式的接口电路。
方式1的详细说明
- 输入引脚:端口A和端口B可作为输入口。
- 输出引脚:端口A和端口B可作为输出口。
- 联络信号:端口C可作为联络信号,具有中断请求和屏蔽功能。
- 中断控制:8255A的中断由中断允许触发器INTE控制,通过写入端口C的对应位实现控制。
三、8255A的编程
初始化过程中需要写入方式控制字,工作过程中通过数据端口读写外设数据,通过控制端口写入端口C的位控制字,通过端口C读取状态信息。
1. 写入方式控制字:控制字格式
2. 读写数据端口
初始化编程后:
- 当数据端口作为输入接口时,CPU执行IN指令将从输入设备得到外设数据。
- 当数据端口作为输出接口时,CPU执行OUT指令将把CPU的数据送给输出设备。
8255A具有锁存输出数据的能力,对输出方式的端口同样可以输入,读取的是上次CPU给外设的数据。
3. 读写端口C
- C端口被分成两个4位端口,两个端口只能以方式0工作,可分别选择输入或输出。
- 在控制上,C端口高4位和A端口编为A组,C端口低4位和B端口编为B组。
- 当A和B端口工作在方式1或方式2时,C端口的部分或全部引脚将被征用,其余引脚仍可设定工作在方式0。
- 对端口C的数据输出有两种办法:利用端口C的地址进行字节操作,或利用控制端口地址进行位操作。
- 读取的C端口数据有两种情况:未被A和B端口征用的引脚将读到输入信息或输出锁存器中的信息,被A和B端口征用作为联络线的引脚将读到反映8255A状态的状态字。
四、8255A的应用
作为通用的并行接口电路芯片,8255A具有广泛的应用,例如在IBM PC/XT微机上、打印机接口电路、简易键盘连接、LED数码管驱动等。
1.开关量的检测
例:在工业控制过程中,经常需要检测某些开关的状态。例如,在某一系统中,有8个开关K7~K0,要求不断地检测它们的通断状态,并随时在发光二极管上显示。通过8255A的端口A读入开关状态信息,使端口B、端口C连接的发光二极管的状态与端口A开关状态相呼应,并重复执行。假设8255A在系统中端口A、B、C及控制口的地址分别为100H,101H,102H,103H,试设计出硬件电路图,并编写初始化程序。
(1) 硬件电路
(2) 相应的8255A程序为:
MOV DX,103H ;控制端口地址送给DX
MOV AL, 10010000B ;控制字
OUT DX,AL ;写入控制字
L1: MOV DX,100H ;端口A地址送给DX
IN AL,DX ;从端口A读入开关状态
MOV DX,101H ;端口B地址送给DX
OUT DX,AL ;从端口B输出,控制LED
XOR AL, 0FFH ;AL← AL取反
MOV DX,102H ;端口C地址送给DX
OUT DX, AL ;从端口C输出
JMP L1 ;循环
2.LED数码管的驱动
发光二极管LED是最简单的显示设备。由7段LED就可以组成的LED数码管,LED数码管广泛用于单板微型机、微型机控制系统及数字化仪器中,LED数码管可以显示内存地址和数据等。
(1) LED数码管的工作原理
主要部分是7段发光管,顺时针分别称为a、b、c、d、e、f、g,有的产品还附带有一个小数点h。通过7个发光段的不同组合,主要显示0~9,也可以显示A~F(实现16进制数的显示),还可以显示个别特殊字符,如-、P 等。
LED数码管的结构
(2) 单个LED数码管的显示
3.多个LED数码管的显示
8个数码管:用2个8位输出端口控制。硬件上用公用的驱动电路来驱动各数码管,软件上用扫描方法实现数码显示。
段控制端口电路
位控制端口电路
控制哪个(位)数码管显示:共阴极时,当位控制端口的控制码某位为高电平时,经反相驱动,便在相应数码管的阴极加上了低电平,这个数码管就可以显示数据。
段控制端口作用
控制一个数码管显示什么数码:段控制端口送给数码管要显示字形的段码,段控制端口由所有数码管共用。
通过位、段控制端口的共同作用才能确定哪个数码管显示什么数码。