51单片机的之间地通信程序Word文档下载推荐.docx
《51单片机的之间地通信程序Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《51单片机的之间地通信程序Word文档下载推荐.docx(9页珍藏版)》请在冰豆网上搜索。
//按键
sbitledA=P1^1;
//定义了三个灯来指示发送的字符是什么
sbitledB=P1^3;
sbitledC=P1^5;
sbitledstop=P1^6;
ucharKEY_number=0;
//按键计数
voiddelay(unsignedintz)//延时函数
{
unsignedintx,y;
for(x=z;
x>
0;
x--)
for(y=240;
y>
y--);
}
voidinit()
SCON=0x40;
//主机串口工作方式1REN=0之允许发送不能接收
TMOD=0x20;
PCON=0x00;
TH1=0xfd;
TL1=0xfd;
T1=RI=0;
//必须要做来保证可以顺利进入终端
TR1=1;
EA=1;
ES=1;
voidPut_charToSBUF(ucharc)//把一个字符写入SBUF
SBUF=c;
while(TI==0);
//巧妙的等待处理等带发送完毕
TI=0;
voidmain()
init();
while
(1)
{
if(KEY==0)
{
delay(5);
if(KEY==0)
{P1=0xff;
while(!
KEY);
KEY_number++;
if(KEY_number==4)KEY_number=0;
}
}
switch(KEY_number)
{
case0:
ledstop=0;
break;
case1:
ledA=~ledA;
Put_charToSBUF('
A'
);
break;
case2:
ledB=~ledB;
B'
case3:
ledC=~ledC;
Put_charToSBUF('
C'
}
delay(100);
}
从机部分的程序
sbitd1=P1^0;
sbitd2=P1^1;
sbitd3=P1^2;
voiddelay(unsignedintz)//延时函数
SCON=0x50;
//允许串口接收
RI=0;
if(RI)
RI=0;
switch(SBUF)
case'
:
d1=~d1;
break;
d1=1;
d2=~d2;
d2=1;
d3=~d3;
elsed1=d2=d3=1;
}
上面的程序是一主一从单片机之间也可以建立一个双向的通信过程
//甲机程序发送控制信号的同时接收乙机发来的串口信息并
//且显示在数码管上
unsignedcharcodeduan[]={0x3f,0x06,0x5b,
0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
{P2=0;
P0=0;
voidPut_charToSBUF(ucharc)
voidseral_int()interrupt4
RI=0;
if(SBUF>
=0&
&
SBUF<
=9)P0=duan[SBUF];
elseP0=0x00;
乙机部分车程序主要接收甲的串口信息同时发送字符给甲。
sbitkey=P3^0;
ucharnumber;
{P0=0x00;
RI=TI=0;
{if(key==0)
delay(5);
if(key==0)
while(!
key);
SBUF=number;
while(TI==0);
TI=0;
number++;
if(number==11)number=0;
d1=d2=d3=1;
voidserial_int()interrupt4
}
比较上面的程序可以知道接收部分都在串口中断里进行发送部分在MAIN函数里完成