并行接口

  • 并行数据是指接口电路与外部设备之间的数据线宽度而言的,并行接口是一次CPU读写操作可传输多个二进制位的接口。
  • 并行接口电路由并行接口芯片,逻辑控制和地址译码器等组成。
  • 实现外设数据与CPU数据总线数据的双向传送。

并行接口特点

  • 相对于串行接口:速度快;信号线数目多, 成本高;传输距离短(因为线间相互干扰大)。
  • 并行接口需要设置握手信号线,以便进行数据传输控制。
  • 并行传送数据不要求固定的格式,这与串行传送的数据格式的要求不同。

外部特性

  • 8255是通用的并行接口芯片,通过编程实现多种工作方式,满足不同应用需求
  • PA0~PA7:端口A的输入/输出线
  • PB0~PB7:端口B的输入/输出线
  • PC0~PC7:端口C的输入/输出线
  • 数据总线D0-D7,片选线CS#,读/写RD#、WR#,地址线A1、A0
  • RESET: 复位信号,高电平有效。它清除控制寄存器并将8255A的A、B、C三个端口均置为输入方式
在这里插入图片描述

内部结构

通过图片说明可以很清晰地看见8255的内部结构。
在这里插入图片描述

寄存器结构

8255A端口分配::8255A具有4个 端口地址,A、B口可以作为数据输入输出端口使用;C口除了做数据端口外,还可以用作状态口,用作按位控制;方式设置和C口用作按位控制。下表示8255的功能分配:

基址+0端口A数据端口A数据
基址+1端口B数据端口B数据
基址+2端口C数据 / 状态字端口C数据
基址+3控制字 / 置位复位命令字

写入到[基地址+3]的控制寄存器——8255A控制字,按照最高位(D2)的不同有两种格式。
(1)D7=1在这里插入图片描述
例:将8255 PA口设定为0方式、输入口;PB口指定为0方式、输出口;PC口的高4位是输出口,PC口的低4位是输入口,则工作方式字是=91H,初始化的程序段为:

MOV DX, 203H    ;8255A命令口地址
MOV AL, 91H     ;1001 0001=91
OUT DX, AL

(2)D7=0(画×的地方默认为0)
指定PC口的某一位(某一个引脚)输出高电平或低电平对应的是置位或复位。
在这里插入图片描述

工作方式

方式0——简单I/O方式

  • 基本输入/输出工作方式。没有专用的联络信号,采用查询方式或无条件方式传送数据;需要CPU与外设联络时,可由用户指定C口中的某些线完成联络功能。
  • 三个8位并行端口PA、PB和PC (PC口可以作为两个4位并行口PC0 ~ 3和PC4 ~ 7),都能独立使用,指定作为输入或者输出口用。
  • 方式0是单向I/O数据传输方式,一次初始化只能指定端口(PA、PB和PC)作输入或输出,不能指定端口同时即作输入又作输出。

方式1——选通方式

  • 1方式是一种选通输入/输出方式(应答方式)。有专用的联络信号线用于I/O设备和CPU进行联络,这种方式通常用于中断传送。
  • PA和PB为数据口,都可以工作在方式1,PC口配合工作
  • PC口的引脚分配作专用和固定的联络信号引脚,用户不能再指定其他用途
    在这里插入图片描述
    以A组为例进行图片讲解:
    在这里插入图片描述
    方式2——双向选通方式
  • 2方式是一种双向选通输入输出方式,将A口作为双向输入/输出口,C口的5根线(PC3-PC7)作为专用应答线。
  • A口为双向选通输入/输出或叫双向应答式输入/输出。初始化可指定PA口即作输入口又作输出口。
  • 设置专用的联络信号线和中断请求信号线,所以,在2方式下可采用中断方式和查询方式与CPU交换数据。
    在这里插入图片描述

编程命令

(1)D7=0为C端口置位/复位命令

例:若要把C口的PC2引脚置成高电平输出,则命令字应该为00000101B或05H。将命令字写入命令寄存器。
PC2引脚输出高电平,其程序段为:

MOV DX,203H   ;8255A命令口地址
MOV AL,05H    ;使PC2=1的命令字
OUT DX,AL     ;送到命令口

如果要使引脚PC2输出低电位,则程序段为:

MOV DX,203H   ;8255A命令口地址
MOV AL,04H    ;使PC2=0 的命令字
OUT DX,AL    ;送到命令口

(2)方式字和按位置位/复位编程命令

  • 方式字是对8255A的3个端口的工作方式及功能进行指定(即初始化),初始化工作要在使用8255A之前进行。
  • 按位置位/复位命令只是对PC口的输出进行控制,使用它不破坏已经建立的3种工作方式,而是对PC口实现动态控制的一种支持,它可放在初始化程序以后的任何地方。
  • 两个命令的最高位(D7)都分配作了特征位,之所以要设置特征位,是为了识别两个不同的命令(写到同一地址)。
  • 按位置位/复位的命令代码只能写入命令口(83H) , 而不能写到数据口,即对PC口的数据操作,需要对其数据寄存器地址(82H) 操作(基址为1000 0000=80)。

类似文章