📄 saa7114.c
字号:
/*==========================================
==========================================*/
#include "include.h"
/*==========================================
==========================================*/
void Init5150(void)
{
code unsigned char Tabl5150a[]={0x0f,0x08,0x0b,0x00,0x0a,0x80,0x0c,0x80};//,0x07,0x60,0x0d,0x47,0x30,0x01};
code unsigned char Tabl5150[]={0x00,0x00,0x02,0x00,0x03,0x0f,0x04,0x1c,0x07,0x00,0x08,0x00,0x09,0x80};//0x0f,0x0c,0x0b,0x7f};//0x0a,0x80,
unsigned char i, Data,Addr;
for (i=0; i< 8;i++)
{
Addr=Tabl5150[i];
Data=Tabl5150[i+1];
WriteIIC_Video(Addr,Data);
CLRWDT = 0x55;
}
for (i =0;i <4; i++)
{
Addr=Tabl5150a[i];
Data=Tabl5150a[i+1];
WriteIIC_Video(Addr,Data);
CLRWDT = 0x55;
}
}
void TPV5147Init(void)
{
I_OVideoPowerOn;
Sleep(20);
I_OVideoResetLow;
Sleep(20);
I_OVideoResetHigh;
Sleep(20);
ForceToBackground(0,0,0);
Init5150();
FuncBuf[pBRIGHTNESS] = 50; //set scaler
SetBrightness();
WriteIIC563(0x061,0x0d);
WriteIIC563(0x063,0x80);
WriteIIC563(0x061,0x0e);
WriteIIC563(0x063,0x80);
WriteIIC563(0x061,0x0f);
WriteIIC563(0x063,0x80);
VideoTimer = VIDEO_SEARCH_TIME;
VideoFlag = 0xff;
BlueScreen = 0;
VideoOK=0;
}
//*******************************************************
//
//*******************************************************
void CheckVideoNTSC(void)
{
if(1)
{
FastMuteEnable = 0; //y50909 test kevin 0x16e issue
if(FLG_Change_SyncMode)
{
ForceToBackground(0,0,0);
VideoTimer = VIDEO_SEARCH_TIME;
//WriteIIC563(0x191,0x04); //Y040106 for video picture be by pass issue
WriteIIC563(0x191,0x0c); // 070627 Eason
BlueScreen = 0;
NoSyncFlag=0;
VideoOK = 0;
ForceToBack=0;
OutOfRange = OverRangeMuteScreen; //y50312
MessageShow = 0;
FLG_Change_SyncMode=0;
}
if(VideoTimer < 100 && !VideoOK && !BlueScreen){
//#if TEST_MESSAGE3
// printf(" Video ON \n");
//#endif
VideoTimer=0;
BurnInMode=0;
MessageShow=0;
VideoOK = 1;
OutOfRange = Within_range; //for let turn off osd kevin added y50312
FLG_Change_SyncMode=0;
// if(Is_SX_Series) //neo 070725
// Is_SearchVideoSystem=0; //fixed in found this mode
// else
// Is_SearchVideoSystem=1;
// FuncBuf[pBRIGHTNESS] = Read24C16(ep_Video_Brightness);
// LoadContrasData();
// FuncBuf[pSATURATION] = Read24C16(ep_Video_Saturation);
// FuncBuf[pSHARPNESS] = Read24C16(ep_Video_Shapness);
// FuncBuf[pTINT] = Read24C16(ep_Video_Tint);
// LED_GrnOn();
// LED_RedOff();
// SetVideoContrast();
// SetContrast();
// SetVideoBrightness();
// SetVideoSharpness();
// SetScalerColorSpace();
SetScalerAVNTSC();
// Force background to black if we use white srceen on mode changing // Jude 2007/05/08
WriteIIC563(0x16b,0);
WriteIIC563(0x16c,0);
WriteIIC563(0x16d,0);
// Add by Eason 070505
// Write24C16(ep_Sync_Source,FuncBuf[pVIDEOSOURCE]); //add by Eason 070501
VideoSourcePtr=FuncBuf[pVIDEOSOURCE];
// if(FactMode){
// SetInFacOSDMode();
// }
//#if TEST_MESSAGE3
// printf("9__ep_Sync_Source=%d\n",FuncBuf[pVIDEOSOURCE]);
//#endif
}
/*
if(VideoTimer == 0 && !BlueScreen &&!VideoOK )
{
if(!MessageShow)
{
ForceToBackground(0,0,0);
if(Is_SwitchSourceByMaunual){
PanelPowerUpSequence();
c_BlinkTimer=0; //for display msg
bit_sourcee_nosignal=0;
Is_EnableShowMsg=1;
Is_ShowNoSyncMsg=1;
bit_sourcee_nosignal=1;
OutOfRange = OverRangeMuteScreen;
MessageShow = 1;
NoSyncFlag=1; //for enter power saving
PowerTimer = POWER_TIME-200;
if(!Is_SX_Series)
{
Osd_Off();
WriteIIC563(0x159,0x00);
ShowSource();
Osd_On(0);
}
}
else{
ShowMessage(MSG_NOSYNC);
// PanelPowerUpSequence();
Osd_Off();
// PanelPowerDownSequence(1);
MessageShow = 1;
}
}
BlueScreen = 1;
if(!Is_SX_Series && IsAutoDetectionMode){
MessageShow = 0;
PowerTimer = POWER_TIME-200;
// FuncBuf[pVIDEOSOURCE]=0;
FuncBuf[pVIDEOSOURCE]=SourceVGA;
ChangeMode = 1;
SetSource();
}
}*/
}
}
void CheckVideoPAL(void)
{
// Byte LockStatus;
if(1)
{
FastMuteEnable = 0; //y50909 test kevin 0x16e issue
if(FLG_Change_SyncMode)
{
ForceToBackground(0,0,0);
VideoTimer = VIDEO_SEARCH_TIME;
//WriteIIC563(0x191,0x04); //Y040106 for video picture be by pass issue
WriteIIC563(0x191,0x0c); // 070627 Eason
BlueScreen = 0;
NoSyncFlag=0;
VideoOK = 0;
ForceToBack=0;
OutOfRange = OverRangeMuteScreen; //y50312
MessageShow = 0;
FLG_Change_SyncMode=0;
}
if(VideoTimer < 100 && !VideoOK && !BlueScreen){
//#if TEST_MESSAGE3
// printf(" Video ON \n");
//#endif
VideoTimer=0;
BurnInMode=0;
MessageShow=0;
VideoOK = 1;
OutOfRange = Within_range; //for let turn off osd kevin added y50312
FLG_Change_SyncMode=0;
// if(Is_SX_Series) //neo 070725
// Is_SearchVideoSystem=0; //fixed in found this mode
// else
// Is_SearchVideoSystem=1;
// FuncBuf[pBRIGHTNESS] = Read24C16(ep_Video_Brightness);
// LoadContrasData();
// FuncBuf[pSATURATION] = Read24C16(ep_Video_Saturation);
// FuncBuf[pSHARPNESS] = Read24C16(ep_Video_Shapness);
// FuncBuf[pTINT] = Read24C16(ep_Video_Tint);
// LED_GrnOn();
// LED_RedOff();
// SetVideoContrast();
// SetContrast();
// SetVideoBrightness();
// SetVideoSharpness();
// SetScalerColorSpace();
SetScalerAVPAL();
// Force background to black if we use white srceen on mode changing // Jude 2007/05/08
WriteIIC563(0x16b,0);
WriteIIC563(0x16c,0);
WriteIIC563(0x16d,0);
// Add by Eason 070505
// Write24C16(ep_Sync_Source,FuncBuf[pVIDEOSOURCE]); //add by Eason 070501
// VideoSourcePtr=FuncBuf[pVIDEOSOURCE];
// if(FactMode){
// SetInFacOSDMode();
// }
//#if TEST_MESSAGE3
// printf("9__ep_Sync_Source=%d\n",FuncBuf[pVIDEOSOURCE]);
//#endif
}
/*
if(VideoTimer == 0 && !BlueScreen &&!VideoOK )
{
if(!MessageShow)
{
ForceToBackground(0,0,0);
if(Is_SwitchSourceByMaunual){
PanelPowerUpSequence();
c_BlinkTimer=0; //for display msg
bit_sourcee_nosignal=0;
Is_EnableShowMsg=1;
Is_ShowNoSyncMsg=1;
bit_sourcee_nosignal=1;
OutOfRange = OverRangeMuteScreen;
MessageShow = 1;
NoSyncFlag=1; //for enter power saving
PowerTimer = POWER_TIME-200;
if(!Is_SX_Series)
{
Osd_Off();
WriteIIC563(0x159,0x00);
ShowSource();
Osd_On(0);
}
}
else{
ShowMessage(MSG_NOSYNC);
// PanelPowerUpSequence();
Osd_Off();
// PanelPowerDownSequence(1);
MessageShow = 1;
}
}
BlueScreen = 1;
if(!Is_SX_Series && IsAutoDetectionMode){
MessageShow = 0;
PowerTimer = POWER_TIME-200;
// FuncBuf[pVIDEOSOURCE]=0;
FuncBuf[pVIDEOSOURCE]=SourceVGA;
ChangeMode = 1;
SetSource();
}
}*/
}
}
//*******************************************************
//
//*******************************************************
#if 0
void CheckColorSystem(void)
{
VideoStandard = ReadIIC_Video(0x28)&TPV5147_0x3F_Mask;
VideoFlag = ReadIIC_Video(0x1d)&TPV5147_0x3A_Mask;
if(!ColorSubcarrierLocked ||!Video_HsyncLocked){
Sleep(100);
}
VideoStandard = ReadIIC_Video(0x28)&TPV5147_0x3F_Mask;
VideoFlag = ReadIIC_Video(0x1d)&TPV5147_0x3A_Mask;
#if PRINT_MESSAGE
printf(" In CheckColorSystem VideoFlag(0x3a) = %0x VideoStandard(0x3f) = %x \n",(Word)VideoFlag,(Word)VideoStandard);
#endif
CLRWDT=0x55;
if(!(VideoStandard&0x07))
TvMode=0; //default for VideoStandard=0 error
else
TvMode=(VideoStandard&0x07)-1;
}
#endif
void SetVideoSaturation(void)
{
#if 0
Byte value;
value = FuncBuf[pSATURATION];
WriteIIC_Video(0x0a,value);
#endif
}
void SetVideoTint(void)
{
#if 0
Byte value;
// value = ((signed char)(FuncBuf[pTINT] -50)) * 255/ 100; //50% = 0
value=FuncBuf[pTINT]+0x7f;
// if(FuncBuf[pTINT]>0x7f)
// value^=0xff;
WriteIIC_Video(0x0b,value);
#endif
}
void SetVideoSharpness(void)
{
#if 0
Word code H_Sharp[]={
0x1f,0x1e,0x1d,0x1c,0x1b,0x1a,0x19,0x18,
0x17,0x16,0x15,0x14,0x13,0x12,0x11,0x10,
0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07,
0x08,0x09,0x0a,0x0b,0x0c,0x0d,0x0e,0x0f,
};
WriteIIC563(0x060,H_Sharp[FuncBuf[pSHARPNESS]]);
WriteIIC563(0x066,FuncBuf[pSHARPNESS]/4);
#endif
}
//***********************************************
//
//***********************************************
//***********************************************
//
//***********************************************
#if 0
Bit IsVideoSyncPresent(void)
{
return ReadIIC_Video(0x3b)&0x80; //sync present?
}
#endif
//*********************************************************************
//
//*********************************************************************
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -