新聞中心

EEPW首頁 > 嵌入式系統(tǒng) > 設計應用 > 基于PIC單片機的NRF2401接受程序

基于PIC單片機的NRF2401接受程序

作者: 時間:2016-11-29 來源:網(wǎng)絡 收藏
/*************************************************************NRF2401初始化配置函數(shù)名稱:NRF2401_Init();輸入?yún)?shù):無輸出參數(shù):無備 注:具體配置見NRF2401_Deploy_Data數(shù)組該函數(shù)為15個字節(jié)全部配置若只需要改變收發(fā)狀態(tài),僅需發(fā)送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);//發(fā)送數(shù)據(jù)NRF2401_Mode_RT();//從配置模式退出,進入到收發(fā)模式,使配置有效}///*************************************************************NRF2401收發(fā)狀態(tài)配置函數(shù)名稱:NRF2401_R_and_T();輸入?yún)?shù):n n>0 收狀態(tài)n=0 發(fā)狀態(tài)ch 要選擇的頻道輸出參數(shù):無備 注:用于更改收發(fā)模式和通信頻道最后兩個字節(jié)具體配置見NRF2401_Deploy_Data數(shù)組僅用于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();//從配置模式退出,進入到收發(fā)模式Delay10TCYx(2);}///*************************************************************NRF2401發(fā)送數(shù)據(jù)函數(shù)名稱:NRF2401_Send();輸入?yún)?shù):*Add 發(fā)送目標地址*Dat 待發(fā)送數(shù)據(jù)塊首地址輸出參數(shù):無備 注:確保該函數(shù)執(zhí)行前NRF2401處于發(fā)射狀態(tài)*************************************************************/void NRF2401_Send(unsigned char *Add,unsigned char *Dat){NRF2401_Mode_RT();//配置芯片為收發(fā)模式//Delay10TCYx(2);//建立時間>5uSNRF2401_DataSerialSend(Add,4);//32位地址,根據(jù)最初的配置信息改動,或者NRF2401_Deploy_Data[12]>>2表示NRF2401_DataSerialSend(Dat,10);//10bety數(shù)據(jù),根據(jù)最初的配置信息改動,或者NRF2401_Deploy_Data[1]表示NRF2401_Mode_Free();//拉低CE,使芯片開始發(fā)送}///*************************************************************主函數(shù)*************************************************************/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 下一頁

評論


技術專區(qū)

關閉