OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 4074|回复: 2

我现在想实现单片机双机通讯用单片机A的按键去控制单片机B的LED下面分别是发送和接受机的程序请大佬看看是不是软件问题编...

[复制链接]

1

主题

1

帖子

0

精华

新手入门

积分
4
金钱
4
注册时间
2018-11-12
在线时间
0 小时
发表于 2018-11-12 21:32:07 | 显示全部楼层 |阅读模式
发送机:



#include<reg52.h>
#define u8 unsigned char
#define u16 unsigned int
sbit r1=P3^3;
sbit c1=P3^4;
sbit c2=P3^5;
sbit c3=P3^6;
sbit c4=P3^7;

void delayms (u16 xms)
{
u16 i,j;
for(i=xms;i>0;i--)
for(j=110;j>0;j--);
}

void send(u8 a)
{
SBUF=a;
while(!TI);
TI=0;
}
void keyscan()
{
u16 a;
if(c1==0)
{

delayms(10);
if(c1==0)
{
a=1;
while(!c1);
send(a);
a=0;
}
}
if(c2==0)
{

delayms(10);
if(c2==0)
{
a=2;
while(!c2);
send(a);
a=0;
}
}
if(c3==0)
{

delayms(10);
if(c3==0)
{a=3;
while(!c3);
send(a);
a=0;
}
}
  if(c4==0)
{

delayms(10);
if(c4==0)
{a=4;
while(!c4);
send(a);
a=0;
}
}
}
void main()
{
r1=0;
c1=1;
c2=1;
c3=1;
c4=1;




TMOD=0x20;
TH1=0xfd;
TL1=0xfd;
TR1=1;
REN=1;
SM0=0;
SM1=1;
EA=1;
ES=1;
while(1)
{
keyscan();
}
}



接受机:

#include<reg52.h>
#define u8 unsigned char
#define u16 unsigned int
sbit led1=P0^0;
sbit led2=P0^1;
sbit led3=P0^2;
sbit led4=P0^3;
void ledscan()
{
u8 a;
if(a==1)
{
led1=~led1;
a=0;
}

if(a==2)
{
led2=~led2;
a=0;
}

  if(a==3)
{
led3=~led3;
a=0;
}
if(a==4)
{
led4=~led4;
a=0;
}
}





void main()
{
TMOD=0x20;
TH1=0xfd;
TL1=0xfd;
TR1=1;
REN=1;
SM0=0;
SM1=1;
EA=1;
ES=1;
while(1);

}



void ser() interrupt 4
{
u8 a;
RI=0;
a=SBUF;
ledscan();
}




正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

0

主题

1

帖子

0

精华

新手入门

积分
2
金钱
2
注册时间
2018-11-16
在线时间
0 小时
发表于 2018-11-16 08:54:08 | 显示全部楼层
修改后的参考
  发:
#include<reg52.h>
#define u8 unsigned char
#define u16 unsigned int
sbit r1=P3^3;
sbit c1=P3^4;
sbit c2=P3^5;
sbit c3=P3^6;
sbit c4=P3^7;

void delayms (u8 xms)
{
u8 i,j;
for(i=xms;i>0;i--)
for(j=110;j>0;j--);
}

void send(u8 x)
{
SBUF=x;
while(!TI);
TI=0;
}
void keyscan()
{
u8 a;
if(c1==0)
{

delayms(10);
if(c1==0)
{
a=1;
while(!c1)P1=0;
send(a);
P1=0xff;
a=0;
}
}
if(c2==0)
{

delayms(10);
if(c2==0)
{
a=2;
while(!c2);
send(a);
a=0;
}
}
if(c3==0)
{

delayms(10);
if(c3==0)
{a=3;
while(!c3);
send(a);
a=0;
}
}
  if(c4==0)
{

delayms(10);
if(c4==0)
{a=4;
while(!c4);
send(a);
a=0;
}
}
}
void main()
{
r1=0;
c1=1;
c2=1;
c3=1;
c4=1;




TMOD=0x20;
TH1=0xfd;
TL1=0xfd;
SCON=0x50;
TR1=1;
//REN=1;
//SM0=0;
//SM1=1;
//EA=1;
//ES=1;
while(1)
{
keyscan();
}
}


收:

#include<reg52.h>
#define u8 unsigned char
#define u16 unsigned int
sbit led1=P1^0;
sbit led2=P1^1;
sbit led3=P1^2;
sbit led4=P1^3;
u8 a;
void ledscan()
{

if(a==1)
{
led1=~led1;
a=0;
}

if(a==2)
{
led2=~led2;
a=0;
}

  if(a==3)
{
led3=~led3;
a=0;
}
if(a==4)
{
led4=~led4;
a=0;
}
}





void main()
{
TMOD=0x20;
TH1=0xfd;
TL1=0xfd;
TR1=1;
SCON=0x50;
REN=1;

//SM0=0;
//SM1=1;
EA=1;
ES=1;
while(1);

}



void ser() interrupt 4
{

ES=0;
RI=0;
a=SBUF;
ledscan();
ES=1;
}
回复 支持 反对

使用道具 举报

1

主题

32

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
276
金钱
276
注册时间
2017-10-21
在线时间
23 小时
发表于 2018-11-19 11:37:38 | 显示全部楼层
老弟啊 这样问问题不会有人回答的
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2024-11-23 16:55

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表