📄 dispdled.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 + -