发送
#include<reg52.h>
#include"NRF_24L01.h"
sbit led=P1^0;
sbit key=P3^0;
uchar gled[8]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};
void main(void)
{
unsigned char t;
unsigned char tmp_buf[33]={0};
unsigned char buf[5]={0XA5,0XA5,0XA5,0XA5,0XA5};
init_nrf24l01_io(); //初始化
delay(20);
SPI_Write_Buf(WRITE_REG+TX_ADDR,buf,5); //数据存入寄存器
SPI_Read_Buf(TX_ADDR,rx_buf,5); //数据读出寄存器
for(t=0;t<5;t++)if(rx_buf[t]!=0XA5)break;
if(t==5) {led=0;delay(20000);led=1;} //验证数据,正常则led闪烁
ifnnrf_tx_mode(); //设为TX模式
while(1)
{
if(key==0)
{
led=0;
for(t=0;t<33;t++)
{
tmp_buf[t]=0;
}
tmp_buf[31]='a';
NRF24L01_TxPacket(tmp_buf); //发送数据
while(NRF24L01_TxPacket(tmp_buf)!=TX_OK); //发送失败则一直发送,直到对方接受成功为止
tmp_buf[31]=0;
led=1;
}
}
}
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
接收
/***********************
小板测试时如果没有效果
就将2.4G拔下,在插上,按下复位,再次发送数据即可
如果发送数据时led闪烁,应该是发送数据的按键没有去抖
***************************/
#include<reg52.h>
#include"NRF_24L01.h"
sbit led=P1^0;
void main(void)
{
unsigned char tmp_buf[33];
delay(200);
init_nrf24l01_io(); //初始化
delay(200);
led=1;
ifnnrf_rx_mode(); //设置为RX模式
while(1)
{
if(NRF24L01_RxPacket(tmp_buf)==RX_OK)//一旦接收到信息,则显示出来.
{
if(tmp_buf[31]=='a') led=(!led); //led取反
}
}
}
就这么最简单的程序 都会失败 |