?? main.c
字號:
#define DEBUG_MSG
#include "target.h"
extern bit bNeedSaveTone;
unsigned char idata ucSystemMode = TUNER_MODE;
//unsigned char ucSystemMode = TV_MODE;
//unsigned char ucSystemMode = TUNER_MODE;
void SaveKeyToBuff(unsigned char key);
unsigned char idata ucSystemModeOld ;
void FpDisplayVol(unsigned char vol)
{
vol=vol;
}
bit bPowerStatus = 1;
extern bit btaccswitch;
extern unsigned char idata AudioToneMode;
unsigned char code UserKeyList[] = {STOP_KEY,NUM2_KEY,NUM0_KEY,NUM0_KEY,NUM8_KEY};
unsigned char idata UserKeyIndex = 0;
/*
12mHZ 16
24mHZ 32
*/
void Delay100us(unsigned int ucdelay)
{
unsigned int i;
unsigned char j;
if(ucdelay ==0) return;
for(i=0;i<ucdelay;i++)
for(j=0;j<16;j++);
}
void System_Init()
{
TMOD=0x11;//GATE FOR TR0,when low start to count time
ACON = 0x80;
TH1=TIMERH;
TL1=TIMERL;
TR0 = 1;
RCAP2H=BAUDH;
RCAP2L=BAUDL;
SCON=0X70;
PCON=0X00;
T2CON=0X30; //RCLK=1 TCLK=1;
//
TI=0;
RI=0;
IT0=1;
IT1=1;
TR1=1;
TR2=1;
ET1=1;
EX0=0; //for infrared remote
EX1=1;// 2 infrared
EA=1;
}
void GoToSystemMode(unsigned char ucmode,unsigned char bDelays)
{
MuteOn();
HwMuteOn();
if(bDelays)
Delay100us(1000);
ucSystemMode = ucmode;
switch(ucmode){
case AV_MODE:
EX1 = 1;
AntCtrlOff();
SelectVideo(VIDEO_IN3);
SelectAudioIn(IN4_AUDIO);
MpegPowerOff();
break;
case DVD_MODE:
EX1 = 0;
AntCtrlOff();
SelectVideo(VIDEO_IN1);
SelectAudioIn(IN1_AUDIO);
MpegPowerOn();
return;
break;
case TV_MODE:
EX1 = 1;
AntCtrlOff();
MpegPowerOff();
SelectVideo(VIDEO_IN2);
SelectAudioIn(IN2_AUDIO);
break;
case TUNER_MODE:
default:
EX1 = 1;
AntCtrlOn();
MpegPowerOff();
ucSystemMode = TUNER_MODE;
SelectVideo(VIDEO_MUTE);
SelectAudioIn(IN3_AUDIO);
break;
}
SaveKeyToBuff(INIT_KEY);
SetBass(bass);
SetTreble(treble);
SetFader();
MuteOff();
}
extern bit btPowerKeyPressed;
void SystemPowerOff()
{
unsigned int i;
SelectVideo(VIDEO_MUTE);
AntCtrlOff();
MuteOn();
BackLightOff();
if(ucSystemMode==DVD_MODE){
MpegPowerOff();
// FPClearLcd();//andy
}
bPowerStatus = 0;
for(i=0;i<5000;i++);
HwMuteOn();
AmpMuteOn();
for(i=0;i<5000;i++);
PowerOff();
btPowerKeyPressed=0;
EX1 = 1;
// SetTimerFunc(0xffff,0);//andy
}
void SystemPowerOn()
{
unsigned int i;
HwMuteOn();
AmpMuteOn();
for(i=0;i<5000;i++);
PowerOn();
MuteOn();
for(i=0;i<5000;i++);
HwMuteOff();
AmpMuteOff();
bPowerStatus = 1;
BackLightOn();
GoToSystemMode(ucSystemMode,0);
SetTimerFunc(0xffff,0);//andy
}
void CheckUserKeyList(unsigned char key)
{
if(UserKeyIndex<5){
if(UserKeyList[UserKeyIndex]==key)
UserKeyIndex++;
else
UserKeyIndex = 0;
}
else{
switch(key){
case NUM0_KEY:
SaveKeyToBuff(VERSION_KEY);
break;
case NUM1_KEY:
SaveKeyToBuff(TEST_LCD_KEY);
break;
}
if(key==EJECT_KEY){
if(UserKeyIndex<9)
UserKeyIndex++;
else{
SaveKeyToBuff(DESIGNER_KEY);
UserKeyIndex = 0;
}
}
else
UserKeyIndex = 0;
}
}
void defDealKey(unsigned int uikey)
{
unsigned char m_BarType=0;
unsigned char m_SourceType=0;
unsigned char m_ScalerType=0;
char *m_Str;
switch(uikey)
{
case POWER_KEY:
SystemPowerOff();
break;
case ENTER_KEY:
switch(m_SourceType)
{
case 0: //CCIR601 8BIT
MX88V46X_SOURCE_Select(MXIC_CCIR601_8BIT);
MX88V46X_MODE_Select(MXIC_NTSC_MODE);
MX88V46X_Enable_Gamma();
MX88V46X_SCALING_Select(MXIC_SCALER_16_9);
m_Str="CCIR601 8BIT";
OSD_ShowText(m_Str,12,0x6E,0x05);
break;
case 1: //CCIR601 16BIT
MX88V46X_SOURCE_Select(MXIC_CCIR601_16BIT);
MX88V46X_MODE_Select(MXIC_NTSC_MODE);
MX88V46X_Enable_Gamma();
MX88V46X_SCALING_Select(MXIC_SCALER_16_9);
m_Str="CCIR601 16BIT";
OSD_ShowText(m_Str,13,0x6E,0x05);
break;
case 2: //CCIR656
MX88V46X_SOURCE_Select(MXIC_CCIR656);
MX88V46X_MODE_Select(MXIC_NTSC_MODE);
MX88V46X_Enable_Gamma();
MX88V46X_SCALING_Select(MXIC_SCALER_16_9);
m_Str="CCIR656";
OSD_ShowText(m_Str,7,0x6E,0x05);
break;
case 3: //RGB666
MX88V46X_SOURCE_Select(MXIC_RGB666);
MX88V46X_MODE_Select(MXIC_NTSC_MODE);
MX88V46X_Enable_Gamma();
MX88V46X_SCALING_Select(MXIC_SCALER_16_9);
m_Str="RGB666";
OSD_ShowText(m_Str,6,0x6E,0x05);
break;
case 4: //RGB565
MX88V46X_SOURCE_Select(MXIC_RGB565);
MX88V46X_MODE_Select(MXIC_NTSC_MODE);
MX88V46X_Enable_Gamma();
MX88V46X_SCALING_Select(MXIC_SCALER_16_9);
m_Str="RGB565";
OSD_ShowText(m_Str,6,0x6E,0x05);
break;
case 5: //CVBS1
MX88V46X_SOURCE_Select(MXIC_CVBS1);
MX88V46X_MODE_Select(MXIC_NTSC_MODE);
MX88V46X_Enable_Gamma();
MX88V46X_SCALING_Select(MXIC_SCALER_16_9);
m_Str="CVBS1";
OSD_ShowText(m_Str,5,0x6E,0x05);
break;
case 6: //SVIDEO
MX88V46X_SOURCE_Select(MXIC_SVIDEO1);
MX88V46X_MODE_Select(MXIC_NTSC_MODE);
MX88V46X_Enable_Gamma();
MX88V46X_SCALING_Select(MXIC_SCALER_16_9);
m_Str="S-VIDEO1";
OSD_ShowText(m_Str,8,0x6E,0x05);
break;
case 7:
MX88V46X_SOURCE_Select(MXIC_CVBS2);
MX88V46X_MODE_Select(MXIC_NTSC_MODE);
MX88V46X_Enable_Gamma();
MX88V46X_SCALING_Select(MXIC_SCALER_16_9);
m_Str="CVBS2";
OSD_ShowText(m_Str,5,0x6E,0x05);
}
break;
case MODE_KEY:
OSD_ShowSpecialChar(m_BarType,0xFF);
//UART_Printf("OK\r\n");
if(m_BarType++>=8) m_BarType=0;
break;
case UP_KEY:
OSD_ShowSpecialChar(m_BarType-1,ADJ_ADD_VAL);
break;
case DOWN_KEY:
OSD_ShowSpecialChar(m_BarType-1,ADJ_SUB_VAL);
break;
case MENU_KEY:
// OSD_GUI_MsgProc(WM_KEY_SHOW);
m_ScalerType=!m_ScalerType;
MX88V46X_SCALING_Select(m_ScalerType);
break;
}
#if 0
switch(uikey){
case VOL_UP_KEY:
if(bMuteOn){
PT2318MuteOff();
MuteOff();
}
if(volume<VOL_MAX){
volume++;
bNeedSaveTone = 1;
}
else
volume = VOL_MAX;
SetVolume(volume);
FpDisplayVol(volume);
SetTimerFunc(TIME_5SEC,REDRAW_KEY);
break;
case VOL_DOWN_KEY:
if(bMuteOn){
PT2318MuteOff();
MuteOff();
}
if(volume>0){
volume--;
bNeedSaveTone = 1;
}
else
volume = 0;
SetVolume(volume);
FpDisplayVol(volume);
SetTimerFunc(TIME_5SEC,REDRAW_KEY);
break;
case MUTE_KEY:
if(bMuteOn&&volume){
FpDisplayVol(volume);
PT2318MuteOff();
HwMuteOff();
}
else{
FpDisplayVol(0);
PT2318MuteOn();
HwMuteOn();
}
SetTimerFunc(TIME_5SEC,REDRAW_KEY);
break;
case MODE_KEY:
if(ucSystemMode!=TUNER_MODE){
ucSystemMode++;
if(ucSystemMode == TUNER_MODE) ucSystemMode = DVD_MODE;
GoToSystemMode(ucSystemMode,0);
ucSystemModeOld = ucSystemMode;
}
else{
if(ucSystemMode==ucSystemModeOld) ucSystemModeOld = DVD_MODE;
ucSystemMode = ucSystemModeOld;
GoToSystemMode(ucSystemMode,0);
}
break;
case POWER_KEY:
if(bPowerStatus)
SystemPowerOff();
else{
if(!btaccswitch)
SystemPowerOn();
}
break;
case TEST_LCD_KEY:
SetTimerFunc(TIME_5SEC,REDRAW_KEY);
break;
case BAND_KEY:
#ifdef NO_FMAM
if(ucSystemMode<TUNER_MODE){
ucSystemModeOld=ucSystemMode;
GoToSystemMode(TUNER_MODE,0);
}
#endif
break;
}
#endif
}
void AVFunc(int key,unsigned char *para)
{
para=para;
if(AudioToneMode){
AudioToneDealFunc(key);
return;
}
switch(key){
case POWER_KEY:
case VOL_UP_KEY:
case VOL_DOWN_KEY:
case MUTE_KEY:
case MODE_KEY:
case VERSION_KEY:
case TEST_LCD_KEY:
case BAND_KEY:
defDealKey(key);
break;
case TONE_KEY:
AudioToneDealFunc(key);
break;
case REDRAW_KEY:
if(bNeedSaveTone){
bNeedSaveTone = 0;
SaveTone();
}
break;
case INIT_KEY:
break;
}
}
void DVDFunc(int key,unsigned char *para)
{
// switch(key){
// case BAND_KEY:
// case MODE_KEY:
// defDealKey(key);
// break;
// }
para=para;
switch(key){
// case POWER_KEY:
// break;
}
}
unsigned char TranslateKey(unsigned char key)
{
if(AudioToneMode) return key;
if(ucSystemMode==TUNER_MODE){
switch(key){
case LEFT_KEY:
key = PS_KEY;
break;
case RIGHT_KEY:
key = AS_KEY;
break;
case STOP_KEY:
key = LOCAL_KEY;
break;
case PAUSE_KEY:
key = ST_KEY;
break;
}
}
return key;
}
#ifdef __AT24C02_TEST__
void Test24c02(unsigned int uikey);
#endif
void MainDealKey(unsigned int uikey)
{
switch(ucSystemMode){
case AV_MODE:
AVFunc(uikey,0);
break;
case TUNER_MODE:
defDealKey(uikey);
break;
case DVD_MODE:
DVDFunc(uikey,0);
break;
case TV_MODE:
// TVFunc(uikey,0);
break;
//safe code,should not run here.
default:
//GoToSystemMode(TUNER_MODE,0);
break;
}
}
void idle_ejectdisc()
{
}
void cheat()
{ OSD_Initial();
OSD_GUI_MsgProc(0);
OSD_ShowSpecialChar(0,0);
OSD_ShowText(0,0,0,0);
FpDisplayVol(0);
MXIC_OSDReg_Read(0,0,0,0);
TunerFunc(0,0);
}
unsigned int uiKey;
void SaveKeyToBuff(unsigned char key)
{
uiKey=key;
}
void main()
{
unsigned char keycount = 0;
unsigned char *m_Str;
if(keycount)
cheat();
System_Init();
// BackLightOff();
// EjectDiscOff();
ucSystemModeOld = ucSystemMode;
// PowerOn();
// SystemPowerOn();
// LoadTone();
m_Str="CVBS1";
MX88V46X_DEFAULT_Initial();
OSD_Initial();
OSD_ShowText(m_Str,5,0x6E,0x05);
while(1)
{ //unsigned char aa=0,bb=0;
MainTimeHandle();
//uiKey = GetKey();
MX88V46X_CVBS_AutoDetection();
// MXIC_WriteExternalReg(OSD_RW_CTRL,0x42);
/* if(!uiKey&&uiKey!=POWER_KEY){
FPClearLcd();
aa=uiKey&0x0f;
bb=uiKey&0xf0>>4;
}*/
//in power off status
if(bPowerStatus==0){
switch(uiKey){
case POWER_KEY:
if(!btaccswitch) SystemPowerOn();
break;
case EJECT_KEY:
idle_ejectdisc();
break;
}
}
//power on
else{
if(uiKey){
CheckUserKeyList(uiKey);
ShowLcdHex(0x00,uiKey);
ShowLcdHex(0x04,keycount++);
ShowLcdHex(0x06,ucSystemMode);
uiKey = TranslateKey(uiKey);
if(uiKey){
MainDealKey(uiKey);
uiKey=0;
}
}
if(ucSystemMode == DVD_MODE)
{
}
}
}
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -