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

📄 accept.lst

📁 A7125无线模块
💻 LST
📖 第 1 页 / 共 2 页
字号:
C51 COMPILER V9.01   ACCEPT                                                                02/25/2011 21:04:32 PAGE 1   


C51 COMPILER V9.01, COMPILATION OF MODULE ACCEPT
OBJECT MODULE PLACED IN accept.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE accept.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 <reg52.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          #define RF_WTR  GIO1
  27           
  28          
  29          //!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!//
  30          //                    Global Variable Declaration                   //
  31          //!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!//
  32          Uint8           idata   RfBuf[64];
  33          Uint8           idata   TmpUint8;
  34          
  35          //-----------------------------------------------------------------------------
  36          // 64 bytes PN9 pseudo random code
  37          //-----------------------------------------------------------------------------
  38          const Uint8 code PN9_Tab[]=
  39          {   0xFF,0x83,0xDF,0x17,0x32,0x09,0x4E,0xD1,
  40              0xE7,0xCD,0x8A,0x91,0xC6,0xD5,0xC4,0xC4,
  41              0x40,0x21,0x18,0x4E,0x55,0x86,0xF4,0xDC,
  42              0x8A,0x15,0xA7,0xEC,0x92,0xDF,0x93,0x53,
  43              0x30,0x18,0xCA,0x34,0xBF,0xA2,0xC7,0x59,
  44              0x67,0x8F,0xBA,0x0D,0x6D,0xD8,0x2D,0x7D,
  45              0x54,0x0A,0x57,0x97,0x70,0x39,0xD2,0x7A,
  46              0xEA,0x24,0x33,0x85,0xED,0x9A,0x1D,0xE0
  47          };
  48          
  49          //-----------------------------------------------------------------------------
  50          // RF ID code
  51          //-----------------------------------------------------------------------------
  52          const Uint8 code ID_Tab[4] =
  53          {
  54              0x54, 0x75, 0xC5, 0x2A
  55          };
C51 COMPILER V9.01   ACCEPT                                                                02/25/2011 21:04:32 PAGE 2   

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

 118              0x10,   //0x35    RF Analog Test
 119              0xFF,   //0x36    IFAT register,
 120              0x37,   //0x37    Channel select register,
 121              0xFF    //0x38    VRB register
 122          };
 123          
 124          
 125          /*********************************************************************
 126          **  function Declaration
 127          *********************************************************************/
 128          void A7125_WriteReg(Uint8, Uint8);
 129          Uint8 A7125_ReadReg(Uint8);
 130          void StrobeCmd(Uint8 src);
 131          void ByteSend(Uint8 src);
 132          void A7125_Reset(void);
 133          void A7125_WriteID(void);
 134          void initRF(void);
 135          void A7125_Config(void);
 136          void A7125_Cal(void);
 137          Uint8 ByteRead(void);
 138          void ReadFIFO(Uint8 length);
 139          void WriteFIFO(Uint8 length);
 140          void Delay1ms(Uint8 n); 
 141          
 142          
 143          
 144          /*********************************************************************
 145          * main loop
 146          *********************************************************************/
 147          void main(void)
 148          {        //unsigned int aa;
 149   1           unsigned char flag=0;
 150   1           LED1=0;
 151   1           Delay1ms(50);          // 等待晶体稳定
 152   1           initRF();
 153   1           StrobeCmd(CMD_STBY);
 154   1           A7125_WriteReg(TXTEST_REG,0x17);         //         发送功率0DB
 155   1           //A7125_WriteReg(DATARATE_REG,0x1F);     //  速率2M
 156   1               A7125_WriteReg( DATARATE_REG, 0x5F );    //1M
 157   1           A7125_WriteReg(MODECTRL_REG,0x62);      //  FIFO模式
 158   1           A7125_WriteReg(PLL1_REG,160);           //   频道100
 159   1           A7125_WriteReg(CODE1_REG,0x0F);         //  使能CRC检测
 160   1      
 161   1           A7125_WriteReg(FIFO1_REG,8-1);         // set FIFO length 
 162   1          StrobeCmd(CMD_RX);                          //设置成接收模式
 163   1          while(1)                                             
 164   1          {
 165   2                        //A7125_WriteReg(FIFO1_REG,8-1);         // set FIFO length   
 166   2                        // StrobeCmd(CMD_RX);                         //设置成接收模式
 167   2                   while(GIO1);
 168   2                         GIO1=1;
 169   2                      LED1=0;
 170   2                  TmpUint8 = A7125_ReadReg(MODE_REG);
 171   2                  if((TmpUint8&0x20)==0)
 172   2                 {  
 173   3                    ReadFIFO(8);      //读数据
 174   3                      //      Delay1ms(1);  
 175   3                            WriteFIFO( 8 );    // 写数据
 176   3                          //Delay1ms(1); 
 177   3                                //A7125_WriteReg(PLL1_REG,160);           //   频道100 
 178   3                            StrobeCmd( CMD_TX );       //发送数据
 179   3                 //while( RF_WTR );        
C51 COMPILER V9.01   ACCEPT                                                                02/25/2011 21:04:32 PAGE 4   

 180   3                           while(GIO1);        // 等待发送完成
 181   3                                    GIO1=1;
 182   3                            LED1=1;
 183   3                     }
 184   2                        initRF();
 185   2                       A7125_WriteReg(FIFO1_REG,8-1);
 186   2                           
 187   2                       StrobeCmd(CMD_RX);
 188   2      
 189   2      
 190   2          }
 191   1      }
 192          
 193          /*********************************************************************
 194          ** Err_State
 195          *********************************************************************/
 196          void Err_State(void)
 197          {
 198   1          //ERR display
 199   1          //Error Proc...
 200   1          while(1)
 201   1          {
 202   2              ;
 203   2          }
 204   1      }
 205          
 206          /************************************************************************
 207          **  A7125_WriteReg
 208          ************************************************************************/
 209          void A7125_WriteReg(Uint8 addr, Uint8 dataByte)
 210          {
 211   1          Uint8 i;
 212   1      
 213   1          SCS = 0;
 214   1          addr |= 0x00; //bit cmd=0,r/w=0
 215   1          for(i = 0; i < 8; i++)
 216   1          {
 217   2              if(addr & 0x80)
 218   2                  SDIO = 1;
 219   2              else
 220   2                  SDIO = 0;
 221   2      
 222   2              SCK = 1;
 223   2              _nop_();
 224   2              SCK = 0;
 225   2              addr = addr << 1;
 226   2          }
 227   1          _nop_();
 228   1      
 229   1          //send data byte
 230   1          for(i = 0; i < 8; i++)
 231   1          {
 232   2              if(dataByte & 0x80)
 233   2                  SDIO = 1;
 234   2              else
 235   2                  SDIO = 0;
 236   2      
 237   2              SCK = 1;
 238   2              _nop_();
 239   2              SCK = 0;
 240   2              dataByte = dataByte << 1;
 241   2          }
C51 COMPILER V9.01   ACCEPT                                                                02/25/2011 21:04:32 PAGE 5   

 242   1          SCS = 1;
 243   1      }
 244          
 245          /************************************************************************
 246          **  A7125_ReadReg
 247          ************************************************************************/
 248          Uint8 A7125_ReadReg(Uint8 addr)
 249          {
 250   1          Uint8 i;
 251   1          Uint8 tmp;
 252   1      
 253   1          SCS = 0;
 254   1          addr |= 0x40; //bit cmd=0,r/w=1
 255   1          for(i = 0; i < 8; i++)
 256   1          {
 257   2      
 258   2              if(addr & 0x80)
 259   2                  SDIO = 1;
 260   2              else
 261   2                  SDIO = 0;
 262   2      
 263   2              _nop_();
 264   2              SCK = 1;
 265   2              _nop_();
 266   2              SCK = 0;
 267   2      
 268   2              addr = addr << 1;
 269   2          }
 270   1      
 271   1          _nop_();
 272   1          SDIO = 1;
 273   1      
 274   1          //read data
 275   1          for(i = 0; i < 8; i++)

⌨️ 快捷键说明

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