首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 嵌入开发 > 单片机 >

8255A的相关有关问题(大侠帮助!已经折腾了两天了!)

2012-05-07 
8255A的相关问题(大侠帮助!!已经折腾了两天了!!)单片机的,P1口接8个流水灯,P0口(接了上拉电阻)接8255A的D0

8255A的相关问题(大侠帮助!!已经折腾了两天了!!)
单片机的,P1口接8个流水灯,P0口(接了上拉电阻)接8255A的D0~D7,然后PA借8个流水灯,PB接8个单刀双掷开关!

*************************************************************

不知道怎么上传本地图片!!所以没上传电路图,我是用proteus进行的模拟实验!!大侠留个邮箱!!发电路图~~

*************************************************************


C51编程如下
*********************************************************
#include <reg51.h>
sbit a0=P2^0;
sbit a1=P2^1;
sbit rd=P3^7;
sbit wr=P3^6;
void delay(int num)
{
int i,j;
for(i=0;i<num;i++)
for(j=0;j<110;j++);

void main()
{
int num;
a0=1;
a1=1;
rd=1;
wr=1; /*8255a的控制线路初始化,PA为一般I\O输出模式,PB为一般I\O输入模式;*/
P0=0x82;
wr=0;  


a0=0;
a1=0;
P0=0xaa;
wr=1;
wr=0;
delay(2000);

wr=1;
P0=0xf0; // ********语句
wr=0;
delay(2000); //让PA的流水灯按照0xaa,0xf0亮完;其实我就是想联系操作PA口

a0=1; //转换到PB口,开始对PB操作;
a1=0;
wr=1;

while(1)
{

delay(5); //因为PB口接了8个单刀双掷开关,通过改变开关得到变化的PB口数据,把PB传给数据
num=P0; //总线的D0~D7(D0~D7)在P0上!!,nun读取P0的数据,然后给P1的流水灯显示;
P1=num;
rd=1;
delay(5);
rd=0;
}
****************************************************************


问题:流水灯的不完全受开关控制,因为转换到PB口之前PA的值为0xf0,所以我只能控制后面4个流水灯,前面的4个一直处于点亮的状态!!!如果我把前面的*******语句改为P0=0xff,则流水灯完全受控制;若P0=0x00,则完全不受控制,一直处于亮的状态!!!

*******************************************************************

我的猜想:PB输入;怎么还受PA口的控制??????????????????

[解决办法]
8255应该上个世纪用得火,现在基本是维修了。。那个还用来开发

热点排行