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

📄 dispdled.lst

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


C51 COMPILER V8.01, COMPILATION OF MODULE DISPDLED
OBJECT MODULE PLACED IN .\Debug\dispdled.obj
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE led\dispdled.c LARGE OPTIMIZE(9,SIZE) REGFILE(.\Debug\VA4010_SDK_V2.ORC) BR
                    -OWSE NOINTPROMOTE INCDIR(.\common;.\e2prom;.\file;.\fmtx;.\ir;.\keyboard;.\lcm;.\led;.\main;.\matrixkey;.\mp3ctrl;.\sd;.
                    -\usbhost;.\include;.\lib) DEBUG OBJECTEXTEND PRINT(.\Debug\dispdled.lst) OBJECT(.\Debug\dispdled.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:             dispdled.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          /*
  20          1. Display content:
  21          Song Index/Total counter, Long File Name,
  22          Volumn, FM Channel, EQ Setting, PlayMode, U-Disk/SD, Play/Pause
  23          
  24          2 Display Status(FSM)
  25          Normal_Status:
  26          Switch_Song_Status
  27          Set_Volumn_Status
  28          Set_FMCH_Status
  29          Set_EQ_Status
  30          Switch_USBSD_Status
  31          Set_PlayPause_Status
  32          
  33          Pick Songs/FMCH
  34          
  35          开机画面
  36          */
  37          #include "utiltypedef.h"
  38          #include "reg51.h"
  39          #include "va4010reg.h"
  40          #include "config.h"
  41          #include "common.h"
  42          #include "4010UI.h"
  43          #include "halfm.h"
  44          #include "hallcm.h"
  45          #include "display.h"
  46          #include "hali2c.h"
  47          #include "halmp3dec.h"
  48          #include "timer.h"
  49          #include "halvol.h"
  50          #include "halinfo.h"
  51          #include "common.h"
  52          #include "dispdled.h"
  53          
C51 COMPILER V8.01   DISPDLED                                                              04/17/2008 09:54:41 PAGE 2   

  54          #if (DIGITAL_SHOW == DIGITAL_SHOW_DLED )
              extern BYTE data bgDispGap;
              static BYTE data DispStatus;
              static BYTE data DispStatusChg;
              BYTE bDigital[4] = {LED_NONE, LED_NONE, LED_NONE, LED_NONE};
              static BYTE data bDigIdx =0;
              
              static BYTE DledDigMap[] = {
                      LED_0, LED_1, LED_2, LED_3, LED_4, LED_5, LED_6, LED_7, LED_8, LED_9
              }; //, DOT_LED, 1_EXT_LED};
              
              static void _DispHex2Dec(WORD wVal)
              {
              
                      BYTE data bRed;//, byStartX, byStartY;
                      WORD data wDiv;
                      WORD data  wVa;
                      
                      wDiv = wVal; //~DIGITAL_SHOW_MASK
                      bDigIdx = 0;
                      memclr(bDigital, sizeof(bDigital));
              
                      wVa = 1000;
                      do{
                              bRed = wDiv/wVa;
                              wDiv = wDiv%wVa;
                              wVa /= 10;
                              if((bDigIdx == 0) && (bRed == 0) && (wVa > 0)){
                                      continue;
                              }
                              
                              bDigital[bDigIdx] = DledDigMap[bRed]; //Map the Decimal into DLED show
                              bDigIdx++;
                      }while(wVa > 0);
              
                      return;
              }
              
              static void _halDispGapChk()
              {
                      BYTE bGap = DISP_VOLUMN_GAP;
              
                      if((bgDispGap>bGap)&&(DispStatus!=DISP_NORMAL_STATUS)){
                              if(irjumptype == IRJUMP_TYPE_PICKSONG){
                                      halIRPickSong();
                              }else if(irjumptype == IRJUMP_TYPE_CHSET){
                                      halIRChSet();
                              }else{          
                                      DispSetStatus(DISP_NORMAL_STATUS);
                              }
              
                              halIRClrJump();
                              bgDispGap = 0;
                      }
              
                      return;
              }
              
              static void _halDispIdx(void)
              {
                      _DispHex2Dec(Mp3SReq.swIdx);//NOTE: SWORD -> WORD??
              
C51 COMPILER V8.01   DISPDLED                                                              04/17/2008 09:54:41 PAGE 3   

                      return;
              }
              
              static void _halDispVol()
              {
                      _DispHex2Dec(halVolGet());
              
                      return;
              }
              
              static void _halDispFM()
              {
                      _DispHex2Dec(halFMGetFreq());
              
                      return;
              }
              
              static void _halDispJump()
              {
              #if (IRCTRL_MODE == IRCTRL_MODE_DIGCTRL)        
                      _DispHex2Dec(halIRGetJump());
              
              #endif
              
                      return;
              }
              
              static void _halDispSimp()
              {
                      UartOutText("-I-:_halDispSimp\r\n");
                              
                      if(DispStatus == DISP_EQ_STATUS){
                              bDigital[0] = LED_E;
                              bDigital[1] = DledDigMap[halEQGet()];
                              bDigIdx = 2;
                      }else{
                              bDigital[0] = LED_E;
                              bDigital[1] = LED_R;
                              bDigIdx = 2;
                      }
                              
                      return;
              }
              
              static void _halDispCtrlDig()
              {
              
              #if (IRCTRL_MODE == IRCTRL_MODE_CTRLDIG)        
                      WORD wTmp = halIRGetJump();
              
                      UartOutText("-I-:wTmp_high\t");UartOutValue((BYTE)(wTmp&0xff00), 2);
                      UartOutText("-I-:wTmp_low\t");UartOutValue((BYTE)(wTmp&0x00ff), 2);
                      
                      if(wTmp > 0){
                              _DispHex2Dec(wTmp);
                      }else{//wTmp == 0
                              bDigIdx = 0;
                      }
              #endif
              
                      return;
              }
C51 COMPILER V8.01   DISPDLED                                                              04/17/2008 09:54:41 PAGE 4   

              
              static void _halDispNoDev()
              {
                      //set FM or IDX when no device
                      _halDispFM();
                      //_halDispIdx();
              
                      return;
              }
              
              static void _halDispPause()
              {
                      UartOutText("-I-:_halDispPause\r\n");
              
                      _halDispFM();
                      //_halDispIdx();
                      
                      return;
              }
              static void _halDispNormal()
              {
              
                      UartOutText("-I-:_halDispNormal\r\n");
                      if(FSMState != FSMSTATE_INIT){ //No device
                              _halDispNoDev();//Show some thing song idx/fm freq.
                              return;
                      }
              
                      if(mp3status==MP3STATUS_PAUSE){ //Pause
                      
                              _halDispPause();
                              //_halDispIdx();
                              
                              return;
                      }
              
                      //Normal Play   //Display fm ch
                      _halDispFM();
              
                      bgDispGap = 0;
              
                      return;
              }
              
              //The functions in this table should not have parameters and return value for 8051 Platform.
              static void (*DispHdMap[DISP_MAX_STATUS])(void) = {
                      _halDispNormal, //Including NODEV, PAUSE, PLAY
                      _halDispIdx,
                      _halDispVol,
                      _halDispFM,
                      _halDispSimp, //EQ
                      _halDispJump,
                      _halDispSimp, //ERROR
                      _halDispCtrlDig,        
              };
              
              //Check if the display status is changed.
              BYTE _DispFMSCase(void)
              {
                      BYTE data bRet=FALSE;
              
                      _halDispGapChk();
C51 COMPILER V8.01   DISPDLED                                                              04/17/2008 09:54:41 PAGE 5   

              
                      if(DispStatusChg == TRUE){                                      
                              DispStatusChg = FALSE;
                              bRet=TRUE;
                      }
              
                      return bRet; //TRUE: Display, FALSE: No Display
              }
              #if 0
              static void _halModLED(BYTE Status){
                      /*
                      for justify digital LED 
                                      
                      */
                      //add DOT flag for display Freq.
                      if((Status == DISP_NORMAL_STATUS)||(Status == DISP_FMCH_STATUS))
                              ADD_DOT(bDigital[bDigIdx-2]);
                              
                      return;
              }
              #endif
              ////////////////////////////API for DLED Display Module///////////////////////////////
              void DispFSM(void)
              {
                      BYTE data bRet; 
              //      BYTE data i;
              //      WDT = 0X1F;
                      
                      bRet = _DispFMSCase();
                      if(!bRet)       //No display needed.
                              return;
                      
                      //UartOutText("-I-irjump\t");UartOutValue(halIRGetJump(), 2);
                              
                      DispHdMap[DispStatus](); 
              
              //      WDT = 0X1F;     
                      return;
              }
              
              //extern BYTE EQString[EQ_VALUE_MAX+1][6];
              void DispInit(void) //This function should be done before any display operation
              {
                      //Init global variable
                      DLED_DATA_DIROUT();
                      DLED_SEG_DIROUT();      
                      
                      DispStatus = DISP_NORMAL_STATUS;
                      bgDispGap = 0;
                      DispStatusChg = FALSE;
                      DispSetStatus(DispStatus);
                      return;
              }
              
              void DispSetStatus(BYTE bStatus)
              {
                      DispStatus = bStatus;
                      DispStatusChg = TRUE; 
              
                      bgDispGap = 0;
              
                      return;
C51 COMPILER V8.01   DISPDLED                                                              04/17/2008 09:54:41 PAGE 6   

              }
              
              void DispReset(void)
              {
                      //DispStatus = DISP_IDLE_STATUS;
                      //DispStatusChg = FALSE;
                      
                      return;
              }
              
              void halDLEDISR(void) //using 1
              {
                      static BYTE data SegIdx = 0;
                      
                      DLED_SEG_OFF();
                      
                      //_halModLED(DispStatus);       
                      if((DispStatus == DISP_NORMAL_STATUS)||(DispStatus == DISP_FMCH_STATUS))
                              ADD_DOT(bDigital[bDigIdx-2]);   
                      
                      if(bDigIdx == 0){
                              return;
                      }
                      
                      DLED_DATA(bDigital[SegIdx]);
                      //DLED_SEG_SEL(4-bDigIdx+SegIdx);//dig1~dig4 <-->p4,p5,p6,p7
                      DLED_SEG_SEL(bDigIdx-SegIdx-1);//dig1~dig4 <-->p7,p6,p5,p4
                      
                      SegIdx++;
                      if(SegIdx >= bDigIdx){
                              SegIdx = 0;
                      }
              
                      return;
              }
              
              #endif
 339          


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 + -