我想用2个at89s52芯片的51单片机做开关信号传输、就是把单片机a的P0、P1、p2读取开关信号,然后传送到单片机b上面,点亮相对应b的P0、p1、p2上的led灯
发送单片机
#include"reg51.h"
#define uint unsigned int
#define uchar unsigned char
void main(void)
{
uchar a[3];
uchar i=0;
int j;
TMOD=0x20;
TH1=0xFF;
TL1=0xFF;
SCON=0x40;
PCON=0x80;
TR1=1;
P0=0xFF;
P1=0xFF;
P2=0xFF;
while(1)
{
while(P0==0xFF||P1==0xFF||P2==0xFF);
j=0;
a[j]=P0;
j++;
a[j]=P1;
j++;
a[j]=P2;
SBUF=a[j];
j=0;
while(TI==0);
TI=0;
while(P0!=0xFF);
while(P1!=0xFF);
while(P2!=0xFF);
}
}
接受单片机
#include"reg51.h"
#define uint unsigned int
#define uchar unsigned char
void main(void)
{
uchar i=0;
int j;
uchar a[3];
uchar k=0;
TMOD=0x20;
TH1=0xFF;
TL1=0xFF;
SCON=0x50;
PCON=0x80;
TR1=1;
while(1)
{
while(RI==0);
RI=0;
a[j]=SBUF;
j=0;
P0=a[j];j++;
P1=a[j];j++;
P2=a[j];j=0;
}
}
这是我自己编的程序,我总感觉有些问题,我不知道数组怎么按顺序传送,再怎么按顺序接受,求大神指点 |