#include "mcu.h"
#include "NRF24L01.H"
sbit led=P3^6;
#defineLED_ONled=0
#defineLED_OFFled=1
#define KEY_STAUS(P2&(1<<0))//P20为按键 ==0为按下,!=0 为弹起
//===============
//延时函数
//===============
void delayms(uint ms)//延时?个 ms
{
uint a,b;
for(a=ms;a>0;a--)
for(b=120;b>0;b--);
}
//======================
//主函数
//======================
void main(void)
{
uint while_times = 0;
init_NRF24L01();
delayms(300);
while(1)
{
//===== 发送模式 =====
nrf_TxMod();
if(KEY_STAUS == 0)//按键按下,
{
TxBuf[0] = 1;//把1存入TxBuf[0]中,然后发送出去;接收程序判断RxBuf[0]的值,等于1的话点亮LED
//【注:RxBuf数组和TxBuf数组中的元素是对应的】
}
else
{
TxBuf[0] = 0;
}
nrf_trans(TxBuf);//将待发送的数据写入NRF24L01
while_times = 50;//检测是否发送成功 循环检测?次 【可更改,让接收循环次数大于发送循环次数效果较好】
while(while_times-- ) //发送超时,或者发送成功,跳出循环 进入接收模式
{
get_nrf_sta();//获取状态标志
if(TX_DS == 1)//发送成功,跳出循环
break;
}
//===== 接收模式 =====
nrf_RxMod();
while_times = 150;//检测是否接收成功 循环检测?次 【可更改,让接收循环次数大于发送循环次数效果较好】
while(while_times--) //接收超时或者接收成功,跳出循环 进入发送模式
{
get_nrf_sta();//获取状态标志
if(RX_DR == 1)//接收成功
{
nrf_read(RxBuf);//接收成功后,将NRF24L01接收到的数据读到单片机的RxBuf数组中。
break;//跳出循环
}
}
if(RX_DR == 1)//是因为接收到数据,而不是因为超时才跳出循环
{
if(RxBuf[0] == 1)
LED_ON;
else if(RxBuf[0] == 0)
LED_OFF;
}
}
}
#include "NRF24L01.H"
sbit led=P3^6;
#defineLED_ONled=0
#defineLED_OFFled=1
#define KEY_STAUS(P2&(1<<0))//P20为按键 ==0为按下,!=0 为弹起
//===============
//延时函数
//===============
void delayms(uint ms)//延时?个 ms
{
uint a,b;
for(a=ms;a>0;a--)
for(b=120;b>0;b--);
}
//======================
//主函数
//======================
void main(void)
{
uint while_times = 0;
init_NRF24L01();
delayms(300);
while(1)
{
//===== 发送模式 =====
nrf_TxMod();
if(KEY_STAUS == 0)//按键按下,
{
TxBuf[0] = 1;//把1存入TxBuf[0]中,然后发送出去;接收程序判断RxBuf[0]的值,等于1的话点亮LED
//【注:RxBuf数组和TxBuf数组中的元素是对应的】
}
else
{
TxBuf[0] = 0;
}
nrf_trans(TxBuf);//将待发送的数据写入NRF24L01
while_times = 50;//检测是否发送成功 循环检测?次 【可更改,让接收循环次数大于发送循环次数效果较好】
while(while_times-- ) //发送超时,或者发送成功,跳出循环 进入接收模式
{
get_nrf_sta();//获取状态标志
if(TX_DS == 1)//发送成功,跳出循环
break;
}
//===== 接收模式 =====
nrf_RxMod();
while_times = 150;//检测是否接收成功 循环检测?次 【可更改,让接收循环次数大于发送循环次数效果较好】
while(while_times--) //接收超时或者接收成功,跳出循环 进入发送模式
{
get_nrf_sta();//获取状态标志
if(RX_DR == 1)//接收成功
{
nrf_read(RxBuf);//接收成功后,将NRF24L01接收到的数据读到单片机的RxBuf数组中。
break;//跳出循环
}
}
if(RX_DR == 1)//是因为接收到数据,而不是因为超时才跳出循环
{
if(RxBuf[0] == 1)
LED_ON;
else if(RxBuf[0] == 0)
LED_OFF;
}
}
}
Endman

