7.并行通信及其接口电路

1.简单并行接口电路

锁存器74LS373

  • 8位D锁存器电路
  • 输入端1D~8D,控制端G
  • 输出端1Q~8Q,输出允许端/OE

缓冲器74LS244

  • 三态输出8位缓冲器电路
  • 输入输出分为两路
  • 1A1~1A4,/1G控制,有效则1Y1~1Y4值变为1A1~1A4
  • 2A1~2A4

数据总线收发器74LS245

  • 三态输出的8位双向总线收发器
  • 16个数据段A1A8与B1B8
  • /G:允许收发器的操作
  • DIR:1A->B ;0: B->A

2.可编程并行接口电路8255A的结构及工作原理

内部组成

  1. 数据总线缓冲器
    • 双向三态8位数据缓冲器,是8255A与CPU数据总线的接口
  2. 端口:ABC
    • 端口C可作为一个独立的端口使用,但通常是配合端口A和端口B的工作,为这两个端口的输入输出提供控制联络信号
  3. A组控制与B组控制
    • A组控制:控制端口A及端口C的高4位
    • B组控制:控制端口B及端口C的低4位
  4. 读写控制逻辑

工作方式

  1. 方式选择控制字(D7=1)
    • D6D5:A组方式选择0、1、2
    • D40,端口A输出;1,端口A输入
    • D3
    • D2:B组方式选择0、1
    • D10,端口B输出;1,端口B输入
    • D0
  2. 方式0(基本输入/输出方式)
    • 端口A和端口B可以通过方式选择控制字规定为输入口或输出口

    • 端口C的高4位及低4位,也可分别由方式选择控制字规定为输入口或输出口

    • 四个并行口构成2^4种使用组态

    • 常用于与简单外设之间的数据传送

    • 方式选择控制字(D7=1)
      • D30PC7~PC4输出,1,输入
      • D00PC3~PC0输出,1,输入
    • 端口C按位置1/置0控制字(D7=0)
      • D6~D4:无意义
      • D3D2D1:选择PC0~PC1
      • D00,置0;1,置1
  3. 方式1(选通的输入/输出方式)

    端口A和端口B工作于方式1时,需要利用端口C接收选通信号或,这些信号由端口C的固定数位来接收或提供,即信号与数位之间存在着对应关系。

    1.输入
    • /STB(Strobe):输入,选通后,8255A接收一个外设送来的8位数据

    • IBF(Input Buffer Full):输出输入缓冲器满/STB=1置位

    • INTE(Interrupt Enable):内部中断允许触发器状态信号,/STB=1置位

    • INTR(Interrupt Request):输出中断请求信号/STB=1、IBF=1、INTE=1时,置为高电平,向CPU发出中断请求信号;读信号**/RD下降沿将INTE置为低电平**,即CPU开始读时,结束中断请求信号

      image-20220523112324453

    • 端口C

      • PC7PC6D3=0,输出,D3=1,输入
      • PC5:IBFA
      • PC4:/STBA
      • PC3:INTRA
      • PC2:/STBB
      • PC1:/IBFB
      • PC0:INTRB
    2.输出
    • /OBF输出输出缓冲器满/WR置位,/ACK复位

    • /ACK:输入,选通后,8255A输出一个外设送来的8位数据

    • INTE(Interrupt Enable):内部中断允许触发器状态信号,/ACK=1置位

    • INTR(Interrupt Request):输出中断请求信号/ACK=1/OBF=1、INTE=1时,置为高电平,向CPU发出中断请求信号;写信号**/WR下降沿将INTE置为低电平**,即CPU开始写时,结束中断请求信号

    • 端口C

      • PC7:**/**OBFA
      • PC6:/ACKA
      • PC5PC4D3=0,输出,D3=1,输入
      • PC3:INTRA
      • PC2:/ACKB
      • PC1:/OBFB
      • PC0:INTRB
    3.状态字

    image-20220523112353861

  4. 方式2(带有选通信号的双向I/O方式)
    1.
    1. 可以看成是A口工作在方式1输入和输出的叠加

    2. INTR=1,输入/输出缓冲器满

    3. /ACK:外设已将数据读走

    4. 端口C

      • PC7:**/**OBF
      • PC6:/ACK
      • PC5:IBF
      • PC4:/STB
      • PC3:INTR
      • PC2~PC0:留给端口B
    2.状态字

3.8255A的应用

例1:8255A工作于方式0,用8255A作为以查询方式工作的打印机接口,如图7.19所示。 当主机开始打印输出时,先测试打印机忙(BUSY) 信号,如果打印机处于状态,则BUSY信号为1;反之,则BUSY信号为0。当检测到BUSY信号为0时,则主机可通过8255A向打印机输出一个字符。此时,还需输出一个选通信号(负脉冲) 给打印机的STB端,用此负脉冲作为字符送到打印机输入缓冲器的打入脉冲。设打印字符存放在内存2000H单元 。8255A的端口地址为: 端口A—D0H,端口B—D1H,端口C—D2H,控制口—D3H

  • image-20220523112447422
  • 不使用端口B,PC6输出,PC2输入,C端口高4位输出,低四位输入,方式字为10000001
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17

BEGIN:
MOV AL,81H
OUT 0D3H,AL
MOV AL,00001110B //0EH
OUT 0D3H,AL
TESBY:
IN AL,0D2H
TEST AL,04H
JNZ TESBY
MOV AL,DS:[2000H]
OUT 0D0H,AL
MOV AL,00000110B //06H
OUT 0D3H,AL
INC AL
OUT 0D3H,AL
RET

例2:LED/开关接口,要求7段LED循环显示0-F十六个数,每个显示五秒,显示二十遍。

image-20220527192828680

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
SEGCOD  DB 0C0H,0F9H...
MOV AL,80H
MOV DX,0FEH
OUT DX,AL
MOV CX,20
LOP1: PUSH CX
MOV CX,16
LEA DI,SSEGCODE
LOP2: MOV AL,[DI]
MOV DX,0FDH
OUT DX,AL
CALL DELAY5S
INC DI
LOOP LOP2
POP CX
LOOP