📄 main.c.bak
字号:
#include <string.h>
#define _MAIN_
#include "..\inc\public2.h"
#include "..\inc\OSD_Table.h"
extern code unsigned int Fp_Table[403];
extern BYTE RegB,RegC,RegE;
code BYTE MainMenuItem_TV[3][7] = { 0,1,2,3,18,0xFF,0xFF,
6,8,9,4,7,5,0xFF,
12,13,14,15,16,17,0xFF };
code BYTE MainMenuItem_AV[3][7] = { 0,1,2,3,18,0xFF,0xFF,
6,4,7,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF };
BYTE MainMenuItem[3][7];
code BYTE Source_Enable[16] ={1,1,0,0,0,0,0,0,0,0,0,0, 0,0,0,0};
BYTE Language_Enable[8]= {1,1,1,1,1,1,1,1} ;
BYTE Adj_Value[16]; // 0 Volume
// 1 Brightness
// 2 Contrast
// 3 Saturation
// 4 Sharpen
// 5 Hue
// 7 Language
// 8 Horizontal
// 9 Vertical
// 10 Source_type
// 11 Video_PP
// 12 Video_SYS
// 15 Channel
BYTE ColorEN = 0x1F; // PALN, PALM, PAL, NTSC
BYTE SoundEN = 0x1F; // 6.5M, 6.0M, 5.5M, 4.5M
BYTE Video_SYS;
BYTE Source_type,Brightness,Contrast,Saturation,Sharpen,Hue,Horizontal=0,Vertical=0;
xdata BYTE TV_Skip[16];
unsigned int Fp_Position;
BYTE Search_Flag=0;
BYTE SIF;
bit Skip;
BYTE Fine_Turn;
BYTE Video_type;
BYTE Menu_mode, Menu_item;
BYTE MenuFlag,TitleFlag,VolumeFlag,SleepFlag,PPFlag,SleepEnable;
bit MuteFlag = 0;
bit One_Flag = 0, Input_Num = 0;
BYTE CVD1_3A,CVD1_3C;
BYTE Subwin;
bit OnOff,Auto_Start=0;
BYTE C_Input = 0;
void HV_Change();
void Factory_Mode();
void Save_Factory();
void Load_Factory();
void Factory_Menu_Init();
void Factory_Menu_HL();
void Factory_Menu_Menu();
void Factory_Menu_1();
void Factory_Key_Check();
void Factory_Clear_All();
void ColorSystem_Check();
void ColorSystem_Up();
void ColorSystem_Down();
void SoundSystem_Check();
void SoundSystem_Up();
void SoundSystem_Down();
void Show_VideoMode();
void Show_CInput();
void Show_MainMenu_Init();
void Show_MainMenu_HL();
void Show_MainMenu1();
void Show_MainMenu2();
void Show_Volume(BYTE);
void Show_Mute();
void Show_Bar(BYTE *, BYTE);
void Show_TV_Bar(BYTE *, unsigned long int);
void Show_HV(void);
void Screen_Blue();
void Save_Channel();
void Save_Channel_Info();
void Save_Channel_Skip();
void Save_Channel_Default();
void Load_Channel();
void Show_Channel();
void Show_Number(BYTE,BYTE*);
void Auto_Detect_TV_in(void); // -------
void Key_Check(void);
void Save_Parameter(void);
void Load_Parameter(void);
void Set_SourceType(void);
void Set_HV(void);
void MCU_Init();
void Power_On();
void Power_Off();
void To_Idle_Mode();
void Idle_Mode();
void Search_TV();
bit Get_Channel_Skip();
void Set_Channel_Skip();
void Channel_Up();
void Channel_Down();
void Language_Down();
void Language_Up();
void Language_Check();
void Mute();
void SpkOut();
void Show_CInput_A();
void Show_OneTwo();
void Menu_Up();
void Menu_Down();
void Menu_Show(BYTE, BYTE *);
BYTE idata buf[66];
bit Factory_Flag = 0, Fac_Clr = 0;
void Delay(unsigned int value)
{
while(value>0)
value--;
}
void main(void)
{
PanelOFF;
MCU_Init(); // MCU init
Mute();
/*
if ( (P0&0x7F) == (MENU & UP) )
{
OnOff = 1; // On Off flag
// LED_G = 0;
LED_R = 1;
Load_Factory();
V46X_Init();
// AUDIO_STBY = AUDIO_MUTE = 0;
Factory_Mode();
}
*/
Load_Parameter();
if ( 1 ) //Power_OnOff == 1 )
{
Power_On();
Auto_Detect_TV_in();
PanelON;
}
else
Power_Off();
while(1)
{
Delay(1000);
if ( OnOff )
{
//***************************************
//--- Process the UART service -----
//***************************************
UART_ParseFun(); // Jump into UART_ParseFun() function
// buf[0] = Key_Input>>4;
// buf[1] = Key_Input&0xF;
// Write_OSDCode(buf, 2, 1, 0);
ScreenON;
if ( OSDTimer == 0 )
{
if ( (Source_type == TV_CHL) && Input_Num )
{
Channel = C_Input;
Show_Channel();
Show_VideoMode();
Save_Parameter();
}
else
To_Idle_Mode();
}
if ( (Source_type <= YCbCr) && (!Search_Flag) )
{
Auto_Detect_TV_in();
}
if ( MuteFlag || Search_Flag != 0 )
Mute();
else
{
if ( V46X_If_Signal_In() )
SpkOut();
else
Mute();
}
if ( V46X_Get_ColorSystem() == NTSC && V46X_If_Signal_In() )
{
if ( Source_type == TV_CHL )
Adj_Hue(Hue);
else
Adj_Hue(Hue);
}
else
Adj_Hue(25);
Search_TV();
}
else
Mute();
Key_Check();
}
}
/**--------------------------------------------------------------------------
* Name void Auto_Detect_TV_in()
*
* Description
*
* Flow Chart
*
* Return
*
* DATE Author Description
* ===========================================================================
* 2005-09-21 Microntek Write
*/
void Auto_Detect_TV_in(void)
{
if ( Source_type > YCbCr)
return;
if ( Source_type == TV_CHL)
{
V46X_Detect_ScanLines();
// if ( Video_SYS != V46X_Get_ColorSystem() )
// V46X_ColorSystem(Video_SYS);
}
else
{
V46X_Detect_ColorSystem_AV();
}
return;
}
void Key_Check(void)
{
if (KeyFlag && Key == ONOFF)
{
KeyFlag = 0;
if ( OnOff )
{
Power_OnOff = 0;
Save_Parameter();
Power_Off();
}
else
{
Power_OnOff = 1;
Save_Parameter();
Power_On();
Auto_Detect_TV_in();
// Delay(20000);
Delay(20000);
PanelON;
}
}
if (OnOff && KeyFlag)
{
if ( (Key == ENTER) )
{
Idle_Mode();
KeyFlag = 0;
for (;;)
{
if (Source_type >= RGB666)
Source_type = VIDEO1;
else
Source_type++;
if (Source_Enable[Source_type] == 1)
break;
}
S_Source_type = Source_type;
Set_SourceType();
Save_Parameter();
}
switch (Key)
{
case MENU :
KeyFlag = 0;
if ( Menu_mode == 0 )
{
if ( V46X_Get_ColorSystem() == NTSC )
MainMenuItem[0][4] = 18;
else
MainMenuItem[0][4] = 0xFF;
}
if ( Menu_mode == 3 )
To_Idle_Mode();
else
{
Menu_mode ++;
if ( MainMenuItem[Menu_mode-1][0] == 0xFF )
To_Idle_Mode();
else
{
Menu_item = 0;
Show_MainMenu_Init();
}
}
break;
case MUTE :
KeyFlag = 0;
MuteFlag = !MuteFlag;
if ( MuteFlag )
;//AUDIO_MUTE = 1;
else
;//AUDIO_MUTE = 0;
Show_Volume(Volume);
break;
case CALL :
KeyFlag = 0;
if ( Source_type != TV_CHL )
break;
if ( Search_Flag == 0 )
{
Menu_mode = 3;
Menu_item = 5;
Fine_Turn = 0x80;
Search_Flag = 5;
Fp_Position = Fp_VL_Start;
Channel = 0;
Show_MainMenu_Init();
break;
}
else
{
Channel = 0;
Show_Channel();
Idle_Mode();
Show_VideoMode();
break;
}
case N_SW :
KeyFlag = 0;
if ( Source_type != TV_CHL )
break;
One_Flag = !One_Flag;
C_Input = 0;
Input_Num = 0;
Show_OneTwo();
break;
case N_0 :
case N_1 :
case N_2 :
case N_3 :
case N_4 :
case N_5 :
case N_6 :
case N_7 :
case N_8 :
case N_9 :
KeyFlag = 0;
if ( Source_type != TV_CHL )
break;
if (!One_Flag)
{
C_Input = IR_NUM;
Show_CInput();
Delay(20000);
Channel = C_Input;
C_Input = 0;
Show_Channel();
Show_VideoMode();
Save_Parameter();
}
else
{
if (!Input_Num)
{
Input_Num = 1;
C_Input = IR_NUM;
Show_CInput_A();
}
else
{
Input_Num = 0;
C_Input = C_Input*10 + IR_NUM;
Show_CInput_A();
Delay(20000);
Channel = C_Input;
C_Input = 0;
Show_Channel();
Show_VideoMode();
Save_Parameter();
}
}
break;
}
}
if ( OnOff && Key )
{
if (KeyFlag == 1 || KeyTimer > 60 )
{
if ( KeyFlag )
KeyFlag = 0;
else
KeyTimer = 45;
switch ( Key )
{
case DOWN:
if ( Menu_mode != 0 )
{
OSDTimer = 1000;
while(1)
{
if ( Menu_item <6 )
Menu_item++;
else
Menu_item = 0;
if (MainMenuItem[Menu_mode-1][Menu_item] != 0xFF)
break;
}
Show_MainMenu2();
Show_MainMenu_HL();
}
else if ( Source_type == TV_CHL )
{
OSDTimer = 1000;
Channel_Down();
Save_Parameter();
}
Search_Flag = 0;
break;
case UP:
if ( Menu_mode != 0 )
{
OSDTimer = 1000;
while(1)
{
if ( Menu_item == 0 )
Menu_item = 6;
else
Menu_item--;
if (MainMenuItem[Menu_mode-1][Menu_item] != 0xFF)
break;
}
Show_MainMenu2();
Show_MainMenu_HL();
}
else if ( Source_type == TV_CHL )
{
OSDTimer = 1000;
Channel_Up();
Save_Parameter();
}
Search_Flag = 0;
break;
case LEFT:
if ( Menu_mode != 0 )
{
OSDTimer = 1000;
Menu_Down();
}
else
{
if ( Volume > 0 )
{
Volume --;
}
MuteFlag = 0;
Show_Volume(Volume);
Save_Parameter();
}
break;
case RIGHT:
if ( Menu_mode != 0 )
{
OSDTimer = 1000;
Menu_Up();
}
else
{
if ( Volume < 50 )
{
Volume ++;
}
MuteFlag = 0;
Show_Volume(Volume);
Save_Parameter();
}
break;
}
}
}
}
void Set_SourceType()
{
ScreenOFF;
Mute();
Show_Subwin(0x00);
if ( Source_type == TV_CHL )
memcpy(MainMenuItem,MainMenuItem_TV,21);
else
memcpy(MainMenuItem,MainMenuItem_AV,21);
if (Source_type == TV_CHL)
{
Delay(20000);
TV_Init();
Show_Channel();
AUDIO_CHANEL1 = 0;
AUDIO_CHANEL2 = 1;
}
else
{
AUDIO_CHANEL1 = 0;
AUDIO_CHANEL2 = 0;
}
Horizontal = S_Horizontal;
Vertical = S_Vertical;
V46X_VideoSource(Source_type);
Auto_Detect_TV_in();
Auto_Detect_TV_in();
Auto_Detect_TV_in();
if ( Source_type == TV_CHL)
Screen_Blue();
else
CVD1_ReadWrite(W_TYPE, 0x07, 0x20);
Set_VideoPP(0);
Show_VideoMode();
}
void Show_MainMenu_Init()
{
BYTE i,j;
TitleFlag = 0;
VolumeFlag = 0;
MenuFlag = 1;
Input_Num = 0;
Show_Subwin(0x00);
Clr_OSDCode();
OSDTimer = 1000;
OSD_SubWin_Attr(0,13,4,11,6,0);
OSD_SubWin_Attr(1,25,4,6,6,66);
OSD_SubWin_Attr(2,11,11,19,1,102);
for (i=0; i<6; i++)
{
if ( MainMenuItem[Menu_mode-1][i] == 0xFF )
for (j=0;j<11;j++ ) buf[i*11+j] = 0x59;
else
memcpy(&buf[i*11],OSD_Table_Main[Language][MainMenuItem[Menu_mode-1][i]],11);
}
Write_OSDCode(buf,11,6,0); //Write OSD Code buffer
Show_MainMenu1();
Show_MainMenu2();
Show_MainMenu_HL();
Show_Subwin(0x07);
// Show_HV();
}
void Show_MainMenu_HL()
{
BYTE hl;
hl = Menu_item;
/*
if ( Vertical )
hl = 5 - Menu_item;
*/
OSD_Attribute(0, 102, FG_COLOR, BG_COLOR);
OSD_Attribute(hl*11, 11, FG_COLOR_H, BG_COLOR);
OSD_Attribute(66+hl*6, 6, FG_COLOR_H, BG_COLOR);
OSD_Attribute(102, 19, FG_COLOR_H, BG_COLOR);
}
void Show_MainMenu1()
{
BYTE i;
for (i=0; i<36; i++)
buf[i] = 0x59;
for (i=0; i<6; i++)
Menu_Show(MainMenuItem[Menu_mode-1][i],&buf[i*6]);
Write_OSDCode(buf, 6, 6, 66); //Write OSD Code buffer
}
void Show_MainMenu2()
{
BYTE i;
if ( Menu_mode == 1 )
{
if ( Menu_item <= 3)
Show_Bar(buf,Adj_Value[Menu_item+1]);
else if ( Menu_item == 4)
Show_Bar(buf,S_Hue);
}
else if ( Menu_mode == 3 )
{
Show_TV_Bar(buf,Fp_Position);
}
else
for (i=0; i<19; i++ ) buf[i] = 0x59;
Write_OSDCode(buf, 19, 1, 102); //Write OSD Code buffer
}
void Show_Mute()
{
if (MuteFlag)
{
Show_Subwin(0x00);
if ( Screen_mode )
OSD_SubWin_Attr(7,7,1,1,1,0);
else
OSD_SubWin_Attr(7,3,1,1,1,0);
buf[0] = 0x51;
Write_OSDCode(buf, 1, 1, 0); //Write OSD Code buffer
OSD_Attribute(0, 1, 0x0C, BG_COLOR); //Set Title line attribute
Show_Subwin(0x80);
}
}
void Show_Volume(BYTE volume)
{
BYTE i,color;
if ( VolumeFlag == 0 )
{
TitleFlag = 0;
VolumeFlag = 1;
MenuFlag = 0;
Input_Num = 0;
Show_Subwin(0x00);
}
OSDTimer = 1000;
if ( MuteFlag )
color = 0x0C;
else
color = FG_COLOR;
OSD_SubWin_Attr(1,11,10,19,2,0);
OSD_Attribute(0, 19, color, BG_COLOR); //Set Title line attribute
OSD_Attribute(19, 38, FG_COLOR_H, BG_COLOR);
for (i=0; i<38; i++ ) buf[i] = 0x59;
if ( MuteFlag)
memcpy(&buf[1],OSD_Table_Mute[Language],13);
else
memcpy(&buf[1],OSD_Table_Volume[Language],13);
buf[16] = volume/10;
buf[17] = volume%10;
Show_Bar(&buf[19],volume);
Write_OSDCode(buf, 19, 2, 0); //Write OSD Code buffer
Show_Subwin(0x02);
}
void HV_Change()
{
if ( Horizontal )
Vertical = !Vertical;
Horizontal = !Horizontal;
S_Horizontal = Horizontal;
S_Vertical = Vertical;
Set_HV();
}
void Show_Number(BYTE num, BYTE *buf)
{
buf[1] = buf[2] = 0x59;
if (num >= 100)
{
buf[0] = num/100;
buf[1] = num%100/10;
buf[2] = num%10;
}
else if ( num >= 10)
{
buf[0] = num/10;
buf[1] = num%10;
}
else
buf[0] = num;
}
void Show_CInput()
{
TitleFlag = 1;
VolumeFlag = 0;
MenuFlag = 0;
Show_Subwin(0x00);
OSDTimer = 200;
if ( Screen_mode )
OSD_SubWin_Attr(7,7,1,2,1,0);
else
OSD_SubWin_Attr(7,3,1,2,1,0);
buf[0] = C_Input;
buf[1] = 0x59;
Write_OSDCode(buf, 2, 1, 0); //Write OSD Code buffer
OSD_Attribute(0, 2, FG_COLOR, BG_COLOR); //Set Title line attribute
Show_Subwin(0x80);
}
void Show_CInput_A()
{
TitleFlag = 1;
VolumeFlag = 0;
MenuFlag = 0;
Show_Subwin(0x00);
OSDTimer = 200;
if ( Screen_mode )
OSD_SubWin_Attr(7,7,1,2,1,0);
else
OSD_SubWin_Attr(7,3,1,2,1,0);
if (!Input_Num)
{
buf[0] = C_Input/10;
buf[1] = C_Input%10;
}
else
{
buf[0] = C_Input;
buf[1] = 0x54;
}
Write_OSDCode(buf, 2, 1, 0); //Write OSD Code buffer
OSD_Attribute(0, 2, FG_COLOR, BG_COLOR); //Set Title line attribute
Show_Subwin(0x80);
}
void Show_OneTwo()
{
TitleFlag = 1;
VolumeFlag = 0;
MenuFlag = 0;
Show_Subwin(0x00);
OSDTimer = 200;
if ( Screen_mode )
OSD_SubWin_Attr(7,7,1,2,1,0);
else
OSD_SubWin_Attr(7,3,1,2,1,0);
if (One_Flag)
{
buf[0] = 0x54;
buf[1] = 0x54;
}
else
{
buf[0] = 0x54;
buf[1] = 0x59;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -