新闻中心

EEPW首页 > 嵌入式系统 > 设计应用 > 基于PIC单片机的NRF2401接受程序

基于PIC单片机的NRF2401接受程序

作者: 时间:2016-11-29 来源:网络 收藏
/*************************************************************NRF2401初始化配置函数名称:NRF2401_Init();输入参数:无输出参数:无备 注:具体配置见NRF2401_Deploy_Data数组该函数为15个字节全部配置若只需要改变收发状态,仅需发送NRF2401_Deploy_Data[14]*************************************************************/void NRF2401_Init(void){NRF2401_Mode_Free();//进入待机Delay1KTCYx(3);//由待机进入配置延时3mSNRF2401_Mode_Deploy();//进入配置模式时引脚保持时间>5uS,两次通信间隔>50nSDelay10TCYx(3);NRF2401_DataSerialSend((unsigned char *)NRF2401_Deploy_Data,15);//发送数据NRF2401_Mode_RT();//从配置模式退出,进入到收发模式,使配置有效}///*************************************************************NRF2401收发状态配置函数名称:NRF2401_R_and_T();输入参数:n n>0 收状态n=0 发状态ch 要选择的频道输出参数:无备 注:用于更改收发模式和通信频道最后两个字节具体配置见NRF2401_Deploy_Data数组仅用于NRF2401被配置过,且没有掉电的情况*************************************************************/void NRF2401_R_and_T(unsigned char n,unsigned char ch){unsigned char i;NRF2401_Mode_Deploy();//进入配置模式,保持时间>5uSDelay10TCYx(2);if(n){ i=(ch<<1)|0x01;}else{i=(ch<<1)&0xfe;}NRF2401_DataSerialSend(&i,1);NRF2401_Mode_RT();//从配置模式退出,进入到收发模式Delay10TCYx(2);}///*************************************************************NRF2401发送数据函数名称:NRF2401_Send();输入参数:*Add 发送目标地址*Dat 待发送数据块首地址输出参数:无备 注:确保该函数执行前NRF2401处于发射状态*************************************************************/void NRF2401_Send(unsigned char *Add,unsigned char *Dat){NRF2401_Mode_RT();//配置芯片为收发模式//Delay10TCYx(2);//建立时间>5uSNRF2401_DataSerialSend(Add,4);//32位地址,根据最初的配置信息改动,或者NRF2401_Deploy_Data[12]>>2表示NRF2401_DataSerialSend(Dat,10);//10bety数据,根据最初的配置信息改动,或者NRF2401_Deploy_Data[1]表示NRF2401_Mode_Free();//拉低CE,使芯片开始发送}///*************************************************************主函数*************************************************************/void main(void){unsigned char DATA_for_R[10];unsigned char a,b,c,d,e,f,g,h,i,j;unsigned char k;ADCON1 = ADCON1 | 0x0f;//关闭模拟IOTRISA = 0x00;//A口为输出TRISAbits.TRISA5=0;//LED点亮Init_IOforNRF2401();//初始化端口NRF2401_Init();//按表格配置NRF2401//TRISB=0xff;while(1){//NRF2401_Init();//按表格配置NRF2401if(PORTBbits.RB2==1){LATAbits.LATA5=0;NRF2401_DataSerialRead(DATA_for_R,10);a=DATA_for_R[0];b=DATA_for_R[1];c=DATA_for_R[2];d=DATA_for_R[3];e=DATA_for_R[4];f=DATA_for_R[5];g=DATA_for_R[6];h=DATA_for_R[7];i=DATA_for_R[8];j=DATA_for_R[9]; for(k=0;k<10;k++){if(DATA_for_R[k]!=Dat[k]){LATAbits.LATA5=1;while(1);}}}else{LATAbits.LATA5=1;}}}
上一页 1 2 下一页

评论


技术专区

关闭