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

📄 halas6001a.lst

📁 威望公司MP3 + USB MCU 的参考软件
💻 LST
字号:
C51 COMPILER V8.01   HALAS6001A                                                            04/17/2008 09:55:02 PAGE 1   


C51 COMPILER V8.01, COMPILATION OF MODULE HALAS6001A
OBJECT MODULE PLACED IN .\Debug\halas6001a.obj
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE fmtx\halas6001a.c LARGE OPTIMIZE(9,SIZE) REGFILE(.\Debug\VA4010_SDK_V2.ORC)
                    - BROWSE NOINTPROMOTE INCDIR(.\common;.\e2prom;.\file;.\fmtx;.\ir;.\keyboard;.\lcm;.\led;.\main;.\matrixkey;.\mp3ctrl;.\s
                    -d;.\usbhost;.\include;.\lib) DEBUG OBJECTEXTEND PRINT(.\Debug\halas6001a.lst) OBJECT(.\Debug\halas6001a.obj)

line level    source

   1          /****************************************************************
   2          *                      Viaon Technology (Suzhou) Co.,Ltd
   3          *
   4          *    Copyright 2007, Viaon Technology (Suzhou) Co.,Ltd,Suzhou,China
   5          *                    All rights reserved.
   6          *
   7          *
   8          * Filename:             halas6001a.c
   9          *
  10          * Programmer:           Greg
  11          *
  12          * Created:              1/2/2008
  13          *
  14          * Description:          public functions 
  15          *              
  16          *        
  17          * Change History (most recent first):   2008.1.2
  18          ****************************************************************/
  19          #include "utiltypedef.h"
  20          #include "common.h"
  21          #include "halas6001a.h"
  22          
  23          
  24          #if (FM_TRANS_MODULE == FM_TRANS_AS6001A)
              
              #if 0
              void halSPIInit(void)
              {
                      //set gpio direction, value
                      SPI_CLK = 0;
                      SPI_EN1 = 0;
                      SPI_CLK_OUT();
                      SPI_EN1_OUT();
                      
                      return;
              }
              #endif
              
              void _halSPISend0(void)
              {
                      //SPI_EN should be setup before this function
              
                      SPI_DAT_OUT();
                      SPI_CLK = 0;            //Here is the falling edge
                      SPI_DAT = 0;
                      DelayUs(SPI_CLK_TIME);
                      SPI_CLK = 1;            // the raising edge
                      DelayUs(SPI_CLK_TIME);
              
                      return;
              }
              
              void _halSPISend1(void)
C51 COMPILER V8.01   HALAS6001A                                                            04/17/2008 09:55:02 PAGE 2   

              {
                      //SPI_EN should be setup before this function
              
                      SPI_DAT_OUT();
                      SPI_CLK = 0;            //Here is the falling edge
                      SPI_DAT = 1;
                      DelayUs(SPI_CLK_TIME);
                      SPI_CLK = 1;            // the raising edge
                      DelayUs(SPI_CLK_TIME);
              
                      return;
              }
              
              void _halSPIWrite(WORD wVal)    //LSB -> MSB
              {
                      BYTE i;
              
                      SPI_EN1 = 1;
              
                      for(i=0;i<16;i++){
                              if(wVal&0x0001){
                                      _halSPISend1();
                              }else{
                                      _halSPISend0();
                              }
                              wVal >>= 1; //LSB will be put on the SPI bus first.
                      }
              
                      SPI_EN1 = 0;
                      SPI_CLK = 0;
                      
                      return;
              }
              
              /*
              Frequency: 87MHz -> 108MHz, step 0.1MHz
              Steps: 0 -> 210
              16bit SPI DATA:
                    T1(bit15/MSB), T0, PD1, PD0, MONO(bit11), D10, D9, D8, D7, D6, D5, D4, D3, D2, D1, D0(bit0/LSB)
                    T0, T1: for test should be set 0
                    PD0, PD1: for charge pump output, (0, 0) for usual operation
                    MONO: 1(Stereo operation), 0(mono L+R)
                    D0~D10: Program Counter/(Steps + FM_FREQ_BASE)
              Order when put on SPI DATA PIN:
                      MSB, ..., LSB -> DATA_PIN
              */
              #define AS6001A_MONO            1               // 1: Stereo, 0:Mono 
              #define AS6001A_PD                      0               // 00b: Usual, 01b: force low, 10b: force high, 11b: high impedence 
              static BYTE data s_FMIdx;
              
              void halFMSet(BYTE byChIdx)     //byChIdx: 0-> 210
              {
                      WORD wProgCnt = 0;
                      
                      s_FMIdx = byChIdx;
                      
                      wProgCnt = FM_FREQ_BASE + byChIdx;
              
                      //Set MONO, PD0, PD1, T0, T1
                      wProgCnt |= (AS6001A_MONO<<11); //Set MON: Stereo operation
              
                      wProgCnt |= (AS6001A_PD<<12); //Set MON: Stereo operation       
C51 COMPILER V8.01   HALAS6001A                                                            04/17/2008 09:55:02 PAGE 3   

              
              #ifndef FM_NULL_TEST
                      _halSPIWrite(wProgCnt);
              #endif
                      return;
              }
              void halFMUp(void)      //byChIdx: 0-> 203
              {
                      s_FMIdx++;
                      if(s_FMIdx >=FM_CHIDX_MAX){//Over Max
                              s_FMIdx = 0;            
                      }       
              
                      halFMSet(s_FMIdx);      
                      
                      return;
              }
              
              void halFMDown(void)    //byChIdx: 0-> 203
              {
                      if(s_FMIdx == 0){//Minmal
                              s_FMIdx = FM_CHIDX_MAX;//turn around            
                      }else
                              s_FMIdx--;
              
                      halFMSet(s_FMIdx);      
                      
                      return;
              }
              
              WORD halFMGetFreq(void)
              {
              //      FMDigital = FM_FREQ_BASE+FMLevel;
                      WORD wTmp = FM_FREQ_BASE + (WORD)s_FMIdx;
              
                      //UartOutText("-I-: halFMGetFreq 0x");UartOutValue(wTmp, 4);
                      return wTmp;
              }
              
              BYTE halFMGetIdx(void)
              {
              //      FMDigital = FM_FREQ_BASE+FMLevel;
                      //WORD wTmp = FM_FREQ_BASE + s_FMIdx;
              
                      return s_FMIdx;
              }
              
              BYTE halFMFreq2Idx(WORD wFreq)
              {
                      WORD wTmp = wFreq;
              
                      //Checking parameter validation
                      if((wFreq>=FM_FREQ_BASE) && (wFreq<=FM_FREQ_MAX)){
                              wTmp = wTmp - FM_FREQ_BASE; 
                      }else{
                              wTmp = FM_CHIDX_INVALID;
                      }               
                      
                      return (BYTE)wTmp;
              }
              ///////////////////////////////////
              #if 0
C51 COMPILER V8.01   HALAS6001A                                                            04/17/2008 09:55:02 PAGE 4   

              void halSPITest(void)
              {
                      static BYTE byChIdx = 0;
                              
                      halSPIInit();
              
                      halFMSet(byChIdx);
                      UartOutText("-I-: halFMSet: ");UartOutValue(byChIdx, 2);
              
                      byChIdx ++;
                      if(byChIdx > FM_CHIDX_MAX)
                              byChIdx = 0;
              
                      
                      return;
              }
              #endif
              #endif
 196          
 197          
 198          


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =   ----    ----
   CONSTANT SIZE    =   ----    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =   ----    ----
   IDATA SIZE       =   ----    ----
   BIT SIZE         =   ----    ----
END OF MODULE INFORMATION.


C51 COMPILATION COMPLETE.  0 WARNING(S),  0 ERROR(S)

⌨️ 快捷键说明

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