单片机 双机通信 程序

这里有双机通信的两个程序,分别是发射和接收的,怎样修改程序使得发送方按下key0时接收方LED做左向右流水动作按下key1时接收方LED做右向左流水动作,按下key2时,... 这里有双机通信的两个程序,分别是发射和接收的,怎样修改程序使得发送方按下key0时接收方LED做左向右流水动作 按下key1时接收方LED做右向左流水动作,按下 key2时,接收方LED闪烁

希望有人能够指点一二,不胜感激。

发送程序
#include<AT89X52.h>
#define uchar unsigned char
#define unit unsigned int
#define key_port P1
void delay(unsigned char delay_time)
{
unsigned char i;
while(delay_time--)
for(i=0;i<125;i++)
;
}
void main(void)
{
uchar key_in=0xff;

SCON=0x51;
TMOD=0x20; TH0=0xf3;TL0=0xf3;
ET1=1;
TR1=1; P2=0xff;
EA=1;
ES=1;
while(1)
{
if(key_port!=0xff)
{
delay(10);
if(key_port!=0xff)
key_in=key_port;
SBUF=key_in;
}
}
}
void ser(void)interrupt 4 using 0
{
if(RI)
{
RI=0;
}
else TI=0;
}

接收程序
#include<reg51.h>
#define uchar unsigned char
#define unit unsigned int
uchar tem;
#define leds P1
void main(void)
{
SCON=0x51;
TMOD=0x20;TH0=0xf3;TL0=0xf3;
ET1=1;
TR1=1;
EA=1;
ES=1;
while(1) {leds=tem;}

}
void ser(void)interrupt 4 using 0
{
if(RI)
{
RI=0;tem=SBUF;
}
else TI=0;
}
展开
 我来答
lzj2822254hf
2011-03-20
知道答主
回答量:24
采纳率:0%
帮助的人:18.6万
展开全部
接收程序
#include<reg51.h>
#define uchar unsigned char
#define unit unsigned int
uchar tem;
#define leds P1
bit receive_flag;
void main(void)
{
uchar i;
uchar led_doing;
SCON=0x51;
TMOD=0x20;TH0=0xf3;TL0=0xf3;
ET1=1;
TR1=1;
EA=1;
ES=1;
receive_flag = 0;
while(1)
{
if (receive_flag)
{
for (i = 0; i < 8; i++)
{
if ((tem & (1 << i)) == 0)
{
break;
}
}
led_doing = i;
receive_flag = 0;
}
if (led_doing == 0)
{
LED做左向右流水动作
}
if (led_doing == 1)
{
LED做右向左流水动作
}
if (led_doing == 2)
{
LED闪烁
}
if (led_doing == 3)
{
.................
}
if (led_doing == 4)
{
.....................
}
if (led_doing == 5)
{
.......................
}
if (led_doing == 6)
{
........................
}
if (led_doing == 7)
{
........................
}

}
}

}
void ser(void)interrupt 4 using 0
{
if(RI)
{
tem=SBUF;
receive_flag = 1;
RI=0;
}
else TI=0;
}
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式