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

mudongwu 2012-05-01 12:07:50
单片机的,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口的控制??????????????????
...全文
104 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
vc8fans 2012-05-01
  • 打赏
  • 举报
回复
8255应该上个世纪用得火,现在基本是维修了。。那个还用来开发

27,516

社区成员

发帖
与我相关
我的任务
社区描述
硬件/嵌入开发 单片机/工控
社区管理员
  • 单片机/工控社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧