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

📄 nrf2401.lst

📁 nrf2401无线收发芯片的例程
💻 LST
📖 第 1 页 / 共 2 页
字号:
C51 COMPILER V7.06   NRF2401                                                               03/15/2008 09:15:11 PAGE 1   


C51 COMPILER V7.06, COMPILATION OF MODULE NRF2401
OBJECT MODULE PLACED IN nRF2401.OBJ
COMPILER INVOKED BY: D:\Keil\C51\BIN\C51.EXE nRF2401.c OPTIMIZE(0,SPEED) BROWSE DEBUG OBJECTEXTEND

stmt 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          unsigned int  i,j;
  40          bdata   uchar   tempi;
  41          /**********************************************************************************/
  42          sbit    CLK1    =P2^0;
  43          sbit    CS              =P2^2;
  44          sbit    Data    =P2^3;
  45          sbit    CE              =P2^4;
  46          sbit    Clk2    =P2^5;
  47          sbit    Dout2   =P2^6;
  48          
  49          sbit    DR2             =P3^2;
  50          sbit    DR1             =P3^3;
  51          sbit    PWR_UP  =P3^5;
  52          
  53          sbit    LED1    =P0^4;
  54          sbit    LED2    =P0^5;
  55          sbit    LED3    =P0^6;
C51 COMPILER V7.06   NRF2401                                                               03/15/2008 09:15:11 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          void    Serialport();
  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();  
  89   1              ShockBurst();           
  90   1              Delay10();                              // delay for mode change
  91   1              RXEN_HIGH();                             
  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         Serialport();                                        
 100   1                      
 101   1      }
 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          /*************************************init_io    END *******************************/
 113          /*************************************BuildSPIWord START****************************/
 114          void BuildInitWord()
 115          {
 116   1              InitData[0]=0x50;               //RX receiver 2, Datalength 80bit(10 byte)
 117   1              InitData[1]=0x50;               //RX receiver 1, Datalength 80bit(10 byte)
C51 COMPILER V7.06   NRF2401                                                               03/15/2008 09:15:11 PAGE 3   

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

 176                  CE=0;
 177          }
 178          *************************************CE_Low     END ********************************/
 179          /*************************************nRF2401_ON START******************************/
 180          void nRF2401_ON()
 181          {
 182   1              PWR_UP=1;
 183   1      }
 184          /*************************************nRF2401_ON END *******************************/

⌨️ 快捷键说明

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