实验六---8255并行输入输出
    一、实验目的
    1.了解并熟悉8255并行输入输出控制器的功能和工作原理;
    二、实验原理
    1.8255芯片介绍
    8255是一种常用的并行输入/输出接口芯片,可用于微处理机系统中的输入/输出控制输出,根据中文名可以看出,8255有三种工作方式即口A、口B和控制口。8255所有的输入/输出都是双向的,它可以通过输入输出口的命令字来在不同的模式下工作。
    在输出模式下,82555可以通过端口A、B控制外围设备的输出操作,在输入模式下,8255可以通过端口A、B实现对外围设备的输入操作。控制口是用来控制8255写作模式或读作状态字,并对端口进行初始化操作。8255在不同的模式下有不同的编程方法和操作方法,因此需要在实际应用中选择不同的工作模式。
    8255有三个I/O端口A、B、C,每个端口都有8位。这里解释一下控制端口的意义,地址为0B4H的控制端口是连续读或写8255内部状态寄存器的地址,而后面的一个读或写就表示读或写操作的类型,如果该端口被写入了“控制字”则8255按照控制字工作,否则会在该端口读出输入状态字。在读或写操作的时候向控制端口写入的二进制数在图3-8中给出了。
    表3-2:8255访问口定义
    地址
    口分类
    名称
    端口A
    0B0H
    输出
    Port A
    输入
    Control
    Cout端口
    Cin端口
    2.8255的编程方式
    方式0:即I/O挂接方式,这种方式下A、B、C三个端口为并行I/O口时,其与MCU的接线和编程方式与单片机内部I/O端口的连接和编程方式相同。
    方式1:即输入输出口不一样。在这种片内Ram中的地址空间0~7地址单元内写入相应的端口或方式的控制字后,该8255工作在相应的方式。即:
    方式0:读出的是8位端口A的状态,写操作为将数据送到端口A;
    方式2:是把C口分配为两部分——高4位为输入,低4位为输出,它与方式1类似。端口C的所有状态和很多控制功能都由C口寄存器存储。
    方式2:“端口C字符型输入输出方式”,在这种方式下,端口C的8个位分成两部分,4个位作为输入的,4个位作为输出的。8位输入端口是内部编码的转移产生,直接使用CPU总线的控制线读取。8位输出端口是用于实现一些离散设备控制位的输出,例如,可现场显示输出信号,也可送给某些离散输出设备,而且不必再通过其他硬件解码。对于一些控制输出位,在方案上还要特别留几个灵敏输入端口来读进来(一些“手操作”)。因此,C端口某些位可能既有输入功能也有输出功能。
    3.8255的寄存器与状态字
    8255有3个I/O端口A、B、C,每个端口都有8位。8255有一些特殊的寄存器如下:
    (1)控制字寄存器(Control Word Register):它用于设置所有三个端口的工作模式,及数据方向控制。
    它在设置模式的时候,向控制寄存器中写入的二进制或十六进制数据必须与芯片的三个工作寄存器有关。控制寄存器的格式如下:
    OFFSET D7 D6 D5 D4 D3 D2 D1 D0
    P2 P1 D E C B A
    其中,D7、D6为端口 C 的双向寄存器中的双向输入寄存器(CIN)、双向输出寄存器(COUT)选择位。AC为启动功能选择位。D启动65536Hz定时器,E启动分频器。选择模式如下表:
    BC A D E
    0 0 方式0 方式0
    0 1 方式1 方式1
    1 0 方式2 方式2
    1 1 8255失效 8255失效
    P1、P2为端口 A 和 B 的方向控制寄存器,其应与 PAPA 中指定的地址相对应。A1、A0、B1、B0 的工作模式如表所示:
    A1 A0 B1 B0 口A 端口B
    出入口 出入口 出入口 出入口
    0 0 0 0 顺序交叉
    0 0 0 1 分别出入
    0 0 1 0 外部中断(INTE、INED)
    0 0 1 1 串行输入/输出
    0 1 0 0 简单输出
    0 1 0 1 简单输入
    0 1 1 0 扫描输出
    0 1 1 1 扫描输入
    1 0 0 0 储存
并输出    1 0 0 1 读写像存储器
    1 0 1 0 双相输入
    1 0 1 1 不用
    1 1 X X 同上同下
    (2)状态字寄存器(Status Word Register):它反映了端口的各种状态信息,其状态由读写控制寄存器的指令所决定,这些状态包括输出模式下的端口输出驱动电路状态、输入模式下的输入端状态、输入/输出方式中C口的指令寄存器状态,及自动位集复位(AOC)标志。
    三、实验内容
    本实验的目的是使用按键自发生器程序的按键状态,通过8255将其输出到LED端口。
    硬件连接如下:
    PPI8255    单片机Adr            单片机I/O口
    A0~A2        P2.2~P2.0            A口
    B0~B2        P2.5~P2.7            B口
    C0~C7        P2.7~P2.0            C口
    实验程序接口定义如下:
    void InitDevice(void);
    void Write8255(unsigned char pPort, unsigned char nData);
    以下是8255模式0(I/O模式)的实验程序,可以将按键状态显示在LED上。
    四、实验结果
    将实验程序下载到单片机后,使用按键自发生器程序按下或放开按键,LED就会对应点亮或熄灭。
    本次实验主要学习了8255并行输入输出控制器的功能和工作原理,并成功实现了将按键状态通过8255并行输出到LED端口。8255是常用的外接I/O控制芯片,将MCU与外设连接起来,可以给嵌入式设备带来更加丰富的功能和更强的扩展性。
    同时本次实验也进一步提高了我们的实验动手能力,培养了我们的实际操作能力和编程能力。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。