Skip to content

第十章:可编程并行接口8255A及应用 ​

§ 10.1 8255A的引脚功能 ​

前面我们已经学过了常用芯片的接口技术,我们都是以硬件实现的,也就是说我们一旦设计好了就不能更改了,如果我们要实现在不破坏硬件的情况下改变它的输入输入状态,就需要上可编程器件了

xbtc123b3a52093b8df7f9b268dec4017b47

与外部相连的24根引脚 分为三组: PA0~PA7 该组引脚既可以做输入,也可以做输出,是可编程的

PB0~PB7 同样,可以做输入,也可以做输出

PC0~PC7 PC口既可以单独做输入输出,也可以拆成两个4位引脚单独使用,当我们把他们拆开时,高四位PC4~PC7为PA服务,所以我们把PC口和PC口的高四位分为A组,把PB口和PC口的第四位分为B组

在8255内部有一个8位的工作方式控制寄存器,可以编程控制8255的工作方式

与CPU相连的引脚 首先有8很数据线

在8255工作前,一定要复位,所以有一个REAET控制端,在工程设计中,8255应该在CPU完成复位前实现复位,一般来说是直接把CPU的复位信号拉过来用,实现同步复位

#RD和#WR应该接8086最小模式下的同名引脚,如果是8088最大模式下,应该接#IOR和#IOW信号

#CS这个是片段信号,任何芯片都需要片选,这个片选信号,实际上也是一个外部寻址信号

对于8255而言,肯定有A,B,C三个端口,同时,上面说到的工作方式控制寄存器,也需要一个端口,所以8255包含了4个端口地址,需要2个信号来产生四个端口地址,这就是A0和A1两个片内寻址信号

xbtc6c1ac7a2dd2249581478d06de7f9d329

加上Vcc和GND,40个引脚说完了

§ 10.2 8255A的工作方式和工作方式控制字 ​

8255工作方式概览 ​

8255一共有三种工作方式,方式0,方式1和方式2

方式0:无连络信号的输入输出方式 该方式等效与无条件输入输出方式 8255的PA,PB,PC口均可以在方式0下做输入或输出

方式1:有联络信号的输入输出方式 只有PA和PB口可以工作在有联络信号的输入输出方式,因为在这的工作方式下和外部设备通讯需要有联络信号,PC口的高4位充当PA的联络信号,PC口的低4为充当PB口的联络信号

方式2:有联络信号的双向输入输出方式 准双向:不能同时输入输出 前面两种方式,都是一个端口输入或输出,这种方式是一个端口输入和输出 这种工作方式只有PA口能用 PA口做输出,需要2根信号线来握手 PA口做输入,需要2根信号线来握手 PA口还需要一根线向CPU请求中断,就需要在PC口的第八位借一根线来用,此时PB口联络线不够用了,所以就只有PA可以工作在方式2

PC口还可以实现位管理

通过往工作方式控制器里写内容,可以选择不同的工作方式

工作方式控制字 ​

要向8255的方式控制字写内容,必须保证片内寻址信号A0和A1都为1

xbtc8367c51be6561efd9bca8b1d7c9688ad

D7位为工作方式选择,当D7口为1,表示选择工作方式,D7口为1表示进行PC口位管理

位管理的补充 xbtce1ea7f2b75d1873a13e4ec6c8d186288

D6~D5设置A组工作方式,00为方式0,01为方式1,10为方式2

D4设置PA口的数据方向,0为输出,1为输入

D3设置PC4到PC7的输入输出方式

D2设置B组工作方式,0表示方式0,1表示方式1

D1设置B组传送方向,0输出,1输入

D0设置PC0到PC3的方向,0输出,1输入

方式0应用 ​

xbtc683d9445e3e8f4bb7fe2fb4728590532

nasm
;初始化
MOV DX,303H
MOV AL,83H
OUT DX,AL
;程序实现
MOV DX,302H
IN AL,DX
MOV AH,0
MOV BL,16
MUL BL;也可以用移位指令实现
OUT AL,DX

方式1应用 ​

PA和PB都可以在这种模式下工作

PB口为例 当PB做方式1的输入时,PB0~PB7为数据线,当外设把数据送上数据线之后,向PB发一个#STBb信号,这个信号为选通信号,PB收到信号后接受数据,送到PB的输入缓冲器。当然,这个信号外设不是想发就发,只有当PB的输入缓冲器为空,才能发,这个时候就需要一个IBFb信号,当#STBb信号一来,IBFb变成高电平,在CPU取走数据之前会一直保持,此时外设不能再发#STBb信号,CPU可以用查询法去查询IBFb是否为1,来判断PB口的内容

PC2做#STDb PC1做IBFb

xbtc1106ad74e2792f9ac39d790115bfaff0

方式1也可以工作在中断法,利用PC0向外设发INTRb中断请求信号,只有PB口中断允许时,才能向外设发INTRb。PB内部有一个终端允许触发器INTEb,只有当该触发器置1才能发中断,清0就不能发中断,8255RESET后INTE清零,当我们初始化之后,对PC2置1 (位管理)就可以把INTEb置1

当INFb和INTE同时为1,就可以向8259提出中断请求,8259向CPU请求,让CPU读走PB口的数据

PA口 与PB口类似,向PA口发送一个STBa(PC4)信号,也有一个IBFa(PC5),也有一个INTEa输出INTRa(PC3)

xbtc163457fd1169abfe51984c0022bf6545

方式1输出 ​

A组输出方式1: PA为数据线,PC的高四位为控制信号,#OBFa,低电平代表输出缓冲器满了,当CPU把数据给PA后,装满了就发一个#OBFa信号,做设备的#STB选通端,设备收到这个信号后,对8255发送一个#ACKa(PC6)回答信号,回答信号一到来,#OBFa变高 作为用户,我们应该查询#OBFa(PC7)是否为低电平,来确认是否可以向PA输出信息 中断请求信号为INTR3(PC3) 只有在INTE置1,才能使用中断方式

方式2 ​

准双向传送方式 只有PA口能用

实际上是输入和输出的综合

§ 10.3 读端口C的状态 ​

xbtc4e7d9425f3a2cdf82d8699413a7812ed

§ 10.4 8255与系统总线的连接 ​

xbtcea5f213de5de6be5936bb9eb93d3dbce

§ 10.5 8255应用 ​

如果三个端口都工作在方式1输出时,等效与三片374 如果三个端口都工作在方式1输入时,等效与三片245

xbtc27192b0a72921cdb4bffa009982a838b

xbtceabcae527674cddeb2683ab6367ceda9 以上连线图需要连上系统reset

以笔记为镜,可以知得失