首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

单片机双机通讯试验

单片机双机通讯试验

步骤:

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中国首个电子元器件网自营电商

返回列表