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

📄 nrf2401.lst

📁 nrf2401在51上的驱动程序 提供发送与接收函数
💻 LST
📖 第 1 页 / 共 2 页
字号:
C51 COMPILER V7.50   NRF2401                                                               12/08/2007 12:04:07 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 OPTIMIZE(0,SPEED) BROWSE INCDIR(D:\BAO\试验基地\试验\source for 8
                    -9LV51\) 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 2006.12.20====debug time is 2006.12.20--21
  11          // copyright is 苏州天铱电子  www.tianyi-dz.com
  12          // cpu= At89S52,keilC51 compiler
  13          // tel:13862423497  15962169748
  14          //QQ:472230383
  15          /**********************************************************************************/
  16          /**********************************************************************************/
  17          #include "reg52.h"   //晶振可以用11.0592MHZ,如果用串口的话
  18                               //提示:在调试程序的时候晶振用12MHZ
  19          #include "stdio.h"
  20          #include "string.h"
  21          #include "math.h"
  22          #include "intrins.h"
  23          /**********************************************************************************/
  24          #define uchar unsigned char 
  25          #define uint  unsigned int
  26          
  27          #define Fclk    3686400
  28          #define BitRate 19200
  29          #define BRR             (Fclk/(16*Bitrate))-1
  30          
  31          #define timerdiv        1
  32          #define timerval        256-(Fclk/timerdiv)/100000                      // timeout each 10us
  33          /**********************************************************************************/
  34          uchar   InitData[15];
  35          uchar   TXData[14];
  36          uchar   RXData[10];
  37          
  38          uchar   Temp;
  39          uchar   BitCnt; 
  40          uchar   ByteCnt;
  41          uchar   Data1=  0xff;
  42          
  43          bdata   uchar   tempi;
  44          /**********************************************************************************/
  45          sbit    CLK1    =P1^7;
  46          sbit    CS              =P1^5;
  47          sbit    Data    =P3^2;
  48          sbit    CE              =P1^1;
  49          //sbit  Clk2    =P1^5;
  50          //sbit  Dout2   =P1^6;
  51          
  52          //sbit  DR2             =P3^2;
  53          sbit    DR1             =P1^6;
  54          sbit    PWR_UP  =P1^0;
C51 COMPILER V7.50   NRF2401                                                               12/08/2007 12:04:07 PAGE 2   

  55          
  56          sbit    LED1    =P0^0;
  57          sbit    LED2    =P0^2;
  58          sbit    LED3    =P0^4;
  59          sbit    LED4    =P0^6;
  60          
  61          /*sbit  CLK1    =P2^0;
  62          sbit    CS              =P2^2;
  63          sbit    Data    =P2^3;
  64          sbit    CE              =P2^4;
  65          sbit    Clk2    =P2^5;
  66          sbit    Dout2   =P2^6;
  67          
  68          sbit    DR2             =P3^2;
  69          sbit    DR1             =P3^3;
  70          sbit    PWR_UP  =P3^5;
  71          
  72          sbit    LED1    =P0^4;
  73          sbit    LED2    =P0^5;
  74          sbit    LED3    =P0^6;
  75          sbit    LED4    =P0^7;
  76          */
  77          sbit    bflag   =tempi^7;
  78          /**********************************************************************************/
  79          void    init_io();
  80          void    nRF2401_ON();
  81          void    BuildInitWord();
  82          void    InitnRF2401();
  83          void    DoSPIClock();
  84          void    CE_High();
  85          void    RXEN_HIGH();
  86          void    TXEN_LOW();
  87          void    delay_n(uchar n);
  88          void    BuildShockWord(Data1);
  89          void    ShockBurst();
  90          void    CheckButtons();
  91          void    ReceiveShock();
  92          void    Inituart();
  93          /*****************************************MAIN  START ******************************/
  94          void main(void)
  95          {       
  96   1              init_io();
  97   1              nRF2401_ON();
  98   1              delay_n(100);///jia////////
  99   1              BuildInitWord();
 100   1              InitnRF2401();
 101   1              Inituart();
 102   1              CE_High();
 103   1              RXEN_HIGH();
 104   1              delay_n(100);       //delay for LED light
 105   1                                      
 106   1          P0=0xff;                            //close all LED 
 107   1          TXEN_LOW();                         // set TX mode
 108   1              BuildShockWord(Data1);  
 109   1              ShockBurst();           
 110   1              delay_n(10);                            // delay for mode change
 111   1              RXEN_HIGH();                             
 112   1              while(1)
 113   1                      {
 114   2                              CheckButtons(); //check if the button is pressed
 115   2                              DR1=1;
 116   2                              if(DR1==1)              // Check if DR1 is high (any received from nRF2401)     
C51 COMPILER V7.50   NRF2401                                                               12/08/2007 12:04:07 PAGE 3   

 117   2                                      ReceiveShock();                 
 118   2                      }               
 119   1      }
 120          /*************************************Rmain      END *******************************/
 121          /*************************************init_io   START ******************************/
 122          void init_io()
 123          {
 124   1              P0=0Xff;
 125   1              P1=0x00;
 126   1              P2=0xff;
 127   1              P3=0xff;
 128   1              P0=0xff;
 129   1      /*
 130   1              P0=0Xff;
 131   1              P1=0xff;
 132   1              P2=0x00;
 133   1              P3=0xff;
 134   1              P0=0x0f;
 135   1              */
 136   1      }
 137          /*************************************init_io    END *******************************/
 138          void Inituart(void)
 139          {
 140   1              TMOD = 0x20;                            //timer1 working mode 1
 141   1              TL1 = 0xfd;                                     //f7=9600 for 16mhz Fosc,and ... 
 142   1              TH1 = 0xfd;                                     //...fd=19200 for 11.0592mhz Fosc
 143   1              SCON = 0xd8;                            //uart mode 3,ren==1
 144   1              PCON = 0x80;                            //smod=0
 145   1              TR1 = 1;                                        //start timer1
 146   1      }
 147          /*************************************BuildSPIWord START****************************/
 148          void BuildInitWord()
 149          {
 150   1              InitData[0]=0x50;               //RX receiver 2, Datalength 80bit(10 byte)
 151   1              InitData[1]=0x50;               //RX receiver 1, Datalength 80bit(10 byte)
 152   1              InitData[2]=0x00;
 153   1              InitData[3]=0xcc;
 154   1              InitData[4]=0xcc;
 155   1              InitData[5]=0xcc;
 156   1              InitData[6]=0xcc;
 157   1              InitData[7]=0xcc;
 158   1              InitData[8]=0xcc;               //RX receiver 1 address   High byte
 159   1              InitData[9]=0xcc;               //RX receiver 1 address   High byte
 160   1              InitData[10]=0xcc;              //RX receiver 1 address   Low byte
 161   1              InitData[11]=0xcc;              //RX receiver 1 address   Low byte
 162   1              //InitData[12]=0x82;    //this is for 32 bit address(Bit7-Bit2), 16bit CRC(Bit1), CRC disable(Bit0) for ES c
             -hip
 163   1              InitData[12]=0x83;              //this is for 32 bit address(Bit7-Bit2), 16bit CRC(Bit1), CRC enable(Bit0) for final 
             -chip        
 164   1              InitData[13]=0x4f;              //One receiver(Bit7), shock Mode(Bit6), Datarate(Bit5) 250K, crystal(Bit4-Bit2), RF P
             -ower(Bit1-Bit0)
 165   1              //InitData[13]=0x6f;    //One receiver(Bit7), shock Mode(Bit6), Datarate(Bit5) 1M, crystal(Bit4-Bit2), RF Po
             -wer(Bit1-Bit0)
 166   1              InitData[14]=0x05;              //Channel Number(Bit7-Bit1), RX/TX mode(Bit0)
 167   1      }
 168          /*************************************BuildSPIWord END******************************/
 169          void TxData (uchar x)
 170          {
 171   1              SBUF=x; 
 172   1              while(TI==0);
 173   1                      TI=0;
 174   1      
C51 COMPILER V7.50   NRF2401                                                               12/08/2007 12:04:07 PAGE 4   

 175   1      }
 176          /*************************************InitnRF2401 START******************************/          
 177          void InitnRF2401()
 178          {
 179   1              CE=0;                                           //Disable CE
 180   1              CS=1;                                           //Enable CS--confige mode
 181   1              for (ByteCnt=0;ByteCnt<15;ByteCnt++)
 182   1                      {
 183   2                      tempi=InitData[ByteCnt];
 184   2                      for (BitCnt=0;BitCnt<8;BitCnt++)
 185   2                              {
 186   3                                      if (bflag==1)   //Check if first bit is HIGH
 187   3                                              Data=1;         //Set Data high
 188   3                                      else
 189   3                                              Data=0;         //Set Data low
 190   3                                      tempi=tempi<<1; //Left Shift to get next bit
 191   3                                      DoSPIClock();   //Call "DoClock" to generate a clock pulse
 192   3                              }
 193   2                      }
 194   1              CS=0;                                           //Disable CS--standby mode      
 195   1              Data=0;                                         //Set Data low
 196   1      }
 197          /*************************************InitnRF2401 END *******************************/
 198          /*************************************DoSPIClock START******************************/
 199          void DoSPIClock()
 200          {
 201   1              CLK1=1;
 202   1              _nop_();
 203   1              _nop_();
 204   1              CLK1=0;
 205   1      }       
 206          
 207          /*************************************DoSPIClock END *******************************/
 208          /*************************************CE_High   START ******************************/
 209          void CE_High()
 210          {
 211   1              CE=1;
 212   1      }
 213          /*************************************CE_High    END *******************************/
 214          /*************************************TXEN_LOW  START ******************************
 215          void CE_Low()
 216          {
 217                  CE=0;
 218          }
 219          *************************************CE_Low     END ********************************/
 220          /*************************************nRF2401_ON START******************************/
 221          void nRF2401_ON()
 222          {
 223   1              PWR_UP=1;
 224   1      }
 225          /*************************************nRF2401_ON END *******************************/
 226          /*************************************nRF2401_OFF START*****************************/
 227          //void nRF2401_OFF()
 228          //{

⌨️ 快捷键说明

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