欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

標題: NRF24L01如何配置IRQ接收完(成功接收)數據后,進行外部中斷 [打印本頁]

作者: JF.y    時間: 2020-4-22 03:02
標題: NRF24L01如何配置IRQ接收完(成功接收)數據后,進行外部中斷
請大俠指示一下怎么配置這個參數。
我現在已經將單片機中的外部中斷0已啟用了。也已經將IRQ引腳接到了P32腳中。
單片機是STC89C52RC。

現在我的無線模塊是能正常通訊的,已經確認是能接收成功。

但是外部中斷0中的程序并未執行。

查了一下百度,說要在程序里先啟用IRQ中斷功能,請問,怎么啟用這個配置。

作者: xxpp2011    時間: 2020-4-22 10:02
/******************************************************************/
/*                   外部中斷初始化                               */
/******************************************************************/
void EX0init(void)
{
IT0 = 1;   //指定外部中斷0下降沿觸發,INT0 (P3.2)
EX0 = 1;   //使能外部中斷
EA = 1;    //開總中斷
}

作者: 小石頭123    時間: 2020-4-22 10:20
1、設置中斷寄存器中斷觸發方式IT
2、開啟外部中斷EX
3、開啟總中斷EA

根據51單片機中斷管腳 INT0 INT1
編寫中斷函數
作者: JF.y    時間: 2020-4-22 14:37
majianghua999 發表于 2020-4-22 12:22
這個問題首先要先確認一下RF的IRQ是否打開,別用的是掃描方式收發,那么肯定單片機部分是無法有中斷的。如 ...
  1. //===== 接收模式 =====
  2.                                         nrf_RxMod();
  3.                                         while_times = 120;                //檢測是否接收成功 循環檢測?次 【可更改,讓接收循環次數大于發送循環次數效果較好】
  4.                                         while(while_times--)         //接收超時或者接收成功,跳出循環 進入發送模式
  5.                                         {
  6.                                                 get_nrf_sta();                        //獲取狀態標志
  7.                                                 if(RX_DR == 1)                        //接收成功
  8.                                                 {       
  9.                                                         nrf_read(RxBuf);        //接收成功后,將NRF24L01接收到的數據讀到單片機的RxBuf數組中。
  10.                                                         break;                                                //跳出循環
  11.                                                 }
  12.                                         }
  13.                                         if(RX_DR == 1)                                //是因為接收到數據,而不是因為超時才跳出循環
  14.                                         {

  15.                                                 wuxian_zt=1;
  16.                                                
  17.                                                 if(RxBuf[0] == 1)               
  18.                                                 {       
  19.                                                         LED2=0;    //點亮LED
  20.                                                        
  21.                                                         go();
  22.                                                 }
  23.                                                 else if(RxBuf[0] == 0)
  24.                                                         LED2=1;
  25.                                                        
  26.                                                        
  27.                                         }
  28.                                         else   
  29.                                         {
  30.                                                 wuxian_zt=0;
  31.                                         }
  32.                                        
復制代碼

作者: JF.y    時間: 2020-4-22 14:37
我現在用的是if(RX_DR == 1)        這個指令來確認是否接收到數據的。

且是放到主函數,while循環里。




歡迎光臨 (http://m.raoushi.com/bbs/) Powered by Discuz! X3.1