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

📄 halvol.lst

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


C51 COMPILER V8.01, COMPILATION OF MODULE HALVOL
OBJECT MODULE PLACED IN .\Debug\halvol.obj
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE mp3ctrl\halvol.c LARGE OPTIMIZE(9,SIZE) NOINTPROMOTE INCDIR(.\common;.\e2pr
                    -om;.\file;.\fmtx;.\ir;.\keyboard;.\lcm;.\led;.\main;.\matrixkey;.\mp3ctrl;.\sd;.\usbhost;.\include;.\lib) DEBUG OBJECTEX
                    -TEND PRINT(.\Debug\halvol.lst) OBJECT(.\Debug\halvol.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:             halvol.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 "va4010reg.h"
  21          #include "va4010regsdk.h"
  22          #include "common.h"
  23          #include "timer.h"
  24          #include "4010ui.h"
  25          #include "halmp3dec.h"
  26          #include "halir.h"
  27          #include "halvol.h"
  28          
  29          //This is the virtual volume level which has nothing to do with the Volume register.
  30          static BYTE data s_VolLevel;
  31          //This variable will be used during volume smooth. (s_VolLevel --> 0 --> s_VolLevel)
  32          static BYTE data s_VolSmth;
  33          //This variable is the status of volume smooth FSM.
  34          static BYTE data s_VolSmthSta;
  35          
  36          //Volume map: volume level --> the value for volume register.
  37          #if 0
              static BYTE VolMap[VOLLEVEL_MAX + 1]={
                      0x12,//mute
                      
                      0x0F,0x0E,0x0D,0x0C,0x0B,0x0A,0x09,0x08,0x07,0x06,0x05,0x04,0x03,0x02,0x01,0x00,//down
              
                      //0x11, 0x12, //up
              };
              #endif
  46          
  47          ////////////////////////////
  48          //This functin just set the volume register according the input parameter.
  49          static void _halVolRegSet(BYTE bVol)
  50          {
  51   1      #if 0
                      //Here set the Volume register
                      if(bVol == 0){
C51 COMPILER V8.01   HALVOL                                                                04/17/2008 09:46:20 PAGE 2   

                              MP3_MUTE_ENABLE();
                      }else{
                              MP3_MUTE_DISABLE();
                              Volume = VolMap[bVol];
                      }       
              #else
  60   1              if(bVol == 0){
  61   2                      UartOutText("----MUTE_HW----\r\n");
  62   2                      MP3_MUTE_ENABLE();              
  63   2                      MUTE_HW();
  64   2                      DelayMs(200);
  65   2                      DelayMs(200);
  66   2                      //DelayMs(200);
  67   2                      //DelayMs(200);
  68   2                      //DelayMs(200);
  69   2              }else if(bVol > 2){      
  70   2                     UartOutText("----MP3_MUTE_DISABLE()----\r\n"); 
  71   2                      MP3_MUTE_DISABLE();
  72   2                      Volume = 0x10 - bVol;
  73   2              }       
  74   1      
  75   1      #endif
  76   1      
  77   1              UartOutText("-I-: Volume Level 0x");UartOutValue(bVol, 2);
  78   1      //      UartOutText("-I-: s_VolLevel 0x");UartOutValue(s_VolLevel, 2);
  79   1      //      UartOutText("-I-: s_VolSmth 0x");UartOutValue(s_VolSmth, 2);
  80   1              
  81   1              return;
  82   1      }
  83          
  84          
  85          /////////////API////////
  86          //This function will init the volume control module.
  87          // 1. Init variables of volume control module.
  88          // 2. Set volume register with default volume level
  89          void halVolInit(void)
  90          {
  91   1              //s_VolLevel = VOLLEVEL_DEFAULT;
  92   1              //s_VolSmth = 0;
  93   1              s_VolSmthSta = SMOOTH_CAUSE_IDLE;
  94   1      
  95   1              //_halVolRegSet(s_VolLevel);
  96   1              halVolSet(VOLLEVEL_DEFAULT);
  97   1              
  98   1              return;
  99   1      }
 100          
 101          BYTE halVolGet(void)
 102          {
 103   1              return s_VolLevel;
 104   1      }
 105          
 106          void halVolSet(BYTE bVol)
 107          {
 108   1              s_VolLevel = bVol;
 109   1      
 110   1              //Here set the Volume register
 111   1              _halVolRegSet(bVol);
 112   1              
 113   1              return;
 114   1      }
 115          
C51 COMPILER V8.01   HALVOL                                                                04/17/2008 09:46:20 PAGE 3   

 116          //This function will increament the volume level according s_VolLevel/s_VolSmth.
 117          // 1. In SMOOTH_CAUSE_VOLUP status, accroding to the s_VolSmth.
 118          // 2. Otherwise according the s_VolLevel
 119          BYTE halVolUp(void)
 120          {
 121   1              BYTE *bpVol = &s_VolLevel; //Current volume level
 122   1      
 123   1              if(s_VolSmthSta == SMOOTH_CAUSE_VOLUP) //Volume up
 124   1               {             
 125   2                       bpVol = &s_VolSmth;
 126   2                    if(*bpVol > 3)
 127   2                     {
 128   3                       UartOutText("----DISMUTE_HW----\r\n");
 129   3                       DISMUTE_HW();
 130   3                     }                 
 131   2               }
 132   1              if(*bpVol < VOLLEVEL_MAX){
 133   2                      *bpVol = *bpVol + 1;
 134   2              }
 135   1      
 136   1              _halVolRegSet(*bpVol);
 137   1                      
 138   1              return *bpVol;
 139   1      }
 140          
 141          //This function will decrease the volume level according s_VolLevel/s_VolSmth.
 142          // 1. In SMOOTH_CAUSE_VOLDOWN status, accroding to the s_VolSmth.
 143          // 2. Otherwise according the s_VolLevel
 144          BYTE halVolDown(void)
 145          {
 146   1              BYTE data bStep = VOL_DOWN_STEP;
 147   1              BYTE *bpVol = &s_VolLevel; //Current volume level
 148   1      
 149   1              if(s_VolSmthSta == SMOOTH_CAUSE_VOLDOWN){ //Volume Down
 150   2                      bpVol = &s_VolSmth;
 151   2                      bStep = VOL_SMTHDOWN_STEP;       // In SMOOTH_CAUSE_VOLDOWN status, a big step will be used to volume decreas
             -e quickly.
 152   2              }        
 153   1      
 154   1              //if(*bpVol > VOLLEVEL_MIN){
 155   1              if(*bpVol > bStep){
 156   2                      *bpVol = *bpVol - bStep;
 157   2              }else{
 158   2                      *bpVol = 0;
 159   2              }
 160   1      
 161   1              _halVolRegSet(*bpVol);
 162   1                      
 163   1              return *bpVol;
 164   1      }
 165          
 166          //Set the volume smooth start level or end level, speed, FSM Status
 167          void halVolSmthSet(BYTE bVol, BYTE bSta, BYTE bBeg)
 168          {
 169   1              VolTicks = bBeg;
 170   1              
 171   1              s_VolSmth = bVol;
 172   1              s_VolSmthSta = bSta;
 173   1                      
 174   1              return;
 175   1      }
 176          
C51 COMPILER V8.01   HALVOL                                                                04/17/2008 09:46:20 PAGE 4   

 177          //The FSM for volume smooth.
 178          void halVolSmthFSM(void)
 179          {
 180   1              if(VolTicks > VOL_SMTH_BEGIN){
 181   2                      switch (s_VolSmthSta){
 182   3                              case SMOOTH_CAUSE_VOLUP:        //Volume smooth up
 183   3                                      if(halVolUp() >= s_VolLevel){
 184   4                                              s_VolSmthSta = SMOOTH_CAUSE_IDLE;
 185   4                                              //MP3_MUTE_DISABLE();   //modify by Ivor yan
 186   4                                              //DelayMs(10);
 187   4      
 188   4      
 189   4                                      }
 190   3                                      break;
 191   3      
 192   3                              case SMOOTH_CAUSE_VOLDOWN:              //Volume smooth down
 193   3                                      if(halVolDown() <= VOLLEVEL_MIN)
 194   3                                              {
 195   4                                              //halVolSet(0);
 196   4                                                      s_VolSmthSta = SMOOTH_CAUSE_IDLE;
 197   4                                                      keystatus = KEY_STATUS_PLAYPAUSE;
 198   4                                                      mp3status = MP3STATUS_IDLE;
 199   4                                                     //MP3_MUTE_DISABLE();    //modify by Ivor yan
 200   4                                                      //DelayMs(10);
 201   4                                      }
 202   3                                      break;
 203   3      
 204   3                              default:
 205   3                                      break;
 206   3                      }
 207   2      
 208   2      //              DISABLE_INTERRUPTS;
 209   2                      VolTicks = (VOL_SMTH_BEGIN - 1);
 210   2      //              ENABLE_INTERRUPTS;
 211   2              }
 212   1              
 213   1              return;
 214   1      }
 215          


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    270    ----
   CONSTANT SIZE    =   ----    ----
   XDATA SIZE       =   ----       7
   PDATA SIZE       =   ----    ----
   DATA SIZE        =      3       1
   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 + -