8255可编程并行接口知识点总结

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

8255可编程并⾏接⼝知识点总结
可编程并⾏接⼝8255知识点总结
8255A 是INTEL系列的并⾏接⼝芯⽚,由于它是⼀种可编程的外部接⼝部件,通常作为微机系统总线与外部设备的接⼝控制部件,可通过软件来设置芯⽚的⼯作⽅式,⽤8255A 连接外部设备时,通常不需要附加外部电路,给使⽤带来很⼤的⽅便。

1、内部结构
2、引脚说明
8255作为主机与外设的连接芯⽚,必须提供与主机
相连的3个总线接⼝,即数据线、地址线、控制线接⼝。

同时必须具有与外设连接的接⼝A、B、C⼝。

由于8255
可编程,所以必须具有逻辑控制部分,因⽽8255内部结
构分为3个部分:与CPU连接部分、与外设连接部分、
控制部分。

(1)与CPU连接部分
根据定义,8255能并⾏传送8位数据,所以其数据
线为8根D0~D7。

由于8255具有3个通道A、B、C,所
以只要两根地址线就能寻址A、B、C⼝及控制寄存器,
故地址线为两根A0、A1。

此外CPU要对8255进⾏读、写
与⽚选操作,所以控制线为⽚选、复位、读、写信号。

各信号的引脚编号如下:
总线分类:
(2)与外设接⼝部分
8255有3个通道A、B、C与外设连接,每个通道⼜有8根线与外设连接,所以8255可以⽤24根线与外设连接,若进⾏开关量控制,则8255可同时控制24路开关。

①数据端⼝A、B、C
端⼝A(PA0-PA7):对应了1个8位的数据输⼊锁存器和1个数据输出锁存/缓冲器。

所以A 作为输⼊或输出时,数据均受到锁存。

端⼝B(PB0-PB7):对应了1个8位的数据输⼊缓冲器和1个数据输出锁存器/缓冲器。

所以B 输⼊锁存,输出不受到锁存。

端⼝C(PC0-PB7):对应1个8位数据缓冲器和1个数据输出锁存/缓冲器,所以C输⼊不锁村,输出锁存。

当8255⼯作于应答I/O⽅式时,C⼝⽤于应答信号的通信。

A、B组的逻辑控制功能
A组:
组成:端⼝A(PA0-PA7)和端⼝C的⾼4位(PC4-PC7)
这⼏个端⼝由A组统⼀进⾏逻辑控制。

B组:
组成:端⼝B(PB0-PB7)和端⼝C的低4位(PC0-PC3)
(3)A、B组分配:
A组由端⼝A作为与外设交换数据的输⼊/输出接⼝,C⼝的⾼4位作为外设连接的控制信号线和状态信号线,以配合A⼝⼯作。

B 组的⼯作原理和A组的相同,C的低4位作为外设连接的控制信号线和状态信号线。

(4)数据总线缓冲器
8255的数据总线缓冲器是双向三态的8位数据缓冲器,通过它直接与系统的数据总线(D0-D7)相连,可以传送输⼊/输出数据、CPU发给8255的控制字。

(5)读/写控制逻辑电路
读/写控制逻辑电路负责管理8255的数据传输过程。

它接收⽚选CS及来⾃系统地址总
线A1,A0(8086系统中为A2,A1)和控制总线的输⼊信号RESET,WR,WR,将这些信号组合后,得到对A组控制部件和B组控制部件的控制命令,并将命令发送给这两个部件,以完成对数据、状态信息和控制信息的传输。

3、8255的控制字
8255A可通过指令在控制端⼝中设置控制字来决定它的⼯作。

其控制字可分为两类(个),都写⼊控制字存储器(状态为
A1A0=11)
(1)⽅式选择控制字
8255有3种⼯作⽅式:
⽅式0:基本输⼊输出⽅式(A、B、C⼝)
⽅式1:选通输⼊输出⽅式(A、B⼝)
⽅式2:双向总线I/O传输⽅式(仅A⼝)
端⼝C既可以分为两个4位端⼝,作⼀般的输⼊/输出端⼝使⽤,更经常的是⽤于配合端⼝A和B⼯作,为它们提供控制信号和状态信号。

为了⽅便⽤户单独设置某⼀个控制位或状态位,8255A提供了端⼝C置位/复位控制字。

(2)端⼝C按位置1/置0控制字
可以使端⼝C中的任何⼀位进⾏置位(1)或复位(0)。

4、⼯作⽅式分析
(1)⼯作⽅式0:基本的输⼊/输出⽅式。

⽅式-0不使⽤联络信号,A⼝、B⼝、上C⼝、下C⼝都可以独⽴设置作为输⼊或输出使⽤。

适合⽤于⽆条件或查询式传送,所有输出都有锁存,输⼊只有缓冲不能锁存,C可以将个⼝清零或置1。

四个端⼝的输⼊或输出,可以有16种不同的组合,故可以适⽤于多种⽤途。

各端⼝输⼊时⽆锁存,输出时有锁存。

(2)⼯作⽅式1:选通输⼊/输出⽅式。

A⼝、B⼝可以分别作为数据⼝⼯作在⽅式1。

在C⼝的配合下,需要使⽤C⼝中特定的引脚作为选通和应答使⽤。

C⼝中其余的引脚仍可⼯作在⽅式0,定义为输⼊或输出,适合⽤于中断式传送和程序查询⽅式I/O传送。

C⼝中特定的引脚作为选通和应答使⽤时,视A⼝(或B⼝)为输⼊还是输出的不同,有
两个引脚的含义有所不同。

A、B的输⼊和输出都带有锁存。

(3)⼯作⽅式2:双向传送⽅式。

⼯作⽅式1:A⼝选通输⼊⽅式:
STB,使A⼝打开输⼊锁存器接收当外设数据准备好以后,发出⼀个负脉冲选通信号
A
STB撤销即变为⽆效。

数据。

A⼝接收到数据以后,发出IBF A。

数据写完后,
A
STB和IBF A都变为⾼电平以后,如果INTE A允许,则8255A发出中断请求信号,希望A
CPU接收数据。

CPU读数据的RD信号的下降沿使INTR A 和IBF A恢复低电平。

另外,只可以通过对PC4的置位和复位来设置INTE A。

B⼝作为选通输⼊接⼝时道理是⼀样的,只不过是这些信号使⽤的是C⼝的PC2,PC1和PC0 在⽅式1输⼊下,可以使⽤中断和查询两种⽅式让CPU读数据,以A⼝为例:
(1)使⽤TEXT⽅式对IBF(输⼊缓冲器)判断是否有数据可读,如果IBF为⾼则表⽰有数据可读,就⽤IN(中断)读取。

⼤体步骤:
AG: IN AL, C⼝
TEST AL,00100000B 判断IBF所在的D5
JZ AG 如果没有数据即IBF为低则继续读取判断
IN AL, A⼝如已经有数据则读A⼝数据
此时的引脚作⽤分析:
STB:选通信号,输⼊,LO有效。

这是因为外设送的信号,有效时将其位于A(B)⼝的引线的8位数据锁存到它的输⼊锁存器中。

IBF:输⼊缓冲器满,输出,HI有效。

是送给外设的联络信号,表⽰数据已经送⼊输⼊锁存器中。

信号由STB置位,由RD信号的上升沿复位。

INTR:中断请求,输出,HI有效。

在中断允许的前提下,输⼊选通信号结束时,外设已经将数据送⼊输⼊锁存器,此事CPU 被中断请求来读取位于输⼊锁存器中的数据。

INTE:中断允许。

INTE=1,允许向CPU申请中断,INTE=0则禁⽌。

不能由外部控制,由C的按位复位/置位功能实现。

INTE A由PC4控制,INTE B由PC2控制。

输⼊时序图:
⽅式1的输出
OBF信号,PC6为外设收到数据的响应信号A⼝:C此时的PC7⽤于输出缓冲器满
A
ACK,PC3中断请求输出信号线INTR A。

A
OBF信号,PC2为外设收到数据的响应信号B⼝:C此时的PC1⽤于输出缓冲器满
B
ACK,PC0中断请求输出信号线INTR A。

b
OBF:输出缓冲器满,输出,LO有效。

送给外设的控制信号,有效表⽰数据已经送⼊输出锁存器中,⽤这个信号通知外设设备将输出锁存器中的数据取⾛。

此信号由CPU的信号编程低电平,由外设发出的ACK恢复为⾼电平。

ACK:应答,输⼊,LO有效。

由外设送⼊有效时表⽰外设已经从端⼝输出线上将数据取⾛。

输出时序图:
⼯作⽅式2:
是A组独有的⼯作⽅式,外设在A⼝可以收发数据,借⽤C⼝的五条信号线作控制和状态线,A的输⼊输出都带锁存。

INTE1值为-0还是1是由软件对PC6的置位和复位来完成的。

INTE2值为0还是1是由软件对PC4的置位和复位来完成的
⽅式2时序图:
5、应⽤举例
例⼀:电路如图⽰。

由8个LED实时显⽰8个开关的状态,开关断开,相应的LED亮,开关闭合,相应的LED熄灭。

A⼝输⼊,8个开关K7~K0分别接PA7~PA0 。

B⼝输出,8个LED7~LED0分别接PB7~PB0
因为A,B同时⼯作在模式0的状态,A⼝输⼊,B⼝输出。

相关程序如下:
CCODE SEGMENT
ASSUME CS:CCODE
START: MOV DX, 0F6H
MOV AL, 98H
OUT DX, AL
TEST_IT: MOV DX, 0F0H
IN AL, DX
MOV DX, 0F2H
OUT DX, AL
JMP TEST_IT
CCODE ENDS
END START
例⼆:8255的初始化编程
1、A、B、C⼝均为基本I/O输出⽅式。

2、A⼝与上C⼝为基本I/O输出⽅式。

3、B⼝与下C⼝为基本I/O输⼊⽅式。

4、A⼝为应答I/O输⼊⽅式,B⼝为应答I/O输出⽅式。

解:1、MOV DPTR,#0E003H DPRT指向8255控制⼝地址E003H
MOV A,#10000000B=#80H 设置A、B、C⼝均为基本I/O输出⽅式
MOVX @DPRT,A ⼯作⽅式选择字送⼊8255控制寄存器
2、MOV DPTR,#0E003H
MOV A,#10000011B=#83H 设置A与上C⼝为基本I/O输出⽅式
B⼝与下C⼝为基本I/O输⼊⽅式
MOVX @DPRT,A ⼯作⽅式选择字送⼊8255控制寄存器
3、MOV DPTR,#0E003H
MOV A,#10110100B=#B4H 设置A⼝应答输⼊,B⼝应答输出⽅式
MOVX @DPRT,A ⼯作⽅式选择字送⼊8255控制寄存器
例三:⽤8255C⼝的PC3引脚向外输出连续的正脉冲信号,频率=1000Hz。

解:
F=1000HZ,T=1ms,0.5T=0.5ms
将C⼝设置为基本I/O输出⽅式
先从PC3引脚输出⾼电平1,间隔0.5ms后向PC3输出低电平0,再间隔0.5ms后向PC3输出⾼电平1,周⽽复始。

则可实现从PC3输出频率为1000HZ的正脉冲的⽬的。

程序如下:
MOV A,#80H 设置A、B、C为基本I/O输出⽅式
MOV DPTR,#0E003H
MOVX @DPTR,A
LOOP:MOV A,#07H
MOVX @DPTR,A
LCALL DELAY0.5
MOV A,#06H
MOVX @DPTR,A
LCALL DELAY0.5 延时0.5ms
SJMP LOOP 继续循环
例四:从8255B⼝输⼊8位数据,然后从8255A⼝输出。

解:设置8255A⼝为基本I/O输出⽅式,8255B⼝为基本I/O输⼊⽅式。

先从8255B⼝输⼊8位数据到累加器A,然后将累加器中的8位数据输出到8255A⼝,重复上述过程。

MOV DPTR,#0E003H 8255控制⼝地址E003H送DPTR
MOV A,#82H A⼝:基本I/O输出,B⼝:基本I/O输⼊
MOVX @DPTR,A
LOOP:MOV DPTR,#0E001H 8255B⼝地址E001H送DPTR
MOVX A,@DPTR 从B⼝输⼊数据
MOV DPTR,#0E00H 8255A⼝地址E000H送DPTR
MOVX @DPTR,A 从A⼝输出数据
SJMP LOOP
例五:编写交通灯控制程序。

⽤8255A⼝的PA7、PA6、PA5控制南北⽅向的红、黄、绿灯,⽤8255A⼝的PA0、PA1、PA2控制东西⽅向的红、黄、绿灯,如图所⽰。

控制⽅式为:东西⽅向通⾏30秒后,黄灯亮1秒,再南北⽅向通⾏30秒后,黄灯亮1秒,按上述⽅式不断循环。

解:(1)分析:
开始时,假设东西⽅向先通⾏,即东西⽅向为绿灯(PA2=1),南北⽅向为红灯(PA7=1)。

显然,送⼊8255A⼝的控制码为10000100=84H。

30秒延时后黄灯亮,黄灯亮的控制码为42H。

延时1秒后,南北⽅向通⾏,南北⽅向通⾏的控制码为21H。

然后延时30秒依次循环。

具体⼯作过程如下:
由上述分析可知,只要将8255A⼝设置成基本I/O输出⽅式,然后将交通灯的控制码依次输出到A⼝,并作30秒或1秒的延时,则可编写出如下的交通灯控制程序。

程序如下“”
延时1秒与30秒⼦程序由读者⾃⾏编写。

相关文档
最新文档