[51单片机] SPI nRF24L01无线 [可以放在2个单片机里实现通信]


 

main.c

复制代码
 1 #include<reg51.h>
 2 #include"2401.h"
 3 
 4 #define uint unsigned int
 5 #define uchar unsigned char
 6 
 7 sbit KEY8=P3^7;     //发送按键 
 8 sbit beep=P2^3;//喇叭 
 9 sbit LED6=P1^6;     ////接收到数据后的功能实现灯  
10 
11 void delay_ms(uint z)     //延时函数 
12 {
13     uint x,y;
14     for(x=z;x>0;x--)
15         for(y=110;y>0;y--);
16 }
17 void delayms(unsigned int x)
18 {
19     unsigned int i;
20     while(x--)
21         for(i=125;i>0;i--);
22 }
23 void main()
24 {
25      uchar Tx_Buf1[]={1};//发送的信息1 
26      uchar Rx_Buf[32];  //接收到的数据暂存器,最多32字节数据  
27      init_NRF24L01();
28      LED6=1;//初始灯6熄灭   
29 
30 
31     while(NRF24L01_Check())        //检查不到24l01则报警 
32     {
33         beep=0;
34         delayms(200);
35         beep=1;
36         delayms(200);
37     }
38     while(1)
39     {    
40         RX_Mode();//接收模式  
41         while(!nRF24L01_RxPacket(Rx_Buf)) //等待接收数据 ,返回1则接收到数据 ,在等待接收数据期间,可以随时变成发送模式  
42         {
43             if(KEY8==0)     //按了按键8   则变成发送模式,发送对应数据,发送完后变成接收模式 
44             {    
45                 delay_ms(5);//消抖动 
46                 if(KEY8==0)
47                 {
48                      while(!KEY8);
49                     TX_Mode();     //发送模式 
50                     nRF24L01_TxPacket(Tx_Buf1);    // 发送命令数据
51                       LED6=0;
52                     delay_ms(300);
53                     LED6=1;
54                     delay_ms(300);            //发送后LED6闪一下 
55                     break;    //退出最近的循环,从而变回接收模式,这句关键
56                  }
57                 
58              }
59          }
60          if(Rx_Buf[0]==1)       //若接收到对应的数据则实现对应功能 
61          {
62              Rx_Buf[0]=0;//清空数据 
63                LED6=0;
64              delay_ms(300);
65              LED6=1;
66              delay_ms(300);//接收到数据 后闪烁      
67          }         
68     }
69 }
复制代码



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值