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应该上个世纪用得火,现在基本是维修了。。那个还用来开发