|
这个是收发一体的程序,完整的程序在附件里面附件
void main(void)
{
uint while_times = 0;
led6 =0;
led5 =0; // led0 = 0;
lcd_delay(1000);
init_NRF24L01();
lcd_delay(100);
while(1)
{
//===== 发送模式 =====
// if(KEY_0 == 0)//
// {
// TxBuf[1] = 1;
// TxBuf[2] = 1;
nrf_TxMod(); //对相关寄存器配置成发送模式
if(KEY_0 == 0) { TxBuf[1] = 0;led2 = 0; }
if(KEY_1 == 0) { TxBuf[1] = 1; led2 = 1;}
// else { TxBuf[1] = 1; }
if(KEY_2 == 0) {TxBuf[2] = 0;led0=0;}
if(KEY_3 == 0) {TxBuf[2] = 1;led0=1;}
//else TxBuf[2] = 1;
//把1存入TxBuf[1]中,然后发送出去;接收程序判断RxBuf[1]的值,等于1的话点亮LED
//把1存入TxBuf[2]中,然后发送出去;接收程序判断RxBuf[2]的值,等于1的话点亮LED
nrf_trans(TxBuf); //将待发送的数据写入NRF24L01
while_times = 80; //检测是否发送成功 循环检测?次 【可更改,让接收循环次数大于发送循环次数效果较好】
while(while_times-- ) //发送超时,或者发送成功,跳出循环 进入接收模式
{
get_nrf_sta(); //获取状态标志
if(TX_DS == 1) //发送成功,跳出循环
{break;}
}
// }
// //===== 接收模式 =====
// nrf_RxMod(); //对相关寄存器配置成接受模式
// while_times = 160; //检测是否接收成功 循环检测?次 【可更改,让接收循环次数大于发送循环次数效果较好】
// while(while_times--) //接收超时或者接收成功,跳出循环 进入发送模式
// {
// get_nrf_sta(); //获取状态标志
// if(RX_DR == 1) //接收成功
// {
// nrf_read(RxBuf); //接收成功后,将NRF24L01接收到的数据读到单片机的RxBuf数组中。
// led0=1;
// break; //跳出循环
// }else led0=0;
// }
// if(KEY_0 == 0) led7= 0;
// if(KEY_1 == 0) led7= 1;
// if(RX_DR == 1) //是因为接收到数据,而不是因为超时才跳出循环
// {
//
// if(RxBuf[1] == 0) led2 = 1;
// else led2 = 0;
//
// if(RxBuf[2] == 0) led3 = 1;
// else led3 = 0;
// }
}
}
感觉是接受那部分的,问题。引脚它还是标错的,后来换过新模块来调试了。有没有大神帮看一下。
|
评分
-
查看全部评分
|