步骤:
1、连接两台单片机开发板的串行通信线,注意共地连接
2、设定A机为发送方
3、设定B机为接收方
4、设定双方接收与发送波特率
5、各自编制收发程序
6、发送数据调试
录入程序:
#include
/*命令定义*/
#define TurnOn 1
#define TurnOff 2
/*应答定义*/
#define On 3
#define Off 4
#define Error 4
/////////////////显示
sbit k1=P1^3;/*第1位数码管共阴端*/
sbit k2=P1^2;/*第2位数码管共阴端*/
sbit k3=P1^1;/*第3位数码管共阴端*/
sbit k4=P1^0;/*第4位数码管共阴端*/
unsigned char rd=0;//串口数据接收暂存变量
void RxdInterrupt()interrupt 4 using 2//串口中断函数
{
rd=SBUF;//接收数据存储到变量rd
if(rd==TurnOn)//是亮灯命令
{
P0=255;//LED亮
SBUF=On;//应答On
while(TI==0);TI=0; //等待发送完毕
}
else if(rd==TurnOff)//是关灯命令
{
P0=0;//LED灭
SBUF=Off;//应答Off
while(TI==0);TI=0; //等待发送完毕
}
else
{
SBUF=Error;//应答Off
while(TI==0);TI=0; //等待发送完毕
}
RI=0;
}
void InitEs()//串口初始化函数
{
TMOD=0x21;
TH1=0xF3;//波速率设置为2400
TR1=1;
SCON=0XD0;
ES=1;//串口中断允许
}
main()
{
InitEs();//串口初始化
EA=1;
k1=k2=k3=k4=0;//关闭数码管
P0=0;//LED灭
while(1)
{
}
}
实验结果:主机对从机发送控制命令,当主机发送turn on 时,从机如果接收正确,则向主机发送on用于应答,并使LED灯亮(从机任选1LED灯来控制),当主机发关turn off 时,从机如果接收正确,则使LED 灯灭。如果不是这两个命令,则从机向主机发送error作为应答。
由科通芯城(www.cogobuy.com)中国首个电子元器件网自营电商
欢迎光临 电子技术论坛_中国专业的电子工程师学习交流社区-中电网技术论坛 (http://bbs.eccn.com/) | Powered by Discuz! 7.0.0 |