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

📄 display.lst

📁 威望公司MP3 + USB MCU 的参考软件
💻 LST
📖 第 1 页 / 共 2 页
字号:
C51 COMPILER V8.01   DISPLAY                                                               04/17/2008 09:54:53 PAGE 1   


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

              extern BYTE code nAsciiDotCode[ASCIIDOT_BUF_SIZE];
              extern BYTE nAsciiDot[ASCIIDOT_BUF_SIZE];//65*5
              #ifdef ENABLE_PLAYMODE_KEY
              extern BYTE data bPMode;
              #endif
              
              /////////////////////////////////////////////
              SBYTE data sbPos;//96-8;
              
              static BYTE volatile data bgDispStatus;
              static BYTE data bgDispStatusChg;
              extern STREAM *fd_mp3;
              static BYTE DispStr[16];
              //static BYTE data bDigital[5];
              static BYTE bDigital[5];
              static BYTE data bDigIdx;
              
              #define DISP_DEVID_MAXLEN       2
              BYTE MemDev[2][DISP_DEVID_MAXLEN] = {
                      {'<', '>'},
                      {'?', '"'}      
              };
              
              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] = bRed;
                              bDigIdx++;
                      }while(wVa > 0);
              
                      return;
              }
              
              //This function will convert the decimal value into string. 123 -> "123"
              static BYTE *_DispDec2ASCII(BYTE *buf, WORD wVal)
              {
                      BYTE i;
                      BYTE *bPtr = buf;
                      
                      _DispHex2Dec(wVal);
                      for(i=0; i<bDigIdx; i++){
                              bPtr[i] = bDigital[i] + '0';
                      }
                      
                      return (bPtr+bDigIdx);
C51 COMPILER V8.01   DISPLAY                                                               04/17/2008 09:54:53 PAGE 3   

              }
              
              static BYTE _DispFMDec2ASCII()
              {
                      BYTE *bPtr = DispStr;
                      BYTE bTmp;
                      BYTE bCnt;
                      
                      bPtr = _DispDec2ASCII(bPtr, halFMGetFreq());    
                      bTmp = *(bPtr-1);
                      *(bPtr-1) = '.';
                      *bPtr = bTmp;bPtr++;
              
                      bCnt = bPtr -DispStr; //The number CHAR
              
                      return bCnt;
              }
              
              //extern BYTE EQString[EQ_VALUE_MAX+1][6];
              void DispInit(void) //This function should be done before any display operation
              {
                      //Init global variable
                      bgDispStatus = DISP_IDLE_STATUS;
                      bgDispGap = 0;
                      bgDispStatusChg = FALSE;
              
              #if 0
                      //Reset LCM
                      LCM_RST_OUT();
                      LCM_RST = 1;
                      DelayMs(200);
                      LCM_RST = 0;
                      DelayMs(200);   
                      DelayMs(200);
                      LCM_RST = 1;
                      DelayMs(200);   
              #endif
              
                      //Init AsciiDot ICON buffer
                      #ifdef DISP_WE2PROM_ENABLE
                      WriteE2PRom(nAsciiDotCode, (sizeof(nAsciiDotCode)>>E2PROM_PAGE_SIZEEXP), ASCIIDOT_PAGE_ADDR<<E2PROM_PAGE_
             -SIZEEXP);
                      #endif
                      //ReadE2PRom(nAsciiDot, ASCIIDOT_BUF_SIZE, ASCIIDOT_PAGE_ADDR<<E2PROM_PAGE_SIZEEXP);
                      Read_N_Bytes(nAsciiDot, ASCIIDOT_BUF_SIZE, ASCIIDOT_PAGE_ADDR<<E2PROM_PAGE_SIZEEXP);
                      //memcopy(nAsciiDot, nAsciiDotCode, sizeof(nAsciiDotCode));
              
                      //Init LCM
                      halLCMInit();   
              
              #if 0
                      //DispText(0, 0, " !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`", 65);
                      halLCMClear(0, 3);
                      halLCMWriteData(0, 0, " !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`", 32);
              
                      while(1){
                              UartOutText("Hello \r\n");
                              DelayMs(200);
                      };
              #endif
              
                      //Show start screen
C51 COMPILER V8.01   DISPLAY                                                               04/17/2008 09:54:53 PAGE 4   

              #ifdef ENABLE_START_SCREEN
                      memcopy(DBUF, MyCarDot, MYCAR_SIZE);
              while(1){
                      static BYTE bCol = 128;
                      
                      SysTicks = 0;
                      while(SysTicks < 2);
              
                      halLCMIcon(bCol, DBUF); 
                      bCol -= 6 ;
                      if(bCol == 0){
                              break;
                      }       
              }       
              #else
                      //halLCMWriteBig(0,"LOADING...",10);
                      halLCMWriteData(30, 1, "LOADING...", 18);
                      SysTicks = 0;
                      while(SysTicks < 20);
              #endif
              
                      return;
              }
              
              void DispSetStatus(BYTE bStatus)
              {
                      //if((bStatus == bgDispStatus) && (bStatus==DISP_NODEV_STATUS)){
                      //      return;
                      //}
              
                      bgDispStatus = bStatus;
                      bgDispStatusChg = TRUE; 
              
                      //if(bgDispStatus != DISP_NORMAL_STATUS){
                              bgDispGap = 0;
                      //}
              
                      return;
              }
              
              static void _halDispGapChk()
              {
                      BYTE bGap = DISP_VOLUMN_GAP;
              
                      if(bgDispStatus == DISP_NORMAL_STATUS){
                              bGap =  8;
                      }
                      
                      if(bgDispGap > bGap){
                              if(irjumptype == IRJUMP_TYPE_PICKSONG){
                                      halIRPickSong();
                              }else if(irjumptype == IRJUMP_TYPE_CHSET){
                                      halIRChSet();
                              }else{          
                                      DispSetStatus(DISP_NORMAL_STATUS);
                              }
              
                              halIRClrJump();
                              bgDispGap = 0;
                      }
              
                      return;
C51 COMPILER V8.01   DISPLAY                                                               04/17/2008 09:54:53 PAGE 5   

              }
              
              static void _halDispNoDev()
              {
                      BYTE bCnt;

⌨️ 快捷键说明

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