找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1724|回复: 1
打印 上一主题 下一主题
收起左侧

单片机无线串口通信例程

[复制链接]
跳转到指定楼层
楼主
ID:258949 发表于 2017-12-8 09:51 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
  1. #include <at89x52.h>
  2. #define uchar unsigned char
  3. #define uint unsigned int

  4. sbit K1 = P3^2;//设置P3.2口为按键端口
  5. sbit LED = P2^7;//设置P2.7口为按键端口

  6. uchar Error;          //验证标志

  7. uchar code table[] = "Ebyte";              //发送数组
  8. uchar table1[] = "01234";                 //接受数组


  9. void delay (uint time)
  10. {
  11.         uint i;
  12.         uint j;
  13.         for (i=0; i<time; i++)
  14.                 for (j=0; j<110; j++);
  15. }

  16. void inital (void)
  17. {
  18.         LED = 1;//默认熄灭
  19.         SM0 = 0;
  20.         SM1 = 1;//工作方式1
  21.         //SMOD = 0;//波特率不加倍(默认)
  22.         REN = 1;//允许接受
  23.         TMOD = 0X20;//T1工作于方式2:自动重装初值
  24.         TH1 = 0XFD;
  25.         TL1 = 0XFD;        //此初值波特率为:9600bps
  26.         TR1 = 1;        //定时器是用来作为波特率的发生器
  27. //        EA = 1;
  28. //        ES = 1;        
  29. }

  30. void Check_Data (void)//验证错误
  31. {
  32.         uchar i;
  33.         
  34.         for (i=0;i<6;i++)
  35.         {
  36.                 if(table1[i]==table[i])
  37.                         Error = 0;
  38.                 else
  39.                 {
  40.                         Error = 1;
  41.                         break;        
  42.                 }
  43.         }        
  44. }

  45. void Send_and_Sin_Data (void)
  46. {
  47.         uchar i;
  48.         for (i=0;i<6;i++)
  49.         {
  50.                 SBUF = table[i];
  51.                 while (TI == 0);//等待发送结束
  52.                 TI = 0;
  53.                 while (RI == 0);//发送和接受同步进行,发送结束后,等待接受结束
  54.                 RI = 0;
  55.                 table1[i] = SBUF;//接受端
  56.         }
  57. }

  58. void main ()
  59. {
  60.         uchar i;
  61.         inital ();
  62.         while (1)
  63.         {
  64.                 for (i=0;i<6;i++)
  65.                         table1[i] = i;//数组清空
  66.         
  67.                 if(K1 == 0)
  68.                 {
  69.                         delay (10);
  70.                         if(K1 == 0)
  71.                         {
  72.                                 Send_and_Sin_Data ();//发送并接受数据
  73.                                 Check_Data ();//验证接受的数据
  74.                                 if (Error == 0)//判断接受的正确性
  75.                                 {
  76.                                         LED = 0;                //亮
  77.                                         delay (50);
  78.                                         LED = 1;                //灭
  79.                                 }
  80.                         }
  81.                 }
  82.         }
  83. }
复制代码
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏2 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:308395 发表于 2018-5-2 10:43 | 只看该作者
楼主,求仿真
回复

使用道具 举报

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

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

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