|
!就發(fā)個(gè)貼!賺點(diǎn)黑幣 這個(gè)文件測(cè)試已經(jīng)通過
0.png (64.53 KB, 下載次數(shù): 41)
下載附件
2017-4-28 16:57 上傳
完整源碼下載:
NRF24L01測(cè)試程序【不區(qū)分收發(fā) 頭文件版 C51】.rar
(59.87 KB, 下載次數(shù): 24)
2017-4-28 13:38 上傳
點(diǎn)擊文件名下載附件
NRF2401收發(fā)測(cè)試 下載積分: 黑幣 -5
預(yù)覽:
- //=========================================================================
- //【注釋】:
- // 此工程內(nèi)的程序由STC12C5A60S2 11.0592MHz平臺(tái)測(cè)試成功
- // 使用前請(qǐng)根據(jù)實(shí)際情況更改“NRF24L01.H”和“SPI.H”內(nèi)的引腳配置,有如下6個(gè):CE,IRQ,MOSI,MISO,SCK,CSN
- // 按鍵與LED的引腳配置也根據(jù)實(shí)際情況更改
- // 發(fā)送與接收可共用該程序
- // 采用頭文件的方式編寫,使得程序更簡(jiǎn)潔明了,利于分工合作,新手朋友可以學(xué)習(xí)這種編程方法
- // 編譯出現(xiàn)的警告,是有子函數(shù)未調(diào)用的警告,沒有關(guān)系的。
- // 【功能介紹】:A單片機(jī)的按鍵按下,B單片機(jī)LED燈亮,否則滅;B單片機(jī)的按鍵按下,A單片機(jī)LED燈亮,否則滅。
- //=========================================================================
- #include "mcu.h"
- #include "NRF24L01.H"
- #define LED_ON P3|=(1<<6) //P36置一,LED亮,這種置一方法類似于STM32,推薦使用
- #define LED_OFF P3&=~(1<<6) //P36置零,LED滅
- #define KEY_STAUS (P2&(1<<0)) //P20為按鍵 ==0為按下,!=0 為彈起
- //===============
- //延時(shí)函數(shù)
- //===============
- void delayms(uint ms)//延時(shí)?個(gè) ms
- {
- unsigned char a,b;
- while(ms--)
- {
- for(b=64;b>0;b--) // 僅作為粗略延時(shí) 中斷繁忙時(shí)差距很大
- for(a=45;a>0;a--);
- }
- }
- //======================
- //主函數(shù)
- //======================
- void main(void)
- {
- uint while_times = 0;
- init_NRF24L01();
- delayms(300);
-
- while(1)
- {
- //===== 發(fā)送模式 =====
- nrf_TxMod();
- if(KEY_STAUS == 0) //按鍵按下,
- {
- TxBuf[0] = 1; //把1存入TxBuf[0]中,然后發(fā)送出去;接收程序判斷RxBuf[0]的值,等于1的話點(diǎn)亮LED
- //【注:RxBuf數(shù)組和TxBuf數(shù)組中的元素是對(duì)應(yīng)的】
- }
- else
- {
- TxBuf[0] = 0;
- }
- nrf_trans(TxBuf); //將待發(fā)送的數(shù)據(jù)寫入NRF24L01
- while_times = 30; //檢測(cè)是否發(fā)送成功 循環(huán)檢測(cè)?次 【可更改,讓接收循環(huán)次數(shù)大于發(fā)送循環(huán)次數(shù)效果較好】
- while(while_times-- ) //發(fā)送超時(shí),或者發(fā)送成功,跳出循環(huán) 進(jìn)入接收模式
- {
- get_nrf_sta(); //獲取狀態(tài)標(biāo)志
- if(TX_DS == 1) //發(fā)送成功,跳出循環(huán)
- break;
- }
- //===== 接收模式 =====
- nrf_RxMod();
- while_times = 120; //檢測(cè)是否接收成功 循環(huán)檢測(cè)?次 【可更改,讓接收循環(huán)次數(shù)大于發(fā)送循環(huán)次數(shù)效果較好】
- while(while_times--) //接收超時(shí)或者接收成功,跳出循環(huán) 進(jìn)入發(fā)送模式
- {
- get_nrf_sta(); //獲取狀態(tài)標(biāo)志
- if(RX_DR == 1) //接收成功
- {
- nrf_read(RxBuf); //接收成功后,將NRF24L01接收到的數(shù)據(jù)讀到單片機(jī)的RxBuf數(shù)組中。
- break; //跳出循環(huán)
- }
- }
- if(RX_DR == 1) //是因?yàn)榻邮盏綌?shù)據(jù),而不是因?yàn)槌瑫r(shí)才跳出循環(huán)
- {
- if(RxBuf[0] == 1)
- LED_ON;
- else if(RxBuf[0] == 0)
- LED_OFF;
- }
- }
- }
復(fù)制代碼
|
評(píng)分
-
查看全部評(píng)分
|