|
發(fā)送
#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); //數(shù)據(jù)存入寄存器
SPI_Read_Buf(TX_ADDR,rx_buf,5); //數(shù)據(jù)讀出寄存器
for(t=0;t<5;t++)if(rx_buf[t]!=0XA5)break;
if(t==5) {led=0;delay(20000);led=1;} //驗(yàn)證數(shù)據(jù),正常則led閃爍
ifnnrf_tx_mode(); //設(shè)為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); //發(fā)送數(shù)據(jù)
while(NRF24L01_TxPacket(tmp_buf)!=TX_OK); //發(fā)送失敗則一直發(fā)送,直到對方接受成功為止
tmp_buf[31]=0;
led=1;
}
}
}
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
接收
/***********************
小板測試時如果沒有效果
就將2.4G拔下,在插上,按下復(fù)位,再次發(fā)送數(shù)據(jù)即可
如果發(fā)送數(shù)據(jù)時led閃爍,應(yīng)該是發(fā)送數(shù)據(jù)的按鍵沒有去抖
***************************/
#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(); //設(shè)置為RX模式
while(1)
{
if(NRF24L01_RxPacket(tmp_buf)==RX_OK)//一旦接收到信息,則顯示出來.
{
if(tmp_buf[31]=='a') led=(!led); //led取反
}
}
}
就這么最簡單的程序 都會失敗 |
|