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

📄 send.lst

📁 A7125无线模块
💻 LST
📖 第 1 页 / 共 2 页
字号:
C51 COMPILER V9.01   SEND                                                                  02/25/2011 12:31:38 PAGE 1   


C51 COMPILER V9.01, COMPILATION OF MODULE SEND
OBJECT MODULE PLACED IN send.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE send.c BROWSE DEBUG OBJECTEXTEND

line level    source

   1          /*********************************************************************
   2          **  Device: A7125                                                   **
   3          **  File:   main.c                                                  **
   4          **                                                                  **
   5          **  Description:                                                    **
   6          **  This file is a sample code for your reference.                  **
   7          **                                                                  **
   8          **  Copyright (C) 2008 AMICCOM Corp.                                **
   9          **                                                                  **
  10          *********************************************************************/
  11          
  12          #include <reg51.h>
  13          #include "define.h"
  14          #include "a7125reg.h"
  15          
  16          //!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!//
  17          //                      I/O Declaration                             //
  18          //           TODO: USER NEED CHANGE THIS SET TO FIT SYSTEM.         //
  19          //!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!//
  20          sbit SCS    = P1^7;
  21          sbit SCK    = P1^4;
  22          sbit SDIO   = P1^5;
  23          sbit GIO1   = P1^3;
  24          sbit GIO2   = P1^2;
  25          sbit LED1   =P3^7;
  26          sbit BUFF   =P3^5;
  27          #define RF_WTR  GIO1
  28           
  29          unsigned int cc;
  30          unsigned char dd;
  31          //!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!//
  32          //                    Global Variable Declaration                   //
  33          //!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!//
  34          Uint8           idata   RfBuf[64];
  35          Uint8           idata   TmpUint8;
  36          
  37          //-----------------------------------------------------------------------------
  38          // 64 bytes PN9 pseudo random code
  39          //-----------------------------------------------------------------------------
  40          const Uint8 code PN9_Tab[]=
  41          {   0xFF,0x83,0xDF,0x17,0x32,0x09,0x4E,0xD1,
  42              0xE7,0xCD,0x8A,0x91,0xC6,0xD5,0xC4,0xC4,
  43              0x40,0x21,0x18,0x4E,0x55,0x86,0xF4,0xDC,
  44              0x8A,0x15,0xA7,0xEC,0x92,0xDF,0x93,0x53,
  45              0x30,0x18,0xCA,0x34,0xBF,0xA2,0xC7,0x59,
  46              0x67,0x8F,0xBA,0x0D,0x6D,0xD8,0x2D,0x7D,
  47              0x54,0x0A,0x57,0x97,0x70,0x39,0xD2,0x7A,
  48              0xEA,0x24,0x33,0x85,0xED,0x9A,0x1D,0xE0
  49          };
  50          
  51          //-----------------------------------------------------------------------------
  52          // RF ID code
  53          //-----------------------------------------------------------------------------
  54          const Uint8 code ID_Tab[4] =
  55          {
C51 COMPILER V9.01   SEND                                                                  02/25/2011 12:31:38 PAGE 2   

  56              0x54, 0x75, 0xC5, 0x2A
  57          };
  58          
  59          // !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
  60          //                                   NOTE                                    !!
  61          // !!         THIS CONFIG TABLE ONLY USE ON RF CRYSTAL = 16MHz               !!
  62          // !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
  63          const Uint16 code A7125Config[] =
  64          {
  65              //      address   name              Descript
  66              //      -------   ----              ---------
  67              0x00,   //0x00    MODE register,    only reset, not use on config
  68              0x62,   //0x01    MODE CTRL register,   FIFO mode, Enable ARSSI, Enable AIF
  69              0x00,   //0x02    CALIBRATION register,
  70              0x3F,   //0x03    FIFO1 register,
  71              0x00,   //0x04    FIFO2 register,
  72              0x00,   //0x05    FIFO register,    for fifo read/write
  73              0x00,   //0x06    IDDATA register,  for idcode
  74              0x00,   //0x07    RCOSC1 register,
  75              0x00,   //0x08    RCOSC2 register,
  76              0x00,   //0x09    RCOSC3 register,
  77              0x00,   //0x0A    CKO register,
  78              0x01,   //0x0B    GIO1 register,    WTR
  79              0x01,   //0x0C    GIO2 register,    WTR       
  80              0x1F,   //0x0D    DATARATE register,
  81              0x50,   //0x0E    PLL1 register,
  82              0x0E,   //0x0F    PLL2 register,    RFbase 2400.001MHz
  83              0x96,   //0x10    PLL3 register,
  84              0x00,   //0x11    PLL4 register,
  85              0x04,   //0x12    PLL5 register,
  86              0x3C,   //0x13    chanel group I,
  87              0x78,   //0x14    chanel group II,
  88              0xD7,   //0x15    TX1 register,
  89              0x40,   //0x16    TX2 register,
  90              0x10,   //0x17    DELAY1 register,
  91              0x61,   //0x18    DELAY2 register,
  92              0x62,   //0x19    RX register,
  93              0xA0,   //0x1A    RXGAIN1 register,
  94              0x00,   //0x1B    RXGAIN2 register,
  95              0x00,   //0x1C    RXGAIN3 register,
  96              0xD2,   //0x1D    RXGAIN4 register,
  97              0x00,   //0x1E    RSSI register,
  98              0xE2,   //0x1F    ADC register,
  99              0x07,   //0x20    CODE1 register,
 100              0x56,   //0x21    CODE2 register,
 101              0x2A,   //0x22    CODE3 register,
 102              0x06,   //0x23    IFCAL1 register,
 103              0x00,   //0x24    IFCAL2 register,  only read
 104              0x05,   //0x25    VCOCCAL register,
 105              0x44,   //0x26    VCOCAL1 register,
 106              0x80,   //0x27    VCOCAL2 register,
 107              0x30,   //0x28    VCO DEV Cal. I register,
 108              0x20,   //0x29    VCO DEV Cal. II register,
 109              0x80,   //0x2A    VCO DEV Cal. III register,
 110              0x00,   //0x2B    VCO Mod. delay register
 111              0x7A,   //0x2C    BATTERY register,
 112              0x2F,   //0x2D    TXTEST register,
 113              0x47,   //0x2E    RXDEM1 register,
 114              0x80,   //0x2F    RXDEM2 register,
 115              0xF1,   //0x30    CPC1 register,
 116              0x11,   //0x31    CPC2 register,
 117              0x04,   //0x32    CRYSTAL register,
C51 COMPILER V9.01   SEND                                                                  02/25/2011 12:31:38 PAGE 3   

 118              0x45,   //0x33    PLLTEST register,
 119              0x18,   //0x34    VCOTEST register,
 120              0x10,   //0x35    RF Analog Test
 121              0xFF,   //0x36    IFAT register,
 122              0x37,   //0x37    Channel select register,
 123              0xFF    //0x38    VRB register
 124          };
 125          
 126          
 127          /*********************************************************************
 128          **  function Declaration
 129          *********************************************************************/
 130          void A7125_WriteReg(Uint8, Uint8);
 131          Uint8 A7125_ReadReg(Uint8);
 132          void StrobeCmd(Uint8 src);
 133          void ByteSend(Uint8 src);
 134          void A7125_Reset(void);
 135          void A7125_WriteID(void);
 136          void initRF(void);
 137          void A7125_Config(void);
 138          void A7125_Cal(void);
 139          void WriteFIFO(Uint8 length);
 140          void ReadFIFO(Uint8 length);
 141          void Delay1ms(Uint16 n);
 142          Uint8 ByteRead(void);
 143          /*void timo_init()
 144          {
 145            TMOD=0X01;
 146            TH0=0XDC;
 147            TL0=0X00;
 148            EA=1;
 149            ET0=1;
 150            TR0=1;
 151          
 152          }
 153          void timer(void) interrupt 1
 154          {   
 155             TH0=0XDC;
 156            TL0=0X00;
 157              cc++;
 158                  if(cc>10)
 159                   {
 160                     cc=0;
 161                     dd=1;
 162                   }
 163          }*/
 164          
 165          
 166          /*********************************************************************
 167          * main loop
 168          *********************************************************************/
 169          void main(void)
 170          {  
 171   1          unsigned int aa;
 172   1              unsigned int bb; 
 173   1              unsigned char flag; 
 174   1              Delay1ms(50);          // 等待晶体稳定
 175   1              LED1=0;
 176   1              BUFF=1;
 177   1          initRF();
 178   1          StrobeCmd(CMD_STBY);
 179   1          A7125_WriteReg( TXTEST_REG, 0x17 );          //      发送功率0DB
C51 COMPILER V9.01   SEND                                                                  02/25/2011 12:31:38 PAGE 4   

 180   1          // A7125_WriteReg( DATARATE_REG, 0x1F );    //  速率2M
 181   1              A7125_WriteReg( DATARATE_REG, 0x5F );       // 1M
 182   1          A7125_WriteReg( MODECTRL_REG, 0x62 );      //  FIFO模式
 183   1          A7125_WriteReg( PLL1_REG,160);             //   频道10
 184   1          A7125_WriteReg( CODE1_REG, 0x0F);          //  使能CRC检测
 185   1              //A7125_WriteReg(FIFO1_REG,8-1);            // set FIFO length 
 186   1         WriteFIFO( 8 ); 
 187   1        // timo_init();
 188   1         // StrobeCmd(CMD_RX);                      // 写数据
 189   1          while(1)
 190   1          {
 191   2                       aa=0;
 192   2                       bb=0;
 193   2                       //cc=0;
 194   2                       flag=0;
 195   2                       // WriteFIFO( 8 ); 
 196   2                       // A7125_WriteReg(FIFO1_REG,8-1);            // set FIFO length 
 197   2               StrobeCmd( CMD_TX );               //发送数据
 198   2                        while(GIO1);                      // 等待发送完成
 199   2                        GIO1=1;
 200   2                      A7125_WriteReg(FIFO1_REG,8-1);            // set FIFO length 
 201   2                       StrobeCmd(CMD_RX);                                                                                                                                                                                 
 202   2                      for(aa=0;aa<505;aa++)
 203   2                      {
 204   3                // while(GIO1);                  // 等待数据传输完成
 205   3                         //GIO1=1;
 206   3                         //if(aa==503)
 207   3                          //{
 208   3                                      //Delay1ms(1);   
 209   3                      //      }
 210   3                         if(GIO1==0)
 211   3                           {
 212   4                                 GIO1=1;
 213   4                                 flag=1;
 214   4                             break;  
 215   4                              }
 216   3       
 217   3                      }
 218   2                      if(flag)
 219   2                       {
 220   3                          flag=0;
 221   3                  TmpUint8 = A7125_ReadReg(MODE_REG);
 222   3                 if((TmpUint8&0x20)==0)
 223   3                  {
 224   4                     ReadFIFO(8);     //读数据
 225   4                               //  LED1=~LED1;
 226   4                                // Delay1ms(720);
 227   4                                   LED1=1;
 228   4                                       BUFF=~BUFF;
 229   4                                       Delay1ms(50);
 230   4                                 //StrobeCmd( CMD_TX );        //发送数据
 231   4                               // A7125_WriteReg( PLL1_REG,160);             //   频道10
 232   4                  }
 233   3                       //else
 234   3                       //  {
 235   3                         //     LED1=~LED1;
 236   3                              //  Delay1ms(150);
 237   3                      //  }
 238   3                                
 239   3                       }
 240   2                       else
 241   2                       {
C51 COMPILER V9.01   SEND                                                                  02/25/2011 12:31:38 PAGE 5   

 242   3                         // for(bb=0;bb<3;bb++)
 243   3                              //   {
 244   3                                   LED1=0;
 245   3                              //       BUFF=~BUFF;
 246   3                                   BUFF=1;
 247   3                                       Delay1ms(200);
 248   3                              //      }
 249   3                                  //
 250   3                                  // A7125_WriteReg( PLL1_REG,160);             //   频道10
 251   3                                       initRF();
 252   3                                 //  StrobeCmd( CMD_TX );      //发送数
 253   3                              
 254   3                       }
 255   2              
 256   2               }
 257   1      }
 258          
 259          /*********************************************************************
 260          ** Err_State
 261          *********************************************************************/
 262          void Err_State(void)
 263          {
 264   1          //ERR display
 265   1          //Error Proc...
 266   1          while(1)
 267   1          {
 268   2              ;
 269   2          }
 270   1      }
 271          
 272          /************************************************************************
 273          **  A7125_WriteReg
 274          ************************************************************************/
 275          void A7125_WriteReg(Uint8 addr, Uint8 dataByte)
 276          {
 277   1          Uint8 i;
 278   1      
 279   1          SCS = 0;
 280   1          addr |= 0x00; //bit cmd=0,r/w=0
 281   1          for(i = 0; i < 8; i++)
 282   1          {
 283   2              if(addr & 0x80)
 284   2                  SDIO = 1;
 285   2              else
 286   2                  SDIO = 0;
 287   2      
 288   2              SCK = 1;
 289   2              _nop_();
 290   2              SCK = 0;
 291   2              addr = addr << 1;
 292   2          }
 293   1          _nop_();
 294   1      
 295   1          //send data byte
 296   1          for(i = 0; i < 8; i++)
 297   1          {
 298   2              if(dataByte & 0x80)
 299   2                  SDIO = 1;
 300   2              else
 301   2                  SDIO = 0;
 302   2      
 303   2              SCK = 1;
C51 COMPILER V9.01   SEND                                                                  02/25/2011 12:31:38 PAGE 6   

 304   2              _nop_();
 305   2              SCK = 0;
 306   2              dataByte = dataByte << 1;

⌨️ 快捷键说明

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