8255A并行 I/O 接口芯片

输入/输出接口电路,是微处理器和外部设备交换信息的通道,是微型计算机的重要组成部分。

        输入/输出接口电路,一方面要(输入)接收来自CPU的地址信号、数据信号和控制信号,另一方面(输出)还要与各种类型的外设相连接,以实现CPU与外设之间的数据传送。

        接口与外设交换的三种信息:数据、状态、控制

典型的并行接口与外设连接的示意图:

8255A的内部结构

端口A:输入输出均锁存,数据不易丢失。

端口B:输入不锁存,输出锁存

端口C:输入不所存,输出锁存

通常使用方法:

1、端口A、B作为独立的输入或输出端口

2、端口C 配合 端口A、B。通过方式控制命令分成2个4位端口,传送控制和状态信息。

8255A的引脚及功能

(1)与外设相连的引脚 24个

        PA7 ~ PA0 ——端口 A 数据线

        PB7 ~ PB0 ——端口 B 数据线

        PC7 ~ PC0 ——端口 C 数据线

(2)与CPU相连的引脚 14个

        1. RESET——复位信号

        2. D7~D0——8255A的数据线

        3. CS——片选信号

        4. RD——读信号

        5. WR——写信号

        6. A1、A0 —— 端口选择信号

        脚下留心:因为 8086CPU 低8位和偶地址端口相连,所以在8086系统中,将8255A的A1、A0引脚分别接向系统总线A2、A1,并且CPU对8255A的端口进行访问时,应将其地址最低位A0设置为0.

  

(编程)8255A的控制字

根据 D7 位的状态来决定控制字分两类。1为控制字,0为C口的按位置位(控制口)

1、各端口的方式选择控制字:设置 A、B、C 端口的工作方式,及输入/输出

2、C端口按位 置1/置0 控制字:C 端口按位 置位/复位 功能

此控制字必须写入 8255A 的控制口

8255A的工作方式

A端口 能工作在所有的三种方式下

B端口 只能工作在方式0 和 方式1下

C端口 只能工作在方式 0 下。

1、方式0 —— 基本输入/输出方式

特点:1、端口A、端口B、端口C上、下均可作为输入或输出口,且各端口均是独立的。

        2、四个端口的输入或输出,可以有16中不同的组合。

        3、各端口输入时无锁存,输出时锁存。

使用场合:1、同步传送(无条件传送方式)

                2、查询方式传送

2、方式1 —— 选通的输入/输出方式

1、用来配合的C口固定

2、可提供中断

工作在方式1 和 方式2 必须要有C口配合,但是有C口配合不一定工作在方式1、2,方式1也行。

        必须利用 端口C 提供的选通信号和应答信号等

特点:1、端口A 和 端口B 要在 端口C 的配合下工作。

        2、端口C 中有三位用于端口A的 I/O控制,另有三位用于端口B的I/O控制,并且提供中断逻辑

         3、若只有一个数据端口工作在方式1,则另一个数据端口及端口C余下的五位可工作与方式0;若两个数据端口都工作与方式1,那么端口C余下的两位可作 I/O 位,也可进行置位/复位操作。

方式1的输入:STB非 引脚清零,即可禁止中断响应

方式1的输出:OBF非 清零,即可禁止中断

3、方式2 —— 双向传输方式(只适用于端口A)

方式1输入输出的结合

 注意:1. 方式2的I/O均为锁存

        2、端口A工作于方式2时,端口B可工作与方式0或方式1

        3、端口C用于5个数位提供控制和状态信号

例题:方式0

设8255A的端口地址为:端口A:00E0H     端口B:00E2H     端口C:00E4H     控制口:00E6H

解析:首先写控制字。

1(控制字) 00(A口方式0) 0(A口输出) 0(C口高位输出) 0(B口方式0) 1(B口输入) 1(C口低位输入)

=        10000011  =  83H

打印机:需打印的字符存在CL中。

        脚下留心:在方式0下,我们需要先送入数据,再开启设备,因为8255A方式0下有锁存功能,存放了上次输出的数据,如果先开启设备,就会把上次的数据送出。

MOV AL,83H    //设置控制字
MOV DX,0E6H
OUT DX,AL    //写入控制口

//首先将PC4置1,以防本来是0。(关闭打印机)
MOV DX,0E4H
MOV AL,0000 1001H
OUT DX,AL            

//查询外设是否准备好
MOV DX,0E4H    //C口地址
AGAIN:
IN AL,DX      //读C口信息
TEXT AL,0000 0100B    //测试AL中D2位的情况 如果为0则zf=1,如果为1则zf=0
JNZ AGAIN        //如果打印机没用准备好D2位为0则再次查询

//把要打印的数据通过A口送入打印机
MOV AL,CL        //CL中存有要打印的字符
MOV DX,0E0H
OUT DX,AL        //送数据

//启动设备 (通过PC4的按位置位功能)
MOV AL,0000 1000B   
MOV DX,0E6H        //控制口端口
OUT DX,AL          //将C口的D4位置0(启动设备)
//关闭设备
MOV AL,0000 1001B
OUT DX,AL  


纸带读入机:将输入的数据送入CL中(输入设备)

MOV AL,83H
MOV DX,0E6H
OUT DX,AL    //写入控制字

//开启设备
AGINE:
MOV DX,0E4H
MOV AL,0000 1010B
OUT DX,AL            //开启读入机

//查询设备状态
IN AL,DX
//查询是否准备好,D3位是否为1,如果D3=1(准备好)则zf=0不跳,如果D3=0(未准备好)则zf=1(跳)
TEXT AL,0000 1000B 
JZ AGINE            //如果设备没有准备好,则再次查询

//读入数据
MOV DX,0E2H
IN AL,DX            //接收数据
MOV CL,AL     //将读入的数据送入CL

//关闭设备
MOV AL,0000 1011B
MOV DX,0E6H
OUT DX,AL

 

 

 

 

 

 

 

 

 

  • 11
    点赞
  • 38
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值