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

📄 nrf2401.lst

📁 nRF2401驱动程序 nRF2401无线射频芯片
💻 LST
📖 第 1 页 / 共 2 页
字号:
C51 COMPILER V8.02   NRF2401                                                               04/26/2007 20:50:59 PAGE 1   


C51 COMPILER V8.02, COMPILATION OF MODULE NRF2401
OBJECT MODULE PLACED IN nRF2401.OBJ
COMPILER INVOKED BY: D:\Program Files\keil\C51\BIN\C51.EXE nRF2401.c OPTIMIZE(0,SPEED) BROWSE DEBUG OBJECTEXTEND

line level    source

   1          /**********************************************************************************/
   2          /**********************************************************************************/
   3          // The nRF2401 2.4GHz Multi Channel Software
   4          //
   5          // This software and any related documentation is provided "as is" without any
   6          // warranty of any kind, either express or implied, including, without
   7          // limitation, the implied warranties or merchantability, fitness for a
   8          // particular purpose, and noninfringment. The entire risk arising out of use
   9          // of this software remains with you.
  10          // write time is 2004.3.20====debug time is 2004.3.20--21
  11          // copyright is shenzhen.xuntong Co.Ltd
  12          // cpu= At89lv51,keilC51 compiler
  13          /**********************************************************************************/
  14          /**********************************************************************************/
  15          #include <reg51.h>
  16          #include <stdio.h>
  17          #include <string.h>
  18          #include <math.h>
  19          #include <intrins.h>
  20          /**********************************************************************************/
  21          #define uchar unsigned char 
  22          #define uint  unsigned int
  23          
  24          #define Fclk    3686400
  25          #define BitRate 19200
  26          #define BRR             (Fclk/(16*Bitrate))-1
  27          
  28          #define timerdiv        1
  29          #define timerval        256-(Fclk/timerdiv)/100000                      // timeout each 10us
  30          /**********************************************************************************/
  31          uchar   InitData[15];
  32          uchar   TXData[14];
  33          uchar   RXData[10];
  34          
  35          uchar   Temp;
  36          uchar   BitCnt; 
  37          uchar   ByteCnt;
  38          uchar   Data1=  0xff;
  39          
  40          bdata   uchar   tempi;
  41          /**********************************************************************************/
  42          sbit    CLK1    =P2^0;          // Clock TX/RX for Data Channel1 3-wire interface
  43          sbit    CS              =P2^2;          // Chip Select Activates Comfiguration Mode
  44          sbit    Data    =P2^3;          // RX Data Channel1/TX Data Input/3-wire interface
  45          sbit    CE              =P2^4;          // Chip Enalbe Activates RX or TX mode
  46          sbit    Clk2    =P2^5;          // Clock for RX Data Channel2
  47          sbit    Dout2   =P2^6;          // RX Data Channel2
  48          
  49          sbit    DR2             =P3^2;          // RX Data Ready at Data Channel2(ShockBurst only)
  50          sbit    DR1             =P3^3;          // RX Data Ready at Data Channel1(ShockBurst only)
  51          sbit    PWR_UP  =P3^5;          // nRF2401供电口,P口供
  52          
  53          sbit    LED1    =P0^4;
  54          sbit    LED2    =P0^5;
  55          sbit    LED3    =P0^6;
C51 COMPILER V8.02   NRF2401                                                               04/26/2007 20:50:59 PAGE 2   

  56          sbit    LED4    =P0^7;
  57          
  58          sbit    bflag   =tempi^7;
  59          
  60          /**********************************************************************************/
  61          void    init_io();
  62          void    nRF2401_ON();
  63          void    BuildInitWord();
  64          void    InitnRF2401();
  65          void    DoSPIClock();
  66          void    CE_High();
  67          void    RXEN_HIGH();
  68          void    TXEN_LOW();
  69          void    Delay10();
  70          void    delay100();
  71          void    BuildShockWord();
  72          void    ShockBurst();
  73          void    CheckButtons();
  74          void    ReceiveShock();
  75          
  76          /*****************************************MAIN  START ******************************/
  77          void main(void)
  78          {       
  79   1              init_io();
  80   1              nRF2401_ON();
  81   1              BuildInitWord();
  82   1              InitnRF2401();
  83   1              CE_High();
  84   1              RXEN_HIGH();
  85   1          delay100();                         //delay for LED light   
  86   1          P0=0xff;                            //close all LED 
  87   1          TXEN_LOW();                         // set TX mode
  88   1              BuildShockWord();               // RF Package
  89   1              ShockBurst();           
  90   1              Delay10();                              // delay for mode change
  91   1              RXEN_HIGH();                    // Set RX mode                 
  92   1              while(1)
  93   1              {
  94   2                      CheckButtons();         //check if the button is pressed
  95   2                      DR1=1;
  96   2                      if(DR1==1)                      // Check if DR1 is high (any received from nRF2401)
  97   2                              ReceiveShock();                 
  98   2              }                                       
  99   1              
 100   1      }
 101          
 102          /*************************************Rmain      END *******************************/
 103          /*************************************init_io   START ******************************/
 104          void init_io()
 105          {
 106   1              P0=0Xff;
 107   1              P1=0xff;
 108   1              P2=0x00;
 109   1              P3=0xff;
 110   1              P0=0x0f;
 111   1      }
 112          
 113          /*************************************init_io    END *******************************/
 114          /*************************************BuildSPIWord START****************************/
 115          void BuildInitWord()
 116          {
 117   1              InitData[0]=0x50;               //RX receiver 2, Datalength 80bit(10 byte)
C51 COMPILER V8.02   NRF2401                                                               04/26/2007 20:50:59 PAGE 3   

 118   1              InitData[1]=0x50;               //RX receiver 1, Datalength 80bit(10 byte)
 119   1              InitData[2]=0x00;
 120   1              InitData[3]=0xcc;
 121   1              InitData[4]=0xcc;
 122   1              InitData[5]=0xcc;
 123   1              InitData[6]=0xcc;
 124   1              InitData[7]=0x00;
 125   1              InitData[8]=0xcc;               //RX receiver 1 address   High byte
 126   1              InitData[9]=0xcc;               //RX receiver 1 address   High byte
 127   1              InitData[10]=0xcc;              //RX receiver 1 address   Low byte
 128   1              InitData[11]=0xcc;              //RX receiver 1 address   Low byte
 129   1              //InitData[12]=0x82;    //this is for 32 bit address(Bit7-Bit2), 16bit CRC(Bit1), CRC disable(Bit0) for ES c
             -hip
 130   1              InitData[12]=0x83;              //this is for 32 bit address(Bit7-Bit2), 16bit CRC(Bit1), CRC enable(Bit0) for final 
             -chip        
 131   1              InitData[13]=0x4f;              //One receiver(Bit7), shock Mode(Bit6), Datarate(Bit5) 250K, crystal(Bit4-Bit2), RF P
             -ower(Bit1-Bit0)
 132   1              //InitData[13]=0x6f;    //One receiver(Bit7), shock Mode(Bit6), Datarate(Bit5) 1M, crystal(Bit4-Bit2), RF Po
             -wer(Bit1-Bit0)
 133   1              InitData[14]=0x05;              //Channel Number(Bit7-Bit1), RX/TX mode(Bit0)
 134   1      }
 135          /*************************************BuildSPIWord END******************************/
 136          /*************************************InitnRF2401 START******************************/          
 137          void InitnRF2401()
 138          {
 139   1              CE=0;                                           //Disable CE
 140   1              CS=1;                                           //Enable CS--confige mode
 141   1              for (ByteCnt=0;ByteCnt<15;ByteCnt++)
 142   1                      {
 143   2                      tempi=InitData[ByteCnt];
 144   2                      for (BitCnt=0;BitCnt<8;BitCnt++)
 145   2                              {
 146   3                                      if (bflag==1)   //Check if first bit is HIGH
 147   3                                              Data=1;         //Set Data high
 148   3                                      else
 149   3                                              Data=0;         //Set Data low
 150   3                                      tempi=tempi<<1; //Left Shift to get next bit
 151   3                                      DoSPIClock();   //Call "DoClock" to generate a clock pulse
 152   3                              }
 153   2                      }
 154   1              CS=0;                                           //Disable CS--standby mode
 155   1              Data=0;                                         //Set Data low
 156   1      }
 157          /*************************************InitnRF2401 END *******************************/
 158          /*************************************DoSPIClock START******************************/
 159          void DoSPIClock()
 160          {
 161   1              CLK1=1;
 162   1              _nop_();
 163   1              _nop_();
 164   1              CLK1=0;
 165   1      }       
 166          
 167          /*************************************DoSPIClock END *******************************/
 168          /*************************************CE_High   START ******************************/
 169          void CE_High()
 170          {
 171   1              CE=1;
 172   1      }
 173          /*************************************CE_High    END *******************************/
 174          /*************************************TXEN_LOW  START ******************************
 175          void CE_Low()
C51 COMPILER V8.02   NRF2401                                                               04/26/2007 20:50:59 PAGE 4   

⌨️ 快捷键说明

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