第十章:可编程并行接口8255A及应用
§ 10.1 8255A的引脚功能
前面我们已经学过了常用芯片的接口技术,我们都是以硬件实现的,也就是说我们一旦设计好了就不能更改了,如果我们要实现在不破坏硬件的情况下改变它的输入输入状态,就需要上可编程器件了

与外部相连的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两个片内寻址信号

加上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

D7位为工作方式选择,当D7口为1,表示选择工作方式,D7口为1表示进行PC口位管理
位管理的补充
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应用

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

方式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)

方式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的状态

§ 10.4 8255与系统总线的连接

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

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