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 }