2.4G Zigbee无线串口收发模块51单片机例程

[复制链接]
查看1 | 回复0 | 2021-6-11 02:51:05 | 显示全部楼层 |阅读模式
1.png
此例程运用了两块zigbee无线串口收发模块实现单片机间通信
发送端通过两个按键实现发送
接收端通过一个LED灯显示结果

单片机源程序如下:
  1. /*-------------------------发送程序----------------------------*/
  2. #include <reg51.h>
  3. #define uint unsigned int
  4. #define uchar unsigned char
  5. uchar ch;
  6. bit read_flag=0;
  7. sbit key=P1^2;
  8. sbit key1=P1^3;
  9. void Delay10ms()                //@11.0592MHz
  10. {
  11.         unsigned char i, j;

  12.         i = 108;
  13.         j = 145;
  14.         do
  15.         {
  16.                 while (--j);
  17.         } while (--i);
  18. }
  19. void init_serialcom()
  20. {
  21.         SCON=0X50;
  22.         TMOD=0X20;
  23.         TH1=0XFD;
  24.         TL1=0XFD;
  25.         IE=0X90;
  26.         TR1=1;
  27.         TI=1;
  28. }
  29. void send_char_com(uchar ch)
  30. {
  31.         SBUF=ch;
  32.         while(!TI);
  33.         TI=0;
  34. }
  35. void main()
  36. {
  37.         init_serialcom();
  38.         while(1)
  39.         {
  40.                 if(key==0)
  41.                 {
  42.                         Delay10ms();
  43.                         if(key==0)
  44.                         {
  45.                                 send_char_com('A');
  46.                         }
  47.                 }
  48.                 else if(key1==0)
  49.                 {
  50.                         Delay10ms();
  51.                         if(key1==0)
  52.                         {
  53.                                 send_char_com('B');
  54.                         }
  55.                 }
  56.         }
  57. }
  58. /*----------------------接收程序---------------------*/
  59. #include <reg51.h>
  60. #include <intrins.h>
  61. #define uint unsigned int
  62. #define uchar unsigned char
  63. bit read_flag=0;
  64. sbit led=P2^5;
  65. void Delay1000ms()                //@11.0592MHz
  66. {
  67.         unsigned char i, j, k;

  68.         _nop_();
  69.         _nop_();
  70.         i = 43;
  71.         j = 6;
  72.         k = 203;
  73.         do
  74.         {
  75.                 do
  76.                 {
  77.                         while (--k);
  78.                 } while (--j);
  79.         } while (--i);
  80. }

  81. void init_serialcom()
  82. {
  83.         SCON=0X50;
  84.         TMOD=0X20;
  85.         TH1=0XFD;
  86.         TL1=0XFD;
  87.         TR1=1;
  88.         ES=1;
  89.         EA=1;
  90. }
  91. void serial()interrupt 4 using 3
  92. {
  93.         uchar ch;
  94.         if(RI)
  95.         {      
  96.                 ES=0;
  97.                 RI=0;
  98.                 ch=SBUF;
  99.                 switch(ch)
  100.                 {
  101.                         case 'A': led=0; break;
  102.                         case 'B': led=1; break;
  103.                 }
  104.                 ES=1;
  105.         }
  106. }      
  107. main()
  108. {
  109.         init_serialcom();
  110.         while(1)
  111.         {

  112.         }
  113. }
复制代码


回复

使用道具 举报

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

本版积分规则