⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 nrf24l01+̤

📁 nRF24L01无线模块6个接收通道
💻
📖 第 1 页 / 共 2 页
字号:
C51 COMPILER V7.00  NRF24L01                                                               04/05/2010 10:30:48 PAGE 1   


C51 COMPILER V7.00, COMPILATION OF MODULE NRF24L01
OBJECT MODULE PLACED IN nRF24L01.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE nRF24L01.C BROWSE DEBUG OBJECTEXTEND

stmt level    source

   1          #include"nRF24L01.h"
   2          
   3          
   4          uchar code TX_ADDRESS[TX_ADR_WIDTH] = {0xb1,0xb2,0xb3,0xb4,0x01};//0x34,0x43,0x10,0x10,0x01};  // 路由节点
             -地址
   5          uchar code RX_ADDRESS1[TX_ADR_WIDTH] = {0xb0,0xb2,0xb3,0xb4,0x01};//写地址寄存器是先写低字节,因此后面几个
             -字节相同
   6          uchar code RX_ADDRESS2[1] = {0xb1};
   7          uchar code RX_ADDRESS3[1] = {0xb2};
   8          uchar code RX_ADDRESS4[1] = {0xb3};
   9          uchar code RX_ADDRESS5[1] = {0xb4};
  10          uchar RX_BUF[TX_PLOAD_WIDTH];
  11          uchar TX_BUF[TX_PLOAD_WIDTH]=
  12          {
  13          0x01,0x02,0x03,0x4,0x05,0x06,0x07,0x08,
  14          0x09,0x10,0x11,0x12,0x13,0x14,0x15,0x16,
  15          0x17,0x18,0x19,0x20,0x21,0x22,0x23,0x24,
  16          0x25,0x26,0x27,0x28,0x29,0x30,0x31,0x32,
  17          };
  18          uchar flag,status;
  19          uchar DATA = 0x01;
  20          
  21          uchar bdata sta;
  22          sbit  RX_DR      = sta^6;
  23          sbit  TX_DS      = sta^5;
  24          sbit  MAX_RT = sta^4;
  25          /**************************************************/
  26          
  27          /**************************************************
  28          函数: init_io()
  29          
  30          描述:
  31              初始化IO
  32          /**************************************************/
  33          void init_io(void)
  34          {
  35   1              CE  = 0;        // 待机
  36   1              CSN = 1;        // SPI禁止
  37   1              SCK = 0;        // SPI时钟置低
  38   1              IRQ = 1;        // 中断复位
  39   1              LED = 0x00;             // 关闭指示灯
  40   1      }
  41          /**************************************************/
  42          
  43          /**************************************************
  44          函数:delay_ms()
  45          
  46          描述:
  47              延迟x毫秒
  48          /**************************************************/
  49          void delay_ms(uchar x)
  50          {
  51   1          uchar i, j;
  52   1          i = 0;
  53   1          for(i=0; i<x; i++)
C51 COMPILER V7.00  NRF24L01                                                               04/05/2010 10:30:48 PAGE 2   

  54   1          {
  55   2             j = 250;
  56   2             while(--j);
  57   2                 j = 250;
  58   2             while(--j);
  59   2          }
  60   1      }
  61          /**************************************************/
  62          /*延时函数
  63          /******************************************************************************************/
  64          void inerDelay_us(unsigned char n)
  65          {
  66   1              for(;n>0;n--)
  67   1                      _nop_();
  68   1      }
  69          /**************************************************
  70          函数:SPI_RW()
  71          
  72          描述:
  73              根据SPI协议,写一字节数据到nRF24L01,同时从nRF24L01
  74                  读出一字节
  75          /**************************************************/
  76          uchar SPI_RW(uchar byte)
  77          {
  78   1              uchar i;
  79   1              for(i=0; i<8; i++)          // 循环8次
  80   1              {
  81   2                      MOSI = (byte & 0x80);   // byte最高位输出到MOSI
  82   2                      byte <<= 1;             // 低一位移位到最高位
  83   2                      SCK = 1;                // 拉高SCK,nRF24L01从MOSI读入1位数据,同时从MISO输出1位数据
  84   2                      byte |= MISO;           // 读MISO到byte最低位
  85   2                      SCK = 0;                // SCK置低
  86   2              }
  87   1          return(byte);               // 返回读出的一字节
  88   1      }
  89          /**************************************************/
  90          
  91          /**************************************************
  92          函数:SPI_RW_Reg()
  93          
  94          描述:
  95              写数据value到reg寄存器
  96          /**************************************************/
  97          uchar SPI_RW_Reg(uchar reg, uchar value)
  98          {
  99   1              uchar status;
 100   1              CSN = 0;                   // CSN置低,开始传输数据
 101   1              status = SPI_RW(reg);      // 选择寄存器,同时返回状态字
 102   1              SPI_RW(value);             // 然后写数据到该寄存器
 103   1              CSN = 1;                   // CSN拉高,结束数据传输
 104   1              return(status);            // 返回状态寄存器
 105   1      }
 106          /**************************************************/
 107          
 108          /**************************************************
 109          函数:SPI_Read()
 110          
 111          描述:
 112              从reg寄存器读一字节
 113          /**************************************************/
 114          uchar SPI_Read(uchar reg)
 115          {
C51 COMPILER V7.00  NRF24L01                                                               04/05/2010 10:30:48 PAGE 3   

 116   1              uchar reg_val;
 117   1              CSN = 0;                    // CSN置低,开始传输数据
 118   1              SPI_RW(reg);                // 选择寄存器
 119   1              reg_val = SPI_RW(0);        // 然后从该寄存器读数据
 120   1              CSN = 1;                    // CSN拉高,结束数据传输
 121   1              return(reg_val);            // 返回寄存器数据
 122   1      }
 123          /**************************************************/
 124          
 125          /**************************************************
 126          函数:SPI_Read_Buf()
 127          
 128          描述:
 129              从reg寄存器读出bytes个字节,通常用来读取接收通道
 130                  数据或接收/发送地址
 131          /**************************************************/
 132          uchar SPI_Read_Buf(uchar reg, uchar * pBuf, uchar bytes)
 133          {
 134   1              uchar status, i;
 135   1              CSN = 0;                    // CSN置低,开始传输数据
 136   1              status = SPI_RW(reg);       // 选择寄存器,同时返回状态字
 137   1              for(i=0; i<bytes; i++)
 138   1              pBuf[i] = SPI_RW(0);    // 逐个字节从nRF24L01读出
 139   1              CSN = 1;                    // CSN拉高,结束数据传输
 140   1              return(status);             // 返回状态寄存器
 141   1      }
 142          /**************************************************/
 143          
 144          /**************************************************
 145          函数:SPI_Write_Buf()
 146          
 147          描述:
 148              把pBuf缓存中的数据写入到nRF24L01,通常用来写入发
 149                  射通道数据或接收/发送地址
 150          /**************************************************/

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -