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

📄 +

📁 基于AT89S52单片机的nRF2401无线模块开发板
💻
📖 第 1 页 / 共 2 页
字号:
C51 COMPILER V7.06   NRF2401                                                               04/17/2007 19:36:47 PAGE 1   


C51 COMPILER V7.06, 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

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 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.06   NRF2401                                                               04/17/2007 19:36:47 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.06   NRF2401                                                               04/17/2007 19:36:47 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   1         /* SCON=0x50;  //模式1
 148   1          TMOD=0x21;  //定时模式2
 149   1          IE=0x90;
 150   1      
 151   1          //=====9600=======设置串口通讯寄存器
 152   1          PCON=0x00;   //波特率9600BPS,晶振11.0592MHZ
 153   1          TH1=0xFD;  //
 154   1          TL1=0xFD;  //计数器初值
 155   1              TR1 = 1;                                        //start timer1*/
 156   1      }
 157          /*************************************BuildSPIWord START****************************/
 158          void BuildInitWord()
 159          {
 160   1              InitData[0]=0x50;               //RX receiver 2, Datalength 80bit(10 byte)
 161   1              InitData[1]=0x50;               //RX receiver 1, Datalength 80bit(10 byte)
 162   1              InitData[2]=0x00;
 163   1              InitData[3]=0xcc;
 164   1              InitData[4]=0xcc;
 165   1              InitData[5]=0xcc;
 166   1              InitData[6]=0xcc;
 167   1              InitData[7]=0xcc;
 168   1              InitData[8]=0xcc;               //RX receiver 1 address   High byte
 169   1              InitData[9]=0xcc;               //RX receiver 1 address   High byte
 170   1              InitData[10]=0xcc;              //RX receiver 1 address   Low byte
 171   1              InitData[11]=0xcc;              //RX receiver 1 address   Low byte
 172   1              //InitData[12]=0x82;    //this is for 32 bit address(Bit7-Bit2), 16bit CRC(Bit1), CRC disable(Bit0) for ES c
             -hip
 173   1              InitData[12]=0x83;              //this is for 32 bit address(Bit7-Bit2), 16bit CRC(Bit1), CRC enable(Bit0) for final 
             -chip        
 174   1              InitData[13]=0x4f;              //One receiver(Bit7), shock Mode(Bit6), Datarate(Bit5) 250K, crystal(Bit4-Bit2), RF P
             -ower(Bit1-Bit0)
 175   1              //InitData[13]=0x6f;    //One receiver(Bit7), shock Mode(Bit6), Datarate(Bit5) 1M, crystal(Bit4-Bit2), RF Po
C51 COMPILER V7.06   NRF2401                                                               04/17/2007 19:36:47 PAGE 4   

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

⌨️ 快捷键说明

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