📄 display.lst
字号:
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 + -