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

📄 a7102.lst

📁 无线模块A7102的C语言测试程序源码,
💻 LST
📖 第 1 页 / 共 2 页
字号:
C51 COMPILER V7.50   A7102                                                                 07/14/2008 10:33:18 PAGE 1   


C51 COMPILER V7.50, COMPILATION OF MODULE A7102
OBJECT MODULE PLACED IN A7102.obj
COMPILER INVOKED BY: E:\Program Files\Keil\C51\BIN\C51.EXE source\A7102.c BROWSE DEBUG OBJECTEXTEND PRINT(.\A7102.lst) O
                    -BJECT(A7102.obj)

line level    source

   1                          /***********************************************
   2                          *       copyrite (c) 2007
   3                          *文件名:          A7102.c
   4                          *作者:            larry
   5                          *当前版本:        v1.0
   6                          *建立时间:        2007-6-11 09:45
   7                          *完成日期:
   8                          ;联系:            13510074992
   9                          ;E-MAIL:          pjh78@163.com
  10                          *描述:            A7102驱动抽象程序,与MCU和IO
  11                          *                 接口无关,由外部.h文件宏定义                                
  12                          ************************************************/               
  13          #include    "../header/A7102.h"
  14          /***********************************************
  15          函 数:  Byte_Write()
  16          功 能:  写8bit数据到sck和sdio
  17          输 入:  byte
  18          输 出:  /
  19          描 述:  左移位,bit7在先,sck负边缘触发 
  20          ***********************************************/
  21          void    Byte_Write(unsigned char byte)
  22          {
  23   1              unsigned char i;
  24   1              
  25   1              for(i = 0x00; i < 0x08; i++)
  26   1              {
  27   2                  if(byte&0x80)
  28   2                      iSPI_Sdi     = positive;
  29   2                  else
  30   2                      iSPI_Sdi     = negative;
  31   2                      
  32   2                  delay_A7102_us();
  33   2                  
  34   2                  iSPI_Sck         = positive;
  35   2                  
  36   2                  delay_A7102_us();
  37   2                  
  38   2                  iSPI_Sck         = negative;
  39   2                    
  40   2                  delay_A7102_us();            
  41   2                  
  42   2                  byte           <<= 0x01;
  43   2              }
  44   1      }
  45          /***********************************************
  46          函 数:  Byte_Read()
  47          功 能:  读8bit数据从sck和sdio
  48          输 入:  /
  49          输 出:  byte
  50          描 述:  左移位,bit7在先,sck负边缘触发 
  51          ***********************************************/
  52          unsigned char   Byte_Read(void)
  53          {
  54   1              unsigned char i;
C51 COMPILER V7.50   A7102                                                                 07/14/2008 10:33:18 PAGE 2   

  55   1              unsigned char byte;
  56   1              
  57   1              for(i = 0x00; i < 0x08; i++)
  58   1              {
  59   2                  byte           <<= 0x01;
  60   2                  
  61   2                  delay_A7102_us(); 
  62   2                  
  63   2                  if(iSPI_Sdo)
  64   2                      byte        |= 0x01;
  65   2                  else
  66   2                      byte        &= 0xfe;
  67   2                      
  68   2                  iSPI_Sck         = positive; 
  69   2                              
  70   2                  delay_A7102_us();
  71   2                   
  72   2                  iSPI_Sck         = negative;              
  73   2              }
  74   1              
  75   1              /* 返回读取数值 */
  76   1              return    (byte);
  77   1      }
  78          /***********************************************
  79          函 数:  Word_Write()
  80          功 能:  写16bit数据到sck和sdio
  81          输 入:  word
  82          输 出:  /
  83          描 述:  左移位,bit15在先,sck负边缘触发 
  84          ***********************************************/
  85          void    Word_Write(unsigned int word)
  86          {
  87   1              unsigned char i;
  88   1              
  89   1              for(i = 0x00; i < 0x10; i++)
  90   1              {           
  91   2                  if(word&0x8000)
  92   2                      iSPI_Sdi     = positive;
  93   2                  else
  94   2                      iSPI_Sdi     = negative;
  95   2                  
  96   2                  delay_A7102_us();
  97   2                  
  98   2                  iSPI_Sck         = positive;
  99   2                  
 100   2                  delay_A7102_us();
 101   2                  
 102   2                  iSPI_Sck         = negative;
 103   2                  
 104   2                  delay_A7102_us();            
 105   2                  
 106   2                  word           <<= 0x01;
 107   2              }
 108   1      }
 109          /***********************************************
 110          函 数:  Word_Read()
 111          功 能:  读16bit数据从sck和sdio
 112          输 入:  /
 113          输 出:  word
 114          描 述:  左移位,bit16在先,sck负边缘触发 
 115          ***********************************************/
 116          unsigned int    Word_Read(void)
C51 COMPILER V7.50   A7102                                                                 07/14/2008 10:33:18 PAGE 3   

 117          {
 118   1              unsigned char i;
 119   1              unsigned int  word;
 120   1              
 121   1              for(i = 0x00; i < 0x10; i++)
 122   1              {
 123   2                  word           <<= 0x01;
 124   2                  
 125   2                  delay_A7102_us();
 126   2                  
 127   2                  if(iSPI_Sdo)
 128   2                      word        |= 0x0001;
 129   2                  else
 130   2                      word        &= 0xfffe;
 131   2                      
 132   2                  iSPI_Sck         = positive; 
 133   2                              
 134   2                  delay_A7102_us();
 135   2                  
 136   2                  iSPI_Sck         = negative;
 137   2              }
 138   1              
 139   1              /* 返回读取数值 */
 140   1              return    (word);
 141   1      }
 142          /***********************************************
 143          函 数:  A7102_Reset_Chip()
 144          功 能:  复位A7102芯片 
 145          输 入:  /
 146          输 出:  /
 147          描 述:  /
 148          ***********************************************/
 149          void    A7102_Reset_Chip(void)
 150          {
 151   1              iSPI_Scs        = negative;  
 152   1            
 153   1              /* 写A7102-Reset命令 */
 154   1              Byte_Write(0x7a);     
 155   1         
 156   1              iSPI_Scs        = positive;
 157   1      }
 158          /***********************************************
 159          函 数:  A7102_Reset_FifoTX()
 160          功 能:  复位A7102发送FIFO指针 
 161          输 入:  /
 162          输 出:  /
 163          描 述:  /
 164          ***********************************************/
 165          void    A7102_Reset_FifoTX(void)
 166          {
 167   1              iSPI_Sck        = negative;
 168   1              iSPI_Scs        = negative;
 169   1              
 170   1              /* 写A7102-FifoTX命令 */
 171   1              Byte_Write(0x6a);
 172   1              
 173   1              iSPI_Scs        = positive;
 174   1      }
 175          /***********************************************
 176          函 数:  A7102_Reset_FifoRX()
 177          功 能:  复位A7102接收FIFO指针 
 178          输 入:  /
C51 COMPILER V7.50   A7102                                                                 07/14/2008 10:33:18 PAGE 4   

 179          输 出:  /
 180          描 述:  /
 181          ***********************************************/
 182          void    A7102_Reset_FifoRX(void)
 183          {
 184   1              iSPI_Sck        = negative;
 185   1              iSPI_Scs        = negative;
 186   1              
 187   1              /* 写A7102-FifoRX命令 */
 188   1              Byte_Write(0xea);
 189   1              
 190   1              iSPI_Scs        = positive;
 191   1      }
 192          /***********************************************
 193          函 数:  A7102_Fifo_Read()
 194          功 能:  读FIFO数据 
 195          输 入:  read_buff
 196          输 出:  /
 197          描 述:  /
 198          ***********************************************/
 199          void    A7102_Fifo_Read(unsigned char *read_buff)
 200          {
 201   1              unsigned char i;
 202   1              
 203   1              iSPI_Sck        = negative;
 204   1              iSPI_Scs        = negative;
 205   1              
 206   1              /* 读A7102-FIFO命令 */
 207   1              Byte_Write(0xca);
 208   1              
 209   1              declare_sdo_input();
 210   1              
 211   1              /* 读A7102-FIFO数据 */
 212   1              for(i = 0x00;i < C_FIFO_Byte;i++)
 213   1              {
 214   2                  *read_buff  = Byte_Read();
 215   2                  
 216   2                  read_buff ++;
 217   2              }
 218   1              
 219   1              declare_sdo_output();
 220   1              
 221   1              iSPI_Scs        = positive;
 222   1      }
 223          /***********************************************
 224          函 数:  A7102_Fifo_Write()
 225          功 能:  写FIFO数据 
 226          输 入:  write_buff
 227          输 出:  /
 228          描 述:  /
 229          ***********************************************/
 230          void    A7102_Fifo_Write(unsigned char *write_buff)
 231          {
 232   1              unsigned char i;
 233   1      
 234   1              iSPI_Sck        = negative;
 235   1              iSPI_Scs        = negative;
 236   1      
 237   1              /* 写A7102-FIFO命令 */
 238   1              Byte_Write(0x5a);
 239   1      
 240   1              /* 写A7102-FIFO数据 */
C51 COMPILER V7.50   A7102                                                                 07/14/2008 10:33:18 PAGE 5   

 241   1              for(i = 0x00;i < C_FIFO_Byte;i++)
 242   1              {
 243   2                  Byte_Write(*write_buff);
 244   2                  
 245   2                  write_buff ++;
 246   2              }
 247   1              
 248   1              iSPI_Scs        = positive;
 249   1      }
 250          /***********************************************
 251          函 数:  A7102_Id_Write()
 252          功 能:  写ID到A7102内部寄存器 
 253          输 入:  buff_id[]
 254          输 出:  /
 255          描 述:  写ID必须一次性写入 
 256          ***********************************************/
 257          void    A7102_Id_Write(unsigned char *id_buff)
 258          {
 259   1              unsigned char i;
 260   1              
 261   1              iSPI_Sck        = negative;
 262   1              iSPI_Scs        = negative;
 263   1              
 264   1              /* 写A7102-ID命令 */
 265   1              Byte_Write(0x2a);
 266   1              
 267   1              /* 写A7102-ID数据 */
 268   1              for(i = 0x00;i < 0x04;i++)
 269   1              {
 270   2                  Byte_Write(*id_buff);
 271   2                  
 272   2                  id_buff ++;
 273   2              }
 274   1              
 275   1              iSPI_Scs        = positive;
 276   1      }
 277          /***********************************************
 278          函 数:  A7102_Id_Read()
 279          功 能:  读ID从A7102内部寄存器 
 280          输 入:  /
 281          输 出:  buff_id[]
 282          描 述:  读ID必须一次性读出 
 283          ***********************************************/
 284          void    A7102_Id_Read(unsigned char *id_buff)
 285          {
 286   1              unsigned char i;
 287   1              
 288   1              iSPI_Sck        = negative;
 289   1              iSPI_Scs        = negative;
 290   1              
 291   1              /* 读A7102-ID命令 */
 292   1              Byte_Write(0xaa);
 293   1              
 294   1              declare_sdo_input();
 295   1              
 296   1              /* 读A7102-ID数据 */
 297   1              for(i = 0x00;i < 0x04;i++)
 298   1              {
 299   2                  *id_buff    = Byte_Read();
 300   2                  
 301   2                  id_buff ++;
 302   2              }
C51 COMPILER V7.50   A7102                                                                 07/14/2008 10:33:18 PAGE 6   

 303   1              
 304   1              declare_sdo_output();
 305   1              
 306   1              iSPI_Scs        = positive;
 307   1      }
 308          /***********************************************
 309          函 数:  A7102_Register_Write()
 310          功 能:  写控制数据到A7102内部寄存器 
 311          输 入:  addr,parameter
 312          输 出:  /
 313          描 述:  /
 314          ***********************************************/
 315          void    A7102_Register_Write(unsigned char addr,unsigned int parameter)
 316          {
 317   1              iSPI_Sck        = negative;
 318   1              delay_A7102_us();
 319   1              iSPI_Scs        = negative;
 320   1              
 321   1              addr           &= 0x0f;
 322   1              
 323   1              /* 写A7102-参数配置命令 */

⌨️ 快捷键说明

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