久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開始

搜索
查看: 4411|回復(fù): 5
打印 上一主題 下一主題
收起左側(cè)

跪求NRF24L01收發(fā)程序,分開的

[復(fù)制鏈接]
樓主
ID:78515 發(fā)表于 2015-6-30 15:05 | 只看該作者
一般的2.4G模塊廠家都提供例程文件,買模塊最好找一家專業(yè)的有技術(shù)支持的公司,就算貴點(diǎn)學(xué)到知識(shí)也值得,買來(lái)無(wú)技術(shù)支持很難應(yīng)用的。我們公司專業(yè)研發(fā)無(wú)線模塊,有2.4G的收發(fā)例程文件。安陽(yáng)市新世紀(jì)電子研究所 需要聯(lián)系我吧,QQ2376726675
回復(fù)

使用道具 舉報(bào)

沙發(fā)
ID:144022 發(fā)表于 2016-11-1 23:34 | 只看該作者
我也在研究,好難玩啊
回復(fù)

使用道具 舉報(bào)

板凳
ID:150002 發(fā)表于 2016-11-24 20:55 | 只看該作者
快被整死了
回復(fù)

使用道具 舉報(bào)

地板
ID:400885 發(fā)表于 2018-9-21 10:52 | 只看該作者
  1. #include <reg51.h>
  2. #define uchar unsigned char
  3. #define uint unsigned int
  4. sbit CE   = P0^0;  // Chip Enable pin signal (output)
  5. sbit CSN  = P0^1;  // Slave Select pin, (output to CSN, nRF24L01)
  6. sbit IRQ  = P0^5;  // Interrupt signal, from nRF24L01 (input)
  7. sbit MISO = P0^4;  // Master In, Slave Out pin (input)
  8. sbit MOSI = P0^3;  // Serial Clock pin, (output)
  9. sbit SCK  = P0^2;  // Master Out, Slave In pin (output)

  10. // SPI(nRF24L01) commands
  11. #define READ_REG    0x00  // Define read command to register
  12. #define WRITE_REG   0x20  // Define write command to register
  13. #define RD_RX_PLOAD 0x61  // Define RX payload register address
  14. #define WR_TX_PLOAD 0xA0  // Define TX payload register address
  15. #define FLUSH_TX    0xE1  // Define flush TX register command
  16. #define FLUSH_RX    0xE2  // Define flush RX register command
  17. #define REUSE_TX_PL 0xE3  // Define reuse TX payload register command
  18. #define NOP         0xFF  // Define No Operation, might be used to read status register

  19. // SPI(nRF24L01) registers(addresses)
  20. #define CONFIG      0x00  // 'Config' register address
  21. #define EN_AA       0x01  // 'Enable Auto Acknowledgment' register address
  22. #define EN_RXADDR   0x02  // 'Enabled RX addresses' register address
  23. #define SETUP_AW    0x03  // 'Setup address width' register address
  24. #define SETUP_RETR  0x04  // 'Setup Auto. Retrans' register address
  25. #define RF_CH       0x05  // 'RF channel' register address
  26. #define RF_SETUP    0x06  // 'RF setup' register address
  27. #define STATUS      0x07  // 'Status' register address
  28. #define OBSERVE_TX  0x08  // 'Observe TX' register address
  29. #define CD          0x09  // 'Carrier Detect' register address
  30. #define RX_ADDR_P0  0x0A  // 'RX address pipe0' register address
  31. #define RX_ADDR_P1  0x0B  // 'RX address pipe1' register address
  32. #define RX_ADDR_P2  0x0C  // 'RX address pipe2' register address
  33. #define RX_ADDR_P3  0x0D  // 'RX address pipe3' register address
  34. #define RX_ADDR_P4  0x0E  // 'RX address pipe4' register address
  35. #define RX_ADDR_P5  0x0F  // 'RX address pipe5' register address
  36. #define TX_ADDR     0x10  // 'TX address' register address
  37. #define RX_PW_P0    0x11  // 'RX payload width, pipe0' register address
  38. #define RX_PW_P1    0x12  // 'RX payload width, pipe1' register address
  39. #define RX_PW_P2    0x13  // 'RX payload width, pipe2' register address
  40. #define RX_PW_P3    0x14  // 'RX payload width, pipe3' register address
  41. #define RX_PW_P4    0x15  // 'RX payload width, pipe4' register address
  42. #define RX_PW_P5    0x16  // 'RX payload width, pipe5' register address
  43. #define FIFO_STATUS 0x17  // 'FIFO Status Register' register address
  44. #define TX_ADR_WIDTH   5  // 5字節(jié)寬度的發(fā)送/接收地址
  45. #define TX_PLOAD_WIDTH 4  // 數(shù)據(jù)通道有效數(shù)據(jù)寬度
  46. #define LED P1

  47. uchar code TX_ADDRESS[TX_ADR_WIDTH] = {0x34,0x43,0x10,0x10,0x01};  // 定義一個(gè)靜態(tài)發(fā)送地址
  48. uchar RX_BUF[TX_PLOAD_WIDTH];
  49. uchar TX_BUF[TX_PLOAD_WIDTH];
  50. uchar flag;
  51. uchar DATA = 0x01;
  52. uchar bdata sta;
  53. sbit  RX_DR = sta^6;
  54. sbit  TX_DS = sta^5;
  55. sbit  MAX_RT = sta^4;

  56. void init_io(void)
  57. {
  58. CE  = 0;        // 待機(jī)
  59. CSN = 1;        // SPI禁止
  60. SCK = 0;        // SPI時(shí)鐘置低
  61. IRQ = 1;        // 中斷復(fù)位
  62. LED = 0xff; // 關(guān)閉指示燈
  63. }

  64. void delay_ms(uchar x)
  65. {
  66.     uchar i, j;
  67.     i = 0;
  68.     for(i=0; i<x; i++)
  69.     {
  70.        j = 250;
  71.        while(--j);
  72.   j = 250;
  73.        while(--j);
  74.     }
  75. }

  76. uchar SPI_RW(uchar byte)
  77. {
  78. uchar i;
  79.     for(i=0; i<8; i++)          // 循環(huán)8次
  80.     {
  81.     MOSI = (byte & 0x80);   // byte最高位輸出到MOSI
  82.     byte <<= 1;             // 低一位移位到最高位
  83.     SCK = 1;                // 拉高SCK,nRF24L01從MOSI讀入1位數(shù)據(jù),同時(shí)從MISO輸出1位數(shù)據(jù)
  84.     byte |= MISO;       // 讀MISO到byte最低位
  85.     SCK = 0;             // SCK置低
  86.     }
  87.     return(byte);           // 返回讀出的一字節(jié)
  88. }

  89. uchar SPI_RW_Reg(uchar reg, uchar value)
  90. {
  91. uchar status;
  92.   CSN = 0;                   // CSN置低,開始傳輸數(shù)據(jù)
  93.   status = SPI_RW(reg);      // 選擇寄存器,同時(shí)返回狀態(tài)字
  94.   SPI_RW(value);             // 然后寫數(shù)據(jù)到該寄存器
  95.   CSN = 1;                   // CSN拉高,結(jié)束數(shù)據(jù)傳輸
  96.   return(status);            // 返回狀態(tài)寄存器
  97. }

  98. uchar SPI_Read(uchar reg)
  99. {
  100. uchar reg_val;
  101.   CSN = 0;                    // CSN置低,開始傳輸數(shù)據(jù)
  102.   SPI_RW(reg);                // 選擇寄存器
  103.   reg_val = SPI_RW(0);        // 然后從該寄存器讀數(shù)據(jù)
  104.   CSN = 1;                    // CSN拉高,結(jié)束數(shù)據(jù)傳輸
  105.   return(reg_val);            // 返回寄存器數(shù)據(jù)
  106. }

  107. uchar SPI_Read_Buf(uchar reg, uchar * pBuf, uchar bytes)
  108. {
  109. uchar status, i;
  110.   CSN = 0;                    // CSN置低,開始傳輸數(shù)據(jù)
  111.   status = SPI_RW(reg);       // 選擇寄存器,同時(shí)返回狀態(tài)字
  112.   for(i=0; i<bytes; i++)
  113.     pBuf[i] = SPI_RW(0);    // 逐個(gè)字節(jié)從nRF24L01讀出
  114.   CSN = 1;                    // CSN拉高,結(jié)束數(shù)據(jù)傳輸
  115.   return(status);             // 返回狀態(tài)寄存器
  116. }

  117. uchar SPI_Write_Buf(uchar reg, uchar * pBuf, uchar bytes)
  118. {
  119. uchar status, i;
  120.   CSN = 0;                    // CSN置低,開始傳輸數(shù)據(jù)
  121.   status = SPI_RW(reg);       // 選擇寄存器,同時(shí)返回狀態(tài)字
  122.   for(i=0; i<bytes; i++)
  123.     SPI_RW(pBuf[i]);        // 逐個(gè)字節(jié)寫入nRF24L01
  124.   CSN = 1;                    // CSN拉高,結(jié)束數(shù)據(jù)傳輸
  125.   return(status);             // 返回狀態(tài)寄存器
  126. }

  127. void RX_Mode(void)
  128. {
  129. CE = 0;
  130.   SPI_Write_Buf(WRITE_REG + RX_ADDR_P0, TX_ADDRESS, TX_ADR_WIDTH);  // 接收設(shè)備接收通道0使用和發(fā)送設(shè)備相同的發(fā)送地址
  131.   SPI_RW_Reg(WRITE_REG + EN_AA, 0x01);               // 使能接收通道0自動(dòng)應(yīng)答
  132.   SPI_RW_Reg(WRITE_REG + EN_RXADDR, 0x01);           // 使能接收通道0
  133.   SPI_RW_Reg(WRITE_REG + RF_CH, 40);                 // 選擇射頻通道0x40
  134.   SPI_RW_Reg(WRITE_REG + RX_PW_P0, TX_PLOAD_WIDTH);  // 接收通道0選擇和發(fā)送通道相同有效數(shù)據(jù)寬度
  135.   SPI_RW_Reg(WRITE_REG + RF_SETUP, 0x07);            // 數(shù)據(jù)傳輸率1Mbps,發(fā)射功率0dBm,低噪聲放大器增益
  136.   SPI_RW_Reg(WRITE_REG + CONFIG, 0x0f);              // CRC使能,16位CRC校驗(yàn),上電,接收模式
  137.   CE = 1;                                            // 拉高CE啟動(dòng)接收設(shè)備
  138. }

  139. void TX_Mode(uchar * BUF)
  140. {
  141. CE = 0;
  142.   SPI_Write_Buf(WRITE_REG + TX_ADDR, TX_ADDRESS, TX_ADR_WIDTH);     // 寫入發(fā)送地址
  143.   SPI_Write_Buf(WRITE_REG + RX_ADDR_P0, TX_ADDRESS, TX_ADR_WIDTH);  // 為了應(yīng)答接收設(shè)備,接收通道0地址和發(fā)送地址相同
  144.   SPI_Write_Buf(WR_TX_PLOAD, BUF, TX_PLOAD_WIDTH);                  // 寫數(shù)據(jù)包到TX FIFO
  145.   SPI_RW_Reg(WRITE_REG + EN_AA, 0x01);       // 使能接收通道0自動(dòng)應(yīng)答
  146.   SPI_RW_Reg(WRITE_REG + EN_RXADDR, 0x01);   // 使能接收通道0
  147.   SPI_RW_Reg(WRITE_REG + SETUP_RETR, 0x0a);  // 自動(dòng)重發(fā)延時(shí)等待250us+86us,自動(dòng)重發(fā)10次
  148.   SPI_RW_Reg(WRITE_REG + RF_CH, 40);         // 選擇射頻通道0x40
  149.   SPI_RW_Reg(WRITE_REG + RF_SETUP, 0x07);    // 數(shù)據(jù)傳輸率1Mbps,發(fā)射功率0dBm,低噪聲放大器增益
  150.   SPI_RW_Reg(WRITE_REG + CONFIG, 0x0e);      // CRC使能,16位CRC校驗(yàn),上電
  151. CE = 1;
  152. }

  153. uchar Check_ACK(bit clear)
  154. {
  155. while(IRQ);
  156. sta = SPI_RW(NOP);                    // 返回狀態(tài)寄存器
  157. if(MAX_RT)
  158. if(clear)                         // 是否清除TX FIFO,沒有清除在復(fù)位MAX_RT中斷標(biāo)志后重發(fā)
  159. SPI_RW(FLUSH_TX);
  160. SPI_RW_Reg(WRITE_REG + STATUS, sta);  // 清除TX_DS或MAX_RT中斷標(biāo)志
  161. IRQ = 1;
  162. if(TX_DS)
  163. return(0x00);
  164. else
  165. return(0xff);
  166. }

  167. unsigned char nRF24L01_RxPacket(unsigned char* RX_BUF)
  168. {
  169.     unsigned char revale=0;

  170. //SetRX_Mode();

  171. sta=SPI_Read(STATUS); // read register STATUS's value
  172. if(RX_DR) // if receive data ready (RX_DR) interrupt
  173. {
  174.    CE = 0;
  175. SPI_Read_Buf(RD_RX_PLOAD,RX_BUF,TX_PLOAD_WIDTH);// read receive payload from RX_FIFO buffer
  176. revale =1;//we have receive data
  177. }
  178. SPI_RW_Reg(WRITE_REG+STATUS,sta);// clear RX_DR or TX_DS or MAX_RT interrupt flag
  179. return revale;
  180. }

  181. void main(void)
  182. {
  183. uchar i;
  184. uchar reveal;
  185. init_io();              // 初始化IO
  186. RX_Mode();              // 設(shè)置為接收模式
  187. while(1)
  188. {
  189. reveal=nRF24L01_RxPacket(RX_BUF);
  190. if(reveal==1)           // 接受完成
  191. {
  192. reveal = 0;
  193. for(i=0;i<5;i++)
  194. {      
  195. LED = RX_BUF[i];
  196. delay_ms(250);
  197. delay_ms(250);
  198. }  
  199. }
  200. }
  201. }
復(fù)制代碼
回復(fù)

使用道具 舉報(bào)

5#
ID:400885 發(fā)表于 2018-9-21 10:53 | 只看該作者
  1. #include <reg51.h>
  2. #define uchar unsigned char
  3. #define uint unsigned int
  4. sbit CE   = P1^0;  // Chip Enable pin signal (output)
  5. sbit CSN  = P1^1;  // Slave Select pin, (output to CSN, nRF24L01)
  6. sbit IRQ  = P1^5;  // Interrupt signal, from nRF24L01 (input)
  7. sbit MISO = P1^4;  // Master In, Slave Out pin (input)
  8. sbit MOSI = P1^3;  // Serial Clock pin, (output)
  9. sbit SCK  = P1^2;  // Master Out, Slave In pin (output)
  10. // SPI(nRF24L01) commands
  11. #define READ_REG    0x00  // Define read command to register
  12. #define WRITE_REG   0x20  // Define write command to register
  13. #define RD_RX_PLOAD 0x61  // Define RX payload register address
  14. #define WR_TX_PLOAD 0xA0  // Define TX payload register address
  15. #define FLUSH_TX    0xE1  // Define flush TX register command
  16. #define FLUSH_RX    0xE2  // Define flush RX register command
  17. #define REUSE_TX_PL 0xE3  // Define reuse TX payload register command
  18. #define NOP         0xFF  // Define No Operation, might be used to read status register
  19. // SPI(nRF24L01) registers(addresses)
  20. #define CONFIG      0x00  // 'Config' register address
  21. #define EN_AA       0x01  // 'Enable Auto Acknowledgment' register address
  22. #define EN_RXADDR   0x02  // 'Enabled RX addresses' register address
  23. #define SETUP_AW    0x03  // 'Setup address width' register address
  24. #define SETUP_RETR  0x04  // 'Setup Auto. Retrans' register address
  25. #define RF_CH       0x05  // 'RF channel' register address
  26. #define RF_SETUP    0x06  // 'RF setup' register address
  27. #define STATUS      0x07  // 'Status' register address
  28. #define OBSERVE_TX  0x08  // 'Observe TX' register address
  29. #define CD          0x09  // 'Carrier Detect' register address
  30. #define RX_ADDR_P0  0x0A  // 'RX address pipe0' register address
  31. #define RX_ADDR_P1  0x0B  // 'RX address pipe1' register address
  32. #define RX_ADDR_P2  0x0C  // 'RX address pipe2' register address
  33. #define RX_ADDR_P3  0x0D  // 'RX address pipe3' register address
  34. #define RX_ADDR_P4  0x0E  // 'RX address pipe4' register address
  35. #define RX_ADDR_P5  0x0F  // 'RX address pipe5' register address
  36. #define TX_ADDR     0x10  // 'TX address' register address
  37. #define RX_PW_P0    0x11  // 'RX payload width, pipe0' register address
  38. #define RX_PW_P1    0x12  // 'RX payload width, pipe1' register address
  39. #define RX_PW_P2    0x13  // 'RX payload width, pipe2' register address
  40. #define RX_PW_P3    0x14  // 'RX payload width, pipe3' register address
  41. #define RX_PW_P4    0x15  // 'RX payload width, pipe4' register address
  42. #define RX_PW_P5    0x16  // 'RX payload width, pipe5' register address
  43. #define FIFO_STATUS 0x17  // 'FIFO Status Register' register address

  44. #define TX_ADR_WIDTH   5  // 5字節(jié)寬度的發(fā)送/接收地址
  45. #define TX_PLOAD_WIDTH 4  // 數(shù)據(jù)通道有效數(shù)據(jù)寬度
  46. uchar code TX_ADDRESS[TX_ADR_WIDTH] = {0x34,0x43,0x10,0x10,0x01};  // 定義一個(gè)靜態(tài)發(fā)送地址
  47. uchar RX_BUF[TX_PLOAD_WIDTH];
  48. uchar TX_BUF[TX_PLOAD_WIDTH];
  49. uchar flag;
  50. uchar DATA = 0x01;
  51. uchar bdata sta;
  52. sbit  RX_DR  = sta^6;
  53. sbit  TX_DS  = sta^5;
  54. sbit  MAX_RT = sta^4;

  55. void init_io(void)
  56. {
  57. CE  = 0;        // 待機(jī)
  58. CSN = 1;        // SPI禁止
  59. SCK = 0;        // SPI時(shí)鐘置低
  60. IRQ = 1;        // 中斷復(fù)位
  61. }

  62. void delay_ms(uchar x)
  63. {
  64.     uchar i, j;
  65.     i = 0;
  66.     for(i=0; i<x; i++)
  67.     {
  68.        j = 250;
  69.        while(--j);
  70.     j = 250;
  71.        while(--j);
  72.     }
  73. }

  74. uchar SPI_RW(uchar byte)
  75. {
  76. uchar i;
  77.     for(i=0; i<8; i++)          // 循環(huán)8次
  78.     {
  79.      MOSI = (byte & 0x80);   // byte最高位輸出到MOSI
  80.      byte <<= 1;             // 低一位移位到最高位
  81.      SCK = 1;                // 拉高SCK,nRF24L01從MOSI讀入1位數(shù)據(jù),同時(shí)從MISO輸出1位數(shù)據(jù)
  82.      byte |= MISO;        // 讀MISO到byte最低位
  83.      SCK = 0;             // SCK置低
  84.     }
  85.     return(byte);            // 返回讀出的一字節(jié)
  86. }

  87. uchar SPI_RW_Reg(uchar reg, uchar value)
  88. {
  89. uchar status;
  90.    CSN = 0;                   // CSN置低,開始傳輸數(shù)據(jù)
  91.    status = SPI_RW(reg);      // 選擇寄存器,同時(shí)返回狀態(tài)字
  92.    SPI_RW(value);             // 然后寫數(shù)據(jù)到該寄存器
  93.    CSN = 1;                   // CSN拉高,結(jié)束數(shù)據(jù)傳輸
  94.    return(status);            // 返回狀態(tài)寄存器
  95. }

  96. uchar SPI_Read(uchar reg)
  97. {
  98. uchar reg_val;
  99.    CSN = 0;                    // CSN置低,開始傳輸數(shù)據(jù)
  100.    SPI_RW(reg);                // 選擇寄存器
  101.    reg_val = SPI_RW(0);        // 然后從該寄存器讀數(shù)據(jù)
  102.    CSN = 1;                    // CSN拉高,結(jié)束數(shù)據(jù)傳輸
  103.    return(reg_val);            // 返回寄存器數(shù)據(jù)
  104. }

  105. uchar SPI_Read_Buf(uchar reg, uchar * pBuf, uchar bytes)
  106. {
  107. uchar status, i;
  108.    CSN = 0;                    // CSN置低,開始傳輸數(shù)據(jù)
  109.    status = SPI_RW(reg);       // 選擇寄存器,同時(shí)返回狀態(tài)字
  110.    for(i=0; i<bytes; i++)
  111.      pBuf[i] = SPI_RW(0);    // 逐個(gè)字節(jié)從nRF24L01讀出
  112.    CSN = 1;                    // CSN拉高,結(jié)束數(shù)據(jù)傳輸
  113.    return(status);             // 返回狀態(tài)寄存器
  114. }

  115. uchar SPI_Write_Buf(uchar reg, uchar * pBuf, uchar bytes)
  116. {
  117. uchar status, i;
  118.    CSN = 0;                    // CSN置低,開始傳輸數(shù)據(jù)
  119.    status = SPI_RW(reg);       // 選擇寄存器,同時(shí)返回狀態(tài)字
  120.    for(i=0; i<bytes; i++)
  121.      SPI_RW(pBuf[i]);        // 逐個(gè)字節(jié)寫入nRF24L01
  122.    CSN = 1;                    // CSN拉高,結(jié)束數(shù)據(jù)傳輸
  123.    return(status);             // 返回狀態(tài)寄存器
  124. }

  125. void RX_Mode(void)
  126. {
  127. CE = 0;
  128.    SPI_Write_Buf(WRITE_REG + RX_ADDR_P0, TX_ADDRESS, TX_ADR_WIDTH);  // 接收設(shè)備接收通道0使用和發(fā)送設(shè)備相同的發(fā)送地址
  129.    SPI_RW_Reg(WRITE_REG + EN_AA, 0x01);               // 使能接收通道0自動(dòng)應(yīng)答
  130.    SPI_RW_Reg(WRITE_REG + EN_RXADDR, 0x01);           // 使能接收通道0
  131.    SPI_RW_Reg(WRITE_REG + RF_CH, 40);                 // 選擇射頻通道0x40
  132.    SPI_RW_Reg(WRITE_REG + RX_PW_P0, TX_PLOAD_WIDTH);  // 接收通道0選擇和發(fā)送通道相同有效數(shù)據(jù)寬度
  133.    SPI_RW_Reg(WRITE_REG + RF_SETUP, 0x07);            // 數(shù)據(jù)傳輸率1Mbps,發(fā)射功率0dBm,低噪聲放大器增益
  134.    SPI_RW_Reg(WRITE_REG + CONFIG, 0x0f);              // CRC使能,16位CRC校驗(yàn),上電,接收模式
  135.    CE = 1;                                            // 拉高CE啟動(dòng)接收設(shè)備
  136. }

  137. void TX_Mode(uchar * BUF)
  138. {
  139. CE = 0;
  140.    SPI_Write_Buf(WRITE_REG + TX_ADDR, TX_ADDRESS, TX_ADR_WIDTH);     // 寫入發(fā)送地址
  141.    SPI_Write_Buf(WRITE_REG + RX_ADDR_P0, TX_ADDRESS, TX_ADR_WIDTH);  // 為了應(yīng)答接收設(shè)備,接收通道0地址和發(fā)送地址相同
  142.    SPI_Write_Buf(WR_TX_PLOAD, BUF, TX_PLOAD_WIDTH);                  // 寫數(shù)據(jù)包到TX FIFO
  143.    SPI_RW_Reg(WRITE_REG + EN_AA, 0x01);       // 使能接收通道0自動(dòng)應(yīng)答
  144.    SPI_RW_Reg(WRITE_REG + EN_RXADDR, 0x01);   // 使能接收通道0
  145.    SPI_RW_Reg(WRITE_REG + SETUP_RETR, 0x0a);  // 自動(dòng)重發(fā)延時(shí)等待250us+86us,自動(dòng)重發(fā)10次
  146.    SPI_RW_Reg(WRITE_REG + RF_CH, 40);         // 選擇射頻通道0x40
  147.    SPI_RW_Reg(WRITE_REG + RF_SETUP, 0x07);    // 數(shù)據(jù)傳輸率1Mbps,發(fā)射功率0dBm,低噪聲放大器增益
  148.    SPI_RW_Reg(WRITE_REG + CONFIG, 0x0e);      // CRC使能,16位CRC校驗(yàn),上電
  149. CE = 1;
  150. }

  151. uchar Check_ACK(bit clear)
  152. {
  153. while(IRQ);
  154. sta = SPI_RW(NOP);                    // 返回狀態(tài)寄存器
  155. if(MAX_RT)
  156.   if(clear)                         // 是否清除TX FIFO,沒有清除在復(fù)位MAX_RT中斷標(biāo)志后重發(fā)
  157.    SPI_RW(FLUSH_TX);
  158. SPI_RW_Reg(WRITE_REG + STATUS, sta);  // 清除TX_DS或MAX_RT中斷標(biāo)志
  159. IRQ = 1;
  160. if(TX_DS)
  161.   return(0x00);
  162. else
  163.   return(0xff);
  164. }

  165. unsigned char nRF24L01_RxPacket(unsigned char* RX_BUF)
  166. {
  167.     unsigned char revale=0;
  168. //SetRX_Mode();
  169. sta=SPI_Read(STATUS); // read register STATUS's value
  170. if(RX_DR)    // if receive data ready (RX_DR) interrupt
  171. {
  172.      CE = 0;
  173.   SPI_Read_Buf(RD_RX_PLOAD,RX_BUF,TX_PLOAD_WIDTH);// read receive payload from RX_FIFO buffer
  174.   revale =1;//we have receive data
  175. }
  176. SPI_RW_Reg(WRITE_REG+STATUS,sta);// clear RX_DR or TX_DS or MAX_RT interrupt flag

  177. return revale;
  178. }

  179. void main(void)
  180. {
  181. uchar a[5]={0xfe,0xfd,0xfc,0xf0,0x1d};
  182. uchar i;
  183. init_io();                // 初始化IO
  184. // RX_Mode();                // 設(shè)置為接收模式
  185. while(1)
  186. {
  187.   for(i=0;i<5;i++)
  188.   {
  189.    TX_BUF[i] = a[i];          // 數(shù)據(jù)送到緩存
  190.    TX_Mode(TX_BUF);   // 把nRF24L01設(shè)置為發(fā)送模式并發(fā)送數(shù)據(jù)
  191.    Check_ACK(1);               // 等待發(fā)送完畢,清除TX FIFO
  192.    delay_ms(250);
  193.    delay_ms(250);
  194. // RX_Mode();
  195.   }  
  196. }
  197. }
復(fù)制代碼
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 亚洲情综合五月天 | 久久一区二区三区四区 | 一区二区三区国产好的精 | 日韩在线视频免费观看 | 嫩草视频在线看 | 欧美99久久精品乱码影视 | 欧美日韩综合精品 | 天天操网 | 亚洲国产精品一区二区久久 | 午夜视频免费在线观看 | 欧美日韩精品一区二区天天拍 | www.黄色片视频 | 久久九精品 | 亚洲第一网站 | 在线成人免费观看 | 在线区| 亚洲激情在线观看 | 久久亚洲欧美日韩精品专区 | 久久av网站 | 欧美日韩综合 | 国产99免费 | 精品日韩欧美一区二区 | 国产精品福利网站 | 亚洲狠狠爱 | 亚洲一区二区三区免费在线 | 一区视频在线 | 国产中文一区二区三区 | 国产精品免费视频一区 | 伊人爽 | 亚洲精品一区二区三区中文字幕 | 男女精品久久 | 在线日韩欧美 | 免费福利视频一区二区三区 | 日韩精品在线一区 | 免费av直接看 | 国产片网站 | 亚洲精品欧美一区二区三区 | 伊人看片 | 看真人视频一级毛片 | 亚洲视频免费在线看 | 日韩欧美国产成人一区二区 |