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

📄 nrf2401.lst

📁 USB控制器CY7C68013控制无线收发芯片nRF2401进行无线收发的单片机程序
💻 LST
📖 第 1 页 / 共 2 页
字号:
C51 COMPILER V7.50   NRF2401                                                               08/06/2008 16:10:36 PAGE 1   


C51 COMPILER V7.50, 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          /**********************************************************************************/
   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 "fx2.h"
  16          #include "fx2regs.h"
  17          #include "intrins.h"
  18          /**********************************************************************************/
  19          #define uchar unsigned char 
  20          #define uint  unsigned int
  21          
  22          #define Fclk    3686400
  23          #define BitRate 19200
  24          #define BRR             (Fclk/(16*Bitrate))-1
  25          
  26          #define timerdiv        1
  27          #define timerval        256-(Fclk/timerdiv)/100000                      // timeout each 10us
  28          /**********************************************************************************/
  29          uchar   InitData[15];
  30          uchar   TXData[30];
  31          uchar   RXData[26];
  32          
  33          uchar   Temp;
  34          uchar   BitCnt; 
  35          uchar   ByteCnt;
  36          uchar   Data1=  0xff;
  37          
  38          bdata   uchar   tempi;
  39          /**********************************************************************************/
  40          
  41          #define BIT(b)  (1<<(b))
  42          #define NBIT(b) ~(1<<(b))
  43          
  44          #define CS      0
  45          #define CE  2
  46          #define PWR_UP  4
  47          
  48          #define DR1     1
  49          #define CLK1    3
  50          #define DATA    5
  51          
  52          
  53          sbit    bflag   =tempi^7;
  54          
  55          /**********************************************************************************/
C51 COMPILER V7.50   NRF2401                                                               08/06/2008 16:10:36 PAGE 2   

  56          void    init_io();
  57          void    nRF2401_ON();
  58          void    BuildInitWord();
  59          void    InitnRF2401();
  60          void    DoSPIClock();
  61          void    CE_High();
  62          void    RXEN_HIGH();
  63          void    TXEN_LOW();
  64          void    Delay10();
  65          void    delay100();
  66          void    BuildShockWord();
  67          void    ShockBurst();
  68          void    ReceiveShock();
  69          void    initUart(void);
  70          
  71          #define LED_ADDR                0x72
  72          
  73          void write_leds (BYTE d)
  74          {
  75   1              while (I2CS & 0x40);    //Wait for stop to be done
  76   1              I2CS = 0x80;                    //Set start condition
  77   1              I2DAT = LED_ADDR;               //Write led address
  78   1              while (!(I2CS & 0x01)); //Wait for done
  79   1              I2DAT = d;                              //Write data
  80   1              while (!(I2CS & 0x01)); //Wait for done
  81   1              I2CS = 0x40;                    //Set stop bit
  82   1      }
  83          
  84          /*****************************************MAIN  START ******************************/
  85          void my_InitnRF2401(void)
  86          {
  87   1              init_io();
  88   1              nRF2401_ON();
  89   1              BuildInitWord();
  90   1              InitnRF2401();
  91   1              CE_High();
  92   1              RXEN_HIGH();
  93   1          delay100();                         //delay for LED light   
  94   1          write_leds(0x0E);                           //close all LED 
  95   1          TXEN_LOW();                         // set TX mode
  96   1              BuildShockWord();  
  97   1              ShockBurst();           
  98   1              Delay10();                              // delay for mode change
  99   1              TXEN_LOW();
 100   1              
 101   1      //    initUart();                                
 102   1      /*      while(1)
 103   1                      {
 104   1                      //      CheckButtons(); //check if the button is pressed
 105   1                      
 106   1                              //DR1=1;
 107   1                              if(IOA&BIT(DR1))                // Check if DR1 is high (any received from nRF2401)     
 108   1                              {
 109   1                                      ReceiveShock();                 
 110   1      //                              write_leds(6);
 111   1                              }
 112   1                              else
 113   1                              {
 114   1      //                              write_leds(1);
 115   1                              }
 116   1                              
 117   1                      }                                       
C51 COMPILER V7.50   NRF2401                                                               08/06/2008 16:10:36 PAGE 3   

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

 176   1              IOA&=NBIT(DATA);                                                //Set Data low
 177   1      }
 178          /*************************************InitnRF2401 END *******************************/
 179          /*************************************DoSPIClock START******************************/
 180          void DoSPIClock()
 181          {
 182   1              IOA|=BIT(CLK1);
 183   1              _nop_();
 184   1              _nop_();
 185   1              _nop_();
 186   1              _nop_();
 187   1              _nop_();
 188   1              _nop_();
 189   1              IOA&=NBIT(CLK1);
 190   1      }       
 191          
 192          /*************************************DoSPIClock END *******************************/
 193          /*************************************CE_High   START ******************************/
 194          void CE_High()
 195          {

⌨️ 快捷键说明

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