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

📄 4010ui.lst

📁 威望公司MP3 + USB MCU 的参考软件
💻 LST
📖 第 1 页 / 共 2 页
字号:
 264          {
 265   1      #if 0
                      hal9255FMRead();
              #else
 268   1              halFMUp();
 269   1      
 270   1              halWRInfo1();
 271   1      //      hal9255FMRead();
 272   1              
 273   1              DispSetStatus(DISP_FMCH_STATUS);
 274   1      #endif
 275   1              return;
 276   1      }
 277          
 278          void _halKeyFMDown()
 279          {
 280   1              halFMDown();
 281   1      
 282   1              halWRInfo1();
 283   1              
 284   1              DispSetStatus(DISP_FMCH_STATUS);
 285   1      
 286   1              return;
 287   1      }
 288          
 289          void _halKeyVolUp()
 290          {
 291   1              halVolUp();
 292   1              DispSetStatus(DISP_VOLUMN_STATUS);
 293   1      
 294   1              return;
 295   1      }
 296          
 297          void _halKeyVolDown()
 298          {
 299   1              halVolDown();
 300   1              DispSetStatus(DISP_VOLUMN_STATUS);
 301   1              
C51 COMPILER V8.01   4010UI                                                                04/17/2008 09:54:45 PAGE 6   

 302   1              return;
 303   1      }
 304          
 305          static BYTE SeekMap[] = {
 306                  SEARCH_MP3_NEXT,
 307                  SEARCH_MP3_PREV,
 308                  SEARCH_MP3_JUMP,
 309          };
 310          
 311          void _halKeySeek()
 312          {
 313   1              //DRIVE *drv = DriveGet();
 314   1              //UartOutText("-I-_halKeySeek \r\n");
 315   1              //UartOutText("keystatus\t");UartOutValue(keystatus,2);
 316   1              //UartOutText("SongLocateTick\t");UartOutValue(SongLocateTick,2);
 317   1      
 318   1      
 319   1              if(mp3status == MP3STATUS_PAUSE)
 320   1                      mp3status = MP3STATUS_PLAY;
 321   1              
 322   1              if(keystatus == KEY_STATUS_FSEEK){
 323   2                      JumpSong++;
 324   2                      JumpType = JUMP_FORWARD;
 325   2                      //UartOutText("JumpSong\t");UartOutValue(JumpSong,2);
 326   2                      return;
 327   2              }
 328   1              
 329   1              if(keystatus == KEY_STATUS_RSEEK){
 330   2                      JumpSong++;
 331   2                      JumpType = JUMP_BACKWARD;
 332   2                      //UartOutText("JumpSong\t");UartOutValue(JumpSong,2);
 333   2                      return;
 334   2              }       
 335   1              
 336   1              Mp3SReq.bySType = SeekMap[keystatus - KEY_STATUS_FSEEK];
 337   1      
 338   1              //MUTE_HW();
 339   1              //UartOutText("----MUTE_HW----\r\n");
 340   1              //DISABLE_INTERRUPTS;
 341   1              //SysTicks = 0;
 342   1              //while(SysTicks < 5);
 343   1              //ENABLE_INTERRUPTS;
 344   1              //DelayMs(200);
 345   1              if(mp3status == MP3STATUS_PLAY)//If the current status is playing, the volume smooth procedure should be 
             -done.
 346   1                      halVolSmthSet(halVolGet(), SMOOTH_CAUSE_VOLDOWN, VOL_SMTH_BEGIN-1);//Volume down
 347   1              else{
 348   2                      DriveFlush(TRUE);
 349   2                      FileSearch(&Mp3SearchInfo, &Mp3SReq);   
 350   2                      mp3status = MP3STATUS_WAKEUP;
 351   2                      DispSetStatus(DISP_SONGIDX_STATUS);
 352   2              }       
 353   1      
 354   1              return;
 355   1      }
 356          
 357          void _halKeyPlay()
 358          {
 359   1              DRIVE *drv = DriveGet();
 360   1              switch(mp3status)
 361   1              {
 362   2                      case MP3STATUS_IDLE:
C51 COMPILER V8.01   4010UI                                                                04/17/2008 09:54:45 PAGE 7   

 363   2                              //MUTE_HW();
 364   2                              //DelayMs(400);
 365   2                              //UartOutText("----MUTE_HW----\r\n");
 366   2                              //UartOutText("--P1--");UartOutValue(P1,2);
 367   2      //                      MP3_MUTE_ENABLE();      //modify by Ivor yan
 368   2      //                      DelayMs(10);
 369   2      
 370   2                              DriveFlush(TRUE);
 371   2                              FileSearch(&Mp3SearchInfo, &Mp3SReq);   
 372   2                      case MP3STATUS_WAKEUP:  
 373   2                              //DISABLE_INTERRUPTS;
 374   2                              //SysTicks = 0;
 375   2                              //while(SysTicks < 10);
 376   2                              //ENABLE_INTERRUPTS;
 377   2                              //DelayMs(1000);
 378   2                              //DISMUTE_HW();
 379   2                              //UartOutText("----DISMUTE_HW----\r\n");
 380   2                              
 381   2                              fd_mp3 = FileOpenMp3(drv, &Mp3SearchInfo);
 382   2                              if(fd_mp3 != NULL){
 383   3                                      halWRInfo1();
 384   3                                      DispReset();
 385   3                                      halMp3Play();//fd_mp3);
 386   3                                      mp3status = MP3STATUS_PLAY;
 387   3                                      DispSetStatus(DISP_SONGIDX_STATUS);
 388   3                              }
 389   2      
 390   2                              break;
 391   2                      case MP3STATUS_PAUSE:
 392   2                              MP3_PAUSE_DISABLE();
 393   2                              mp3status = MP3STATUS_PLAY;
 394   2                              DispSetStatus(DISP_NORMAL_STATUS);
 395   2                              break;
 396   2                      case MP3STATUS_PLAY:
 397   2      
 398   2                              if(DriveFlush(FALSE) != TRUE){//Cannot Pause at current time
 399   3                                      return; //This key event will not be killed. And should be tried again, or just ignore.
 400   3                              }
 401   2      
 402   2                              MP3_PAUSE_ENABLE();
 403   2                              mp3status = MP3STATUS_PAUSE;
 404   2                              DispSetStatus(DISP_NORMAL_STATUS);//Including pause status
 405   2                              break;
 406   2              }
 407   1      
 408   1              keystatus = KEY_STATUS_NOKEY;
 409   1              return; 
 410   1      }
 411          
 412          static void _halKeyDevChg(void)
 413          {
 414   1      
 415   1              DRIVE *drv = DriveGet();
 416   1      
 417   1              DriveFlush(TRUE);
 418   1              if(drv->DevID ==  SD_DISK){ //Current device is sd card
 419   2                      FSMState = FSMSTATE_USB;
 420   2              }else{  //Current device is usb
 421   2                      FSMState = FSMSTATE_SD;
 422   2              }
 423   1                              
 424   1              //keystatus = KEY_STATUS_NOKEY;
C51 COMPILER V8.01   4010UI                                                                04/17/2008 09:54:45 PAGE 8   

 425   1              bDEVFlag = DEVAttach[drv->DevID]; 
 426   1              UartOutText("-I-: _halKeyDevChg() \r\n");
 427   1              
 428   1              return;
 429   1      }
 430          
 431          void halKeyStop(void)
 432          {
 433   1              //Mp3Ctrl = 0x00; //disable mp3 dec
 434   1              MP3_DEC_DISABLE();
 435   1              
 436   1              DriveFlush(TRUE);
 437   1              mp3status = MP3STATUS_WAKEUP;
 438   1      
 439   1              //keystatus = KEY_STATUS_NOKEY;
 440   1      
 441   1              UartOutText("-I-: halKeyStop() \r\n");
 442   1      
 443   1              return;
 444   1      }
 445          
 446          //The functions in this table should not have parameters and return value for 8051 Platform.
 447          static void (*KeyHandleMap[KEY_STATUS_MAX])(void) = {
 448                  NULL,                           //Handler for KEY_STATUS_PLAYMODE
 449                  _halKeyDevChg,
 450                  _halKeyFMDown,
 451                  _halKeyVolUp,
 452                  _halKeyVolDown,
 453                  _halKeyEQ,
 454                  _halKeySeek,
 455                  _halKeySeek,
 456                  _halKeySeek,    
 457                  _halKeyPlay,
 458                  //_halKeyDevChg,
 459                  halKeyStop,
 460          };
 461          
 462          void halKeyHandle(BYTE bStat)
 463          {
 464   1      
 465   1              // If keystatus is KEY_STATUS_NOKEY, just return
 466   1              if(keystatus == KEY_STATUS_NOKEY){
 467   2      #if 1           
 468   2                      if(IsJumpFlag == TRUE){
 469   3                              //UartOutText("-I-jump is true\r\n");
 470   3                              if(SongLocateTick >= 6){
 471   4                                      UartOutText("-I-jump over\t");UartOutValue(JumpSong,2);
 472   4                                      if(JumpType == JUMP_FORWARD){
 473   5                                              if((Mp3SReq.swIdx + JumpSong) > Mp3SReq.swTotalCnt)
 474   5                                                      Mp3SReq.swJump = Mp3SReq.swIdx + JumpSong - Mp3SReq.swTotalCnt;
 475   5                                              else
 476   5                                                      Mp3SReq.swJump = Mp3SReq.swIdx + JumpSong;
 477   5                                      }else if(JumpType == JUMP_BACKWARD){
 478   5                                              if(Mp3SReq.swIdx == JumpSong)
 479   5                                                      Mp3SReq.swJump = Mp3SReq.swTotalCnt;
 480   5                                              else
 481   5                                                      Mp3SReq.swJump = Mp3SReq.swIdx - JumpSong;
 482   5                                      }
 483   4                                              
 484   4                                      keystatus = KEY_STATUS_JUMP;
 485   4                                      JumpType = JUMP_IDLE;
 486   4                                      SongLocateTick = 0;
C51 COMPILER V8.01   4010UI                                                                04/17/2008 09:54:45 PAGE 9   

 487   4                                      JumpSong = 0;
 488   4                                      IsJumpFlag = FALSE;
 489   4      
 490   4                                      //MP3_MUTE_ENABLE();    //modify by Ivor yan
 491   4      
 492   4                                      //MUTE_HW();
 493   4                                      //UartOutText("----MUTE_HW----\r\n");
 494   4                                      //SysTicks = 0;
 495   4                                      //while(SysTicks < 10);
 496   4                              }
 497   3                              
 498   3                              //IsJumpFlag = FALSE;
 499   3                      }
 500   2      #endif  
 501   2                      return;
 502   2              }
 503   1              
 504   1              if(bStat != FSMSTATE_INIT){
 505   2                      if(keystatus >= KEY_STATUS_WITHDEV){
 506   3                              keystatus = KEY_STATUS_NOKEY; //Cannot handle these keys without device
 507   3                              return;
 508   3                      }       
 509   2              }
 510   1              
 511   1              KeyHandleMap[keystatus](); 
 512   1              
 513   1              //if(1)//NOTE: In some cases the keystatus should no be cleared.
 514   1              //if(keystatus != KEY_STATUS_PLAYPAUSE)
 515   1                      keystatus = KEY_STATUS_NOKEY;
 516   1      
 517   1              //halWRInfo1();
 518   1              
 519   1              return;
 520   1      }
 521          


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    637    ----
   CONSTANT SIZE    =   ----    ----
   XDATA SIZE       =     48      10
   PDATA SIZE       =   ----    ----
   DATA SIZE        =      6       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 + -