使用8255A控制led

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

单片机第五周任务

一.实验要求

8255A的A口作为输出功能,连接8盏LED灯。

8255A的B口作为输入功能,连接8个按钮。

当B口的某一按钮按下,对应的LED灯就点亮同时。

同时,数码管上显示对应的按键号。如B口按钮1按

下,1号LED灯就点亮,8段数码管显示1.

二.硬件分析

三.代码分析

#include //单片机头文件

#include //扩展地址解析头文件

#define PAC XBYTE[0x7FFF] //控制地址定义#define PA XBYTE[0x7CFF] //A口地址定义#define PB XBYTE[0x7DFF] //B口地址定义#define PC XBYTE[0x7EFF] //C口地址定义

#define uint unsigned int

#define uchar unsigned char

sbit RST=P1^0; //复位引脚定义sbit RD1=P3^7; //读引脚定义sbit RW=P3^6; //写引脚定义unsigned char code

Tab[]={0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80};

//共阳数码管码表

void main(void) //主函数

{

RST=1; //复位置1

RST=0; //复位置0

PAC=0x82; //设控制字

PB=0xff;

PA=0xff;

P1=0xff;

while(1)

{

switch(PB)

{

case 0xfe:

{

P1=Tab[0];

PA=0xfe;

break;

}

case 0xfd:

{

P1=Tab[1];

PA=0xfd;

break;

}

case 0xfb:

{

P1=Tab[2];

PA=0xfb;

break;

}

case 0xf7:

{

P1=Tab[3];

PA=0xf7;

break;

case 0xef:

{

P1=Tab[4];

PA=0xef;

break;

}

case 0xdf:

{

P1=Tab[5];

PA=0xdf;

break;

}

case 0xbf:

{

P1=Tab[6];

PA=0xbf;

break;

}

case 0x7f:

{

P1=Tab[7];

PA=0x7f;

break;

}

case 0xff:

{

P1=0xff;

PA=0xff;

break;

}

}

}

}

四.我对8255A的理解

8255A是一种可编程的I/O接口芯片,可以与MCS-51系统单片机以及外设直接相连,广泛用作外部并行I/O扩展接口。

三个数据端口A,B,C 这三个端口均可看作是I/O 口,但它们的结构和功能也稍有不同。

1.A口:是一个独立的8位I/O口,它的内部有对数据输入/输出的锁存功能。

2.B口:也是一个独立的8位I/O口,仅对输出数据的锁存功能。

3.C口:可以看作是一个独立的8位I/O口;也可以看作是两个独立的4位I/O口。也是仅对输出数据进行锁存。

面向CPU的引脚信号及功能

1.D0-D7:8位,双向,三态数据线,用来与系统数据总线相连;

2,RESET:复位信号,高电平有效,输入,用来清除8255A的内部寄存器,并置A口,B口,C口均为输入方式;

3.CS:片选,输入,用来决定芯片是否被选中;

4.RD:读信号,输入,控制8255A将数据或状态信息送给CPU;

5.WR:写信号,输入,控制CPU将数据或控制信息送到8255A;

6.A1,AO:内部口地址的选择,输入。这两个引脚上的信号组合决定对8255A内部的哪一个口或寄存器进行操作。

8255A有三种工作方式,用户可以通过编程来设置。方式0简单输入/――输出查询方式;A,B,C三个端口均可。

方式1选通输入/――输出中断方式;A ,B,两个端口均可。

方式2 双向输入/――输出中断方式。只有A端口才有。

相关文档
最新文档