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

📄 halmp3dec.lst

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


C51 COMPILER V8.01, COMPILATION OF MODULE HALMP3DEC
OBJECT MODULE PLACED IN .\Debug\halmp3dec.obj
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE mp3ctrl\halmp3dec.c LARGE OPTIMIZE(9,SIZE) NOINTPROMOTE INCDIR(.\common;.\e
                    -2prom;.\file;.\fmtx;.\ir;.\keyboard;.\lcm;.\led;.\main;.\matrixkey;.\mp3ctrl;.\sd;.\usbhost;.\include;.\lib) DEBUG OBJEC
                    -TEXTEND PRINT(.\Debug\halmp3dec.lst) OBJECT(.\Debug\halmp3dec.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:             halmp3dec.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 "halmp3dec.h"
  25          #include "libfatif.h"
  26          #include "halvol.h"
  27          
  28          static BYTE data bOneShot;
  29          static BYTE data bReSync;
  30          
  31          #if 0
              #define MP3_MUTE_ENABLE()        (Mp3Ctrl |= 0x04)
              #define MP3_MUTE_DISABLE()       (Mp3Ctrl &= (~0x04))
              #define MP3_DEC_DISABLE()       (Mp3Ctrl = 0X04)
              #define MP3_PAUSE_ENABLE()              (Playmode |= 0x20)
              #define MP3_PAUSE_DISABLE()             (Playmode &= (~0x20))
              #endif
  38          
  39          void MP3_MUTE_ENABLE()
  40          {
  41   1              Mp3Ctrl |= 0x04;
  42   1              return;
  43   1      }
  44          void MP3_MUTE_DISABLE()
  45          {
  46   1              Mp3Ctrl &= (~0x04);
  47   1              return;
  48   1      }
  49          
  50          void MP3_DEC_DISABLE()
  51          {
  52   1              Mp3Ctrl = 0X04; //disable and mute
  53   1              return;
C51 COMPILER V8.01   HALMP3DEC                                                             04/17/2008 09:46:18 PAGE 2   

  54   1      }
  55          
  56          void MP3_PAUSE_ENABLE()
  57          {
  58   1              Playmode |= 0x20;
  59   1              return;
  60   1      }
  61          
  62          void MP3_PAUSE_DISABLE()
  63          {
  64   1              Playmode &= (~0x20);
  65   1              return;
  66   1      }
  67          
  68          
  69          void halMp3Play(void) //STREAM *fd)
  70          {
  71   1              UartOutText("halMp3Play(). \r\n");
  72   1              Playmode = 0x10;        //sw reset
  73   1              bOneShot = 0;
  74   1              Playmode = 0x00;
  75   1      
  76   1              Volume = 0x0F; //silence
  77   1              
  78   1      #if (DAC_I2S_FORMAT == DAC_I2S_RJUST)
  79   1              IISFmt = 0x03;
  80   1      #elif (DAC_I2S_FORMAT == DAC_I2S_LJUST)
                      IISFmt = 0x02;
              #elif (DAC_I2S_FORMAT == DAC_I2S_I2S)
                      IISFmt = 0x01;
              #endif
  85   1      
  86   1      
  87   1              //Mp3Ctrl = 0x31;       
  88   1              Mp3Ctrl = 0x05; //mute enable   
  89   1              Volume = 0x0F; //silence
  90   1      
  91   1              return; 
  92   1      }
  93          
  94          BYTE halMp3Req(STREAM *fd)
  95          {
  96   1              WORD wRet;
  97   1              BYTE data bTmp;
  98   1              BYTE data bFlag = MP3_DATREQ_OK; 
  99   1      
 100   1              if((fd==NULL)||(mp3status != MP3STATUS_PLAY)){
 101   2                      SysTicks = 0;
 102   2                      
 103   2                      return MP3_DATREQ_IDLE;
 104   2              }       
 105   1      
 106   1              if((Alarm&MP3_REQ)){ //Data requst interrupt
 107   2                      wRet = FileReadMp3(fd);
 108   2                      Alarm = 0xff;                           
 109   2                      
 110   2                      if(SysTicks > 0x10) SysTicks = 0; //The SysTicks will be reseted for each MP3_REQ, so normally SysTicks 
             -will not be very big.
 111   2      #if 0
                              UartOutText("\r\n/*---------OV--------------*/\r\n");   
                              UartOutText("FrmLow value is: "); UartOutValue(FrmLow, 2);
                              UartOutText("Mp3Info value is: "); UartOutValue(Mp3Inf, 2);
C51 COMPILER V8.01   HALMP3DEC                                                             04/17/2008 09:46:18 PAGE 3   

                              UartOutText("Mp3Stat value is: "); UartOutValue(Mp3Stat, 2);                    
                              UartOutText("Read count:"); UartOutValue(fd->dw512BCnt, 8); 
              #endif          
 118   2                      if(wRet!=SECTOR_SIZE){
 119   3                      //if((wRet!=SECTOR_SIZE)||(Mp3Stat&0XF8)){
 120   3                      //if((wRet!=SECTOR_SIZE)||((Mp3Stat&0XF0)==0x10)){
 121   3                              bFlag = MP3_DATREQ_OVER;
 122   3                      }       
 123   2              }
 124   1      
 125   1              if(bOneShot==0){
 126   2                      if(FrmLow > MP3_CHECK_FRMMAX){  //MP3_CHECK_FRMMAX
 127   3                              UartOutText("\r\n/*-----------------------*/\r\n");     
 128   3                              UartOutText("FrmLow value is: "); UartOutValue(FrmLow, 2);
 129   3                              UartOutText("Mp3Info value is: "); UartOutValue(Mp3Inf, 2);
 130   3                              UartOutText("Read count:"); UartOutValue(fd->dw512BCnt, 8);
 131   3      
 132   3                              //fd->dwMp3Start = fd->dw512BCnt;
 133   3                              if((Mp3Inf & 0x0F) == 0x9){
 134   4                                      NDiv = 0x2B;
 135   4                                      MDiv = 0x08;
 136   4                                      PllCtrl = 0x7;
 137   4                              }               
 138   3      
 139   3                              switch(Mp3Inf){
 140   4                                      case MPEG25_11KHZ_112KBPS:
 141   4                                      case MPEG2_16KHZ_8KBPS: 
 142   4                                      case MPEG2_24KHZ_8KBPS: 
 143   4                                      case MPEG2_22KHZ_8KBPS:
 144   4                                              bFlag = MP3_DATREQ_OVER;
 145   4                                              break;
 146   4                                      default:
 147   4                                              break;
 148   4                              }
 149   3                              //UartOutText("----DISMUTE_HW----\r\n");
 150   3                          //DISMUTE_HW();
 151   3                                               
 152   3                              halVolSmthSet(0, SMOOTH_CAUSE_VOLUP, 0);//volume smooth up
 153   3                              
 154   3                              bOneShot = 1;
 155   3                      }
 156   2                      //else if(fd->dw512BCnt > MP3_CHECK_SECMAX){ //It seems this is not a valid mp3 file
 157   2                      //      bFlag = MP3_DATREQ_OVER;
 158   2                      //}
 159   2              }       
 160   1      
 161   1              bTmp = Mp3Stat;
 162   1              if(bTmp&0XF8){ //crc error, huffman error
 163   2                      UartOutText("Mp3Stat = "); UartOutValue(Mp3Stat,2);
 164   2      
 165   2                      Mp3Stat = bTmp; //Clear the register
 166   2                      Mp3Ctrl |= 0x04; //mute
 167   2                      //Playmode |= 0x01;     //Skip 256 frame
 168   2                      Playmode |= 0x02;       //Skip frame
 169   2                      UartOutText("-I-: Skip Frame \r\n");
 170   2                      
 171   2                      bReSync ++;
 172   2                      if(bReSync > MP3_RESYNC_MAX)      // Too many errors, so just OVER.     
 173   2                              bFlag = MP3_DATREQ_OVER;
 174   2      
 175   2                      //Use to count the frame_skip interval
 176   2                      SysTicks = 0;
C51 COMPILER V8.01   HALMP3DEC                                                             04/17/2008 09:46:18 PAGE 4   

 177   2              }
 178   1      
 179   1               if((Playmode&0x02)&&(SysTicks > 5)){   //frame_skip interval: 0.8Second
 180   2                      Mp3Ctrl &= ~0x04; //disable mute
 181   2                      Playmode &= ~0x02; //clear skip frame bit       
 182   2               }      
 183   1      
 184   1               if(SysTicks > 0x30)//If paused, this ticks will still go on.
 185   1                      bFlag = MP3_DATREQ_OVER;        //No MP3_REQ for a long time, so just over
 186   1      
 187   1      
 188   1              return bFlag; 
 189   1      }
 190          
 191          
 192          #ifdef ENABLE_EQ_KEY
 193          #ifdef UART_DEBUG_DISABLE
 194          BYTE EQString[EQ_VALUE_MAX+1][6]={
 195                  {"POPS "},
 196                  {"JAZZ "},
 197                  {"ROCK "},
 198                  {"CLASS"},
 199          //      {"RANDB  "},
 200          };
 201          #endif
 202          
 203          static BYTE data g_byEqValue;
 204          BYTE EQConfig[EQ_VALUE_MAX+1][3]={
 205          //      {0x00, 0x00, 0x00}, //EQ_OFF
 206                  {0x12, 0x22, 0x10},     //EQ_POPS
 207                  {0x55, 0x01, 0x22}, //EQ_JAZZ
 208                  {0x76, 0x02, 0x20}, //EQ_ROCK
 209                  {0x11, 0x22, 0x27}, //EQ_CLASSIC
 210          //      {0x50, 0x11, 0x12}, //EQ_RANDB  
 211          //      {0x10, 0x00, 0x00}, //EQ_BASSBOOST
 212          };
 213          
 214          void halEQUp(void)
 215          {
 216   1              BYTE bTmp = g_byEqValue;
 217   1              
 218   1              bTmp++;
 219   1              bTmp = bTmp%(EQ_VALUE_MAX+1);
 220   1      
 221   1              halEQSet(bTmp);
 222   1              
 223   1              return;
 224   1      }
 225          
 226          void halEQSet(BYTE bEQIdx)
 227          {
 228   1              g_byEqValue = bEQIdx;
 229   1      
 230   1              EqLow   = EQConfig[g_byEqValue][0];
 231   1              EqMid   = EQConfig[g_byEqValue][1];
 232   1              EqHi    = EQConfig[g_byEqValue][2];     
 233   1      
 234   1              UartOutText("-I-: EQ Setting 0x");UartOutValue(g_byEqValue, 2);
 235   1              UartOutText(EQString[g_byEqValue]);
 236   1      
 237   1              return;
 238   1      }
C51 COMPILER V8.01   HALMP3DEC                                                             04/17/2008 09:46:18 PAGE 5   

 239          
 240          BYTE halEQGet(void)
 241          {
 242   1              return g_byEqValue;
 243   1      }
 244          
 245          #endif
 246          
 247          
 248          


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