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

📄 nrf2401.lst

📁 在KEILC51中NRF2401项目开发成功
💻 LST
📖 第 1 页 / 共 2 页
字号:
C51 COMPILER V8.08   NRF2401                                                               11/13/2008 00:17:47 PAGE 1   


C51 COMPILER V8.08, COMPILATION OF MODULE NRF2401
OBJECT MODULE PLACED IN nRF2401.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE nRF2401.c BROWSE DEBUG OBJECTEXTEND

line level    source

   1          //====================================================================================
   2          //文 件 名: nRF2401.c
   3          //功能描述: nRF2401的驱动程序
   4          //维护记录: 2008年10月25
   5          //====================================================================================
   6          
   7          #include <string.h>
   8          #include <AT89X52.h>
   9          #include <intrins.h>
  10          #include "nRF2401.H"
  11          
  12          sbit    LED1    =       P1^4;
  13          sbit    LED2    =       P1^5;
  14          sbit    PWR     =       P0^0;
  15          sbit    CE          =   P0^1;
  16          sbit    CS          =   P0^2;
  17          sbit    DR1         =   P0^3;
  18          sbit    CLK1    =       P0^4;
  19          sbit    DATA    =       P0^5;
  20          sbit    cs_test  =      P0^6;
  21          
  22          
  23          const unsigned char InitData[15] =                              // nRF2401 控制字 15 Byte
  24          {
  25                  0x00,                                                                           // 通道二接收数据宽度(bit)
  26                  (26<<3),                                                                                // 通道一接收数据宽度(bit)
  27                  0x00,                                                                           // 通道二地址(A24)
  28                  0x00,                                                                           // 通道二地址(A23)
  29                  0x00,                                                                           // 通道二地址(A22)
  30                  0x00,                                                                           // 通道二地址(A21)
  31                  0x01,                                                                           // 通道二地址(A20)
  32                  0x00,                                                                           // 通道一地址(A14)
  33                  0x00,                                                                           // 通道一地址(A13)
  34                  0x00,                                                                           // 通道一地址(A12)
  35                  0x01,                                                                           // 通道一地址(A11)
  36                  0xFF,                                                                           // 通道一地址(A10)
  37                  0x83,                                                                           // b7~b2:接收地址宽度,和发送端一致,不超过40bit;
  38                                                                                                          // b1~b0:CRC模式选择(01-8bit;11-16bit;00/10-no)
  39                  0x6f,                                                                           // b15:接收通道选择(0-通道1;1-通道1和2)
  40                                                                                                          // b14:收发模式(0-Direct模式,1-ShockBurst模式)
  41                                                                                                          // b13:波特率选择(0-250Kbps;1-1Mbps)
  42                                                                                                          // b12~b10:晶振选择(000-4M;001-8M;010-12M;011-16M)
  43                                                                                                          // b9~b8:发射功率(11-0db)                                                                                                                               
  44                  0x65                                                                            // b7~b1:发射频率配置
  45                                                                                                          // b0:收发控制(0-发送;1-接收)
  46          };
  47          unsigned char AddrBuffer[5];                                            // 地址寄存器
  48          unsigned char AddrByteCnt;                                              // 地址Byte数
  49          
  50          /******************************************************************************
  51          void nRF2401_ON();                                                              // nRF2401A上电
  52          void nRF2401_OFF();                                                             // nRF2401A掉电
  53          void nRF2401_Initial();                                                 // nRF2401A初始化
  54          void nRF2401_WriteCommand();                                    // nRF2401A写命令字
  55          void nRF2401_WriteByte(unsigned char uiData);   // 向nRF2401A写入一个Byte
C51 COMPILER V8.08   NRF2401                                                               11/13/2008 00:17:47 PAGE 2   

  56          void nRF2401_WriteWord(unsigned int uiData);    // 向nRF2401A写入一个Word
  57          void nRF2401_Mode(unsigned char uiMode);                        // 切换nRF2401A收/发模式
  58          void nRF2401_SendByte(unsigned char TxData);    
  59                                                                                                          // 将字节数据写入nRF2401A
  60          void nRF2401_SendWord(unsigned int TxData);     
  61                                                                                                          // 将字数据写入nRF2401A
  62          void nRF2401_SendBuffer_Byte(unsigned char TxData[],unsigned char DataByte);    
  63                                                                                                          // 将数组数据写入nRF2401A
  64          void nRF2401_SendBuffer_Word(unsigned int TxData[],unsigned int DataWord);      
  65                                                                                                          // 将数组数据写入nRF2401A
  66          unsigned int  nRF2401_RxStatus();                               // 判断nRF2401A是否有数据接收
  67          void nRF2401_ReceiveByte(unsigned char RxData[]);// 以Byte格式从nRF2401A读数据
  68          void nRF2401_ReceiveWord(unsigned int RxData[]);// 以Word格式从nRF2401A读数据
  69          void nRF2401_SetAddress(unsigned char Address[],unsigned char AddrByte);
  70                                                                                                          // 设置目标nRF2401A的地址
  71          void Delay_Us(unsigned int TimeCnt);                                                            // 延时(uS)
  72          
  73           void nRF2401_Str(unsigned char *arr);
  74            *******************************************************************************/
  75          //=============================================================
  76          // 语法格式:   void nRF2401_Initial(void)
  77          // 实现功能:   nRF 初始化
  78          // 参数:               无
  79          // 返回值:             无
  80          //=============================================================
  81          void nRF2401_Initial(void)
  82          {
  83   1      
  84   1         PWR=0;
  85   1         CE=0;
  86   1         CS=0;
  87   1         DR1=1;
  88   1         CLK1=0;
  89   1         DATA=1;
  90   1         cs_test=1;
  91   1              nRF2401_ON();
  92   1              Delay_Us(3000);
  93   1              nRF2401_WriteCommand();                                         // 向nRF2401A写命令字
  94   1              Delay_Us(300);
  95   1      }
  96          
  97          //=============================================================
  98          // 语法格式:   void nRF2401_ON(void)
  99          // 实现功能:   nRF 上电
 100          // 参数:               无
 101          // 返回值:             无
 102          //=============================================================
 103          void nRF2401_ON(void)
 104          {
 105   1      
 106   1      PWR=1;
 107   1      
 108   1      
 109   1      
 110   1      }
 111          
 112          //=============================================================
 113          // 语法格式:   void nRF2401_OFF(void)
 114          // 实现功能:   nRF 掉电
 115          // 参数:               无
 116          // 返回值:             无
 117          //=============================================================
C51 COMPILER V8.08   NRF2401                                                               11/13/2008 00:17:47 PAGE 3   

 118          void nRF2401_OFF(void)
 119          {
 120   1      
 121   1      PWR=0;
 122   1      }
 123          
 124          //=============================================================
 125          // 语法格式:   void nRF2401_WriteCommand(void)
 126          // 实现功能:   nRF 写命令字
 127          // 参数:               无
 128          // 返回值:             无
 129          //=============================================================
 130          void nRF2401_WriteCommand(void)
 131          {
 132   1              unsigned int i;
 133   1      
 134   1                CE=0;
 135   1                CS=1;
 136   1      
 137   1              Delay_Us(5);
 138   1              for(i=0; i<15; i++)
 139   1              {
 140   2                      nRF2401_WriteByte(InitData[i]);
 141   2              }
 142   1      
 143   1              CS=0;
 144   1              CE=1;
 145   1      }
 146          
 147          //=============================================================
 148          // 语法格式:   void nRF2401_Mode(unsigned int uiMode)
 149          // 实现功能:   设置nRF2401A的工作方式
 150          // 参数:               uiMode:0--接收;1--发送                                 
 151          // 返回值:             无
 152          //=============================================================
 153          void nRF2401_Mode(unsigned char uiMode)
 154          {
 155   1      
 156   1              CE=0;
 157   1              CS=1;
 158   1      
 159   1              if(uiMode == 0)
 160   1                      nRF2401_WriteByte(InitData[14] | 0x01);                 // 接收
 161   1              else
 162   1                      nRF2401_WriteByte(InitData[14] & 0xFE);                 // 发送
 163   1      
 164   1              CS=0;
 165   1              CE=1;
 166   1      }
 167          
 168          //=============================================================
 169          // 语法格式:   void nRF2401_SetAddress(unsigned int *Address,unsigned int AddrByte)
 170          // 实现功能:   设置目标nRF2401A的地址
 171          // 参数:               unsigned int *Address:地址数组
 172          //                              unsigned int AddrByte:数组的长度                                        
 173          // 返回值:             无
 174          //=============================================================
 175          void nRF2401_SetAddress(unsigned char *Address,unsigned char AddrByte)
 176          {
 177   1              unsigned int i;
 178   1              for(i=0; i<AddrByte; i++)
 179   1              {
C51 COMPILER V8.08   NRF2401                                                               11/13/2008 00:17:47 PAGE 4   

 180   2                      AddrBuffer[i] = Address[i];
 181   2              }
 182   1              AddrByteCnt = AddrByte;
 183   1      }
 184          
 185          //=============================================================
 186          // 语法格式:   void nRF2401_WriteByte(unsigned int uiData)
 187          // 实现功能:   向nRF2401A写入一个字节数据
 188          // 参数:               unsigned int uiData: 待写入数据
 189          // 返回值:             无
 190          //=============================================================
 191          void nRF2401_WriteByte(unsigned char uiData)
 192          {
 193   1              unsigned int i;
 194   1              cs_test=0;
 195   1              for(i=0; i<8; i++)
 196   1              {
 197   2      
 198   2                      CLK1=0;
 199   2                      if(uiData&0x80)
 200   2      
 201   2                      DATA=1;
 202   2                      else
 203   2                              DATA=0;
 204   2      
 205   2                                       CLK1=1;
 206   2                                      _nop_();
 207   2                      _nop_();
 208   2      
 209   2                                      _nop_();
 210   2                      _nop_();
 211   2                                      _nop_();
 212   2                      _nop_();
 213   2      
 214   2                                      _nop_();
 215   2                      _nop_();
 216   2      
 217   2                                CLK1=0;
 218   2                              uiData = uiData<<1;
 219   2              }
 220   1              cs_test=1;
 221   1      }
 222          
 223          //=============================================================
 224          // 语法格式:   void nRF2401_WriteWord(unsigned int uiData)
 225          // 实现功能:   向nRF2401A写入一个字数据
 226          // 参数:               unsigned int uiData: 待写入数据
 227          // 返回值:             无
 228          //=============================================================
 229          void nRF2401_WriteWord(unsigned int uiData)
 230          {
 231   1              unsigned int i;
 232   1              for(i=0; i<16; i++)
 233   1              {
 234   2      
 235   2                      CLK1=0;
 236   2                      if(uiData&0x8000)
 237   2      
 238   2                              DATA=1;
 239   2                      else
 240   2      
 241   2                              DATA=0;
C51 COMPILER V8.08   NRF2401                                                               11/13/2008 00:17:47 PAGE 5   

 242   2      
 243   2                              CLK1=1;
 244   2      
 245   2                              _nop_();
 246   2                      _nop_();
 247   2      
 248   2                              _nop_();
 249   2                      _nop_();
 250   2                              _nop_();
 251   2                      _nop_();
 252   2      
 253   2                              _nop_();

⌨️ 快捷键说明

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