新聞中心

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

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

        作者: 時間:2016-11-29 來源:網絡 收藏
        #include
        #include///*************************************************************引腳連接宏定義*************************************************************/#define DATA       LATBbits.LATB0//頻道1收發數據端#define CLK1       LATBbits.LATB1//頻道1時鐘#define DR1        LATBbits.LATB2//頻道1數據已準備好#define CS         LATBbits.LATB3//配置模式片選#define CE         LATBbits.LATB4//收發狀態控制#define PWR_UP     LATBbits.LATB5//芯片喚醒///*************************************************************狀態切換宏定義*************************************************************/#define NRF2401_Mode_RT()        PWR_UP=1;CE=1;CS=0;//收發#define NRF2401_Mode_Deploy()    PWR_UP=1;CE=0;CS=1;//配置#define NRF2401_Mode_Free()      PWR_UP=1;CE=0;CS=0;//空閑#define NRF2401_Mode_Off()       PWR_UP=0//關機///*************************************************************測試用數據*************************************************************/const unsigned char Dat[10]={1,2,3,4,5,6,7,8,9,10};///*************************************************************NRF2401配置數據備    注:當芯片未掉電,且需要切換收發方式時僅需要發送一個字節*************************************************************/const unsigned char NRF2401_Deploy_Data[15]={0x50,//DATA2_W通道二數據包長度80bit(10byte),DATA2_W<=256-ADDR_W-CRC(bit)0x50,//DATA2_W通道一數據包長度,DATA1_W<=256-ADDR_W-CRC(bit)0x00,//通道二地址(A24),ADDR20x00,//通道二地址(A23)0x00,//通道二地址(A22)0x00,//通道二地址(A21)0x02,//通道二地址(A20)0x00,//通道一地址(A14),ADDR1=0x00000000ff0x00,//通道一地址(A13)0x00,//通道一地址(A12)0x00,//通道一地址(A11)0xff,//通道一地址(A10)0x83,//b7~b2:接收地址寬度32位,(和發送端一致,不超過40bit),ADDR_W//b1~b0:16CRC模式(01-8bit;11-16bit;00/10-no);b1,CRC_L;b0,CRC_EN0x6F,//b15:通道二禁止(0-通道1;1-通道1和2),RX2_EN//b14:通訊模式為ShockBurat(0-Direct模式,1-ShockBurst模式),CM//b13:通信速率為1M(0-250Kbps;1-1Mbps),RFDR_SB//b12~b10:晶振選擇16M(000-4M;001-8M;010-12M;011-16M),XO_F//b9~b8:發射功率0db(00,01,10,11>-20db,-10db,-5db,0db),RF_PWR0x05 //b7~b1:頻道選擇4,RF_CH#//b0:配置成收模式(0-發送;1-接收),RXEN};///*************************************************************IO初始化函數函數名稱:Init_IOforNRF2401();輸入參數:無輸出參數:無備    注:無*************************************************************/void Init_IOforNRF2401(void){TRISBbits.TRISB0=0;//設置DATA引腳為輸出TRISBbits.TRISB1=0;//設置CLK引腳為輸出TRISBbits.TRISB2=1;//設置DR1引腳為輸入TRISBbits.TRISB3=0;//設置CS引腳為輸出TRISBbits.TRISB4=0;//設置CE引腳為輸出TRISBbits.TRISB5=0;//設置PWR_UP引腳為輸出}///*************************************************************數據串行發送函數函數名稱:NRF2401_DataSerialSend();輸入參數:待發送數據塊首地址,待發送數據個數輸出參數:無備    注:調用前要對NRF2401的工作模式做相應的設定*************************************************************/void NRF2401_DataSerialSend(unsigned char *p,unsigned char n){unsigned char i,j;//unsigned char d;//TRISBbits.TRISB0=0;//設置DATA引腳為輸出TRISBbits.TRISB1=0;//設置CLK引腳為輸出//CLK1=0;for(i=0;i500nS}else{DATA=0;}//Nop();// Nop();CLK1=1;//最短時鐘寬度500nSd<<=1;//Nop();// Nop();CLK1=0;}}DATA=0;//CLK1=0;}///*************************************************************數據串行讀取函數函數名稱:NRF2401_DataSerialRead();輸入參數:接收數覺存儲區首地址,接收數覺個數輸出參數:接收是否與設置吻合備    注:調用前要對NRF2401的工作模式做相應的設定*************************************************************/unsigned char NRF2401_DataSerialRead(unsigned char *p,unsigned char n){unsigned char i,j;unsigned char d;TRISBbits.TRISB0=1;//設置DATA引腳為輸入TRISBbits.TRISB1=0;//設置CLK引腳為輸出CLK1=0;for(i=0;i
        				
                    
                        
        			
        							
        上一頁 1 2 下一頁

        評論


        技術專區

        關閉
        主站蜘蛛池模板: 若尔盖县| 峨眉山市| 双峰县| 泰兴市| 中方县| 屏东市| 赤峰市| 潞西市| 鄄城县| 盐源县| 新闻| 阳东县| 萨迦县| 博野县| 石狮市| 廊坊市| 滦南县| 鱼台县| 本溪| 昔阳县| 金平| 长阳| 银川市| 雅江县| 华宁县| 宜阳县| 福安市| 安乡县| 通辽市| 和田市| 通城县| 巴彦县| 永平县| 泰兴市| 钟山县| 宝坻区| 屏南县| 京山县| 翁源县| 金秀| 巴马|