📄 tuner.lst
字号:
dPuts("\r\n__(SetTVFreq)");
#endif
}
//BYTE GetTVChannel(void)
//{
// return TVChannel;
//}
//---------------------------------------------------------------------------
//Auto Fine Tune
// if (FINE == 0) {
// +/-1.5Mhz : Data +/-24, : AutoScan
C51 COMPILER V7.50 TUNER 04/01/2008 15:02:43 PAGE 5
// +/-2.0Mhz : Data +/-32 : ManualScan
// Data 1: 62.25Khz
// }
/*#ifdef PAL_TV
// Read Tuner ADC Data
BYTE ReadTuner(void)
{
BYTE Val;
I2CStart();
I2CWriteData(TVTunerI2CAddress & 0xFE);
I2CStart();
I2CWriteData(TVTunerI2CAddress | 0x01);
Val = I2CReadData();
I2CStop();
Printf("\rTuner ADC:0x%02x",(WORD)Val);
return Val;
}
BYTE AFT( WORD TVFreqDiv )
{
BYTE amount = 8, Check_Cnt=8, val;
//FreqDiv = FreqDiv & ( ~SKIPCHN_MASK );
if( IsNoInput() ) return FALSE; // ???
SetTVFreq(TVFreqDiv);
delay(30);
val = ReadTuner();
if(((val & 0x07) < 0x03 ) && ((val & 0x07) > 0x01 ))
goto true_aft;
if( (val & 0x07) == 4 ) {
TVFreqDiv -= 12;
SetTVFreq(TVFreqDiv);
delay(30);
val = ReadTuner();
if ( (val & 0x07) == 4 ) {
TVFreqDiv += 24;
SetTVFreq(TVFreqDiv);
delay(30);
val = ReadTuner();
if ( (val & 0x07) == 4 ) {
TVFreqDiv -= 36;
SetTVFreq(TVFreqDiv);
delay(30);
val = ReadTuner();
if ( (val & 0x07) == 4 ) {
TVFreqDiv += 48;
SetTVFreq(TVFreqDiv);
delay(30);
val = ReadTuner();
if ( (val & 0x07) == 4 ) goto fail_aft;
}
}
}
}
do{
SetTVFreq(TVFreqDiv);
C51 COMPILER V7.50 TUNER 04/01/2008 15:02:43 PAGE 6
delay(30);
val = ReadTuner();
if ( (val & 0x07) > 2 )
TVFreqDiv += amount;
else if( (val & 0x07) < 2 )
TVFreqDiv -= amount;
else goto true_aft; // == 2 ?
amount = (amount==1 ? 1 : amount >> 1 );
}while( Check_Cnt-- > 0 );
goto fail_aft;
if(((val & 0x07) < 0x03 ) && ((val & 0x07) > 0x01 )) goto true_aft;
fail_aft:
return FALSE;
true_aft:
if( IsNoInput() ) return FALSE;
if(IsVideoInput()) return TRUE;
else return FALSE;
}
#endif
*/
void SetTVChannel(void)
{
WORD TVFreq;
char Fine;
//BYTE val;
//val = ReadDecoder(MISC3);
//WriteDecoder(MISC3, val|0x08); // Force to output blue or black Screen
//ljy061303..Already in DisplayTVChannel()..CheckAndClearBlockedInput();
//ljy061303..Already in CheckAndClearMuteOn..ClearMuteOn();
PanelBlack(1);
CheckAndClearMuteOn();
AudioOff(); // to remove Pop Noise.
delay(5);
TVFreq = Get_Channel2Divid();
Fine = GetFineTuneEE(TVChannel);// - 31;
#ifdef DEBUG_TV
Printf("\rTVFreqDiv:0x%04x",(WORD)Fine);
#endif
if( Fine ) SetTVFreq( TVFreq + Fine); //
else{
//if( AFT(TVFreq)) ;
//else
SetTVFreq( TVFreq ); // AFT Fail
}
delay(10);
//SWReset();
//WriteDecoder(MISC3, val); // Disable Blue/black Screen
//WriteDecoder(0x2f, 0x91); // Rewrite Clroma low pass filter data for Noinput color killer problem.
DisplayTVChannel(TVChannel,1);
SetTVPrEE();
PanelBlack(0);
C51 COMPILER V7.50 TUNER 04/01/2008 15:02:43 PAGE 7
AudioOn(); //SetMSPVol();
}
//======================= Called from outside ==============================================
void ChangeTVChannel(BYTE NewCh)
{
TVChManual = 0;
if( NewCh >= MIN_TVCHN[TVInputSel - AIRTV] && NewCh <= MAX_TVCHN[TVInputSel - AIRTV] )
{
TVChannel = DummyChannel = NewCh;
SetTVChannel();
}
}
BYTE UpDownTVChannel(BYTE flag)
{
BYTE i=0, OldTVChannel;
BYTE MinChannel=0;
BYTE MaxCount;
ClearOSDInfo();
MinChannel = MIN_TVCHN[TVInputSel - AIRTV];
MaxCount = MAX_TVCHN[TVInputSel - AIRTV] - MinChannel + 1;
OldTVChannel = TVChannel;
do {
i++;
if( i > MaxCount )
{
TVChannel = DummyChannel = OldTVChannel;
break;
}
if(flag == UP) DummyChannel = ( TVChannel + 1 - MinChannel) % MaxCount + MinChannel;
else DummyChannel = ( TVChannel + MaxCount - 1 - MinChannel) % MaxCount + MinChannel;
TVChannel = DummyChannel;
} while( GetTVPrSystem(TVChannel) & SKIPCHN_MASK);
SetTVChannel();
return TRUE;
}
// TV Channel Auto Scan..
void ScanTVChannel(void)
{
BYTE i;
BYTE str[4];
DWORD TEMP_TVFREQ;
#ifdef SUPPORT_HRCIRC
BYTE HRC_Count = 0;
BYTE STD_Count = 0;
bit HRC_Flag=0, IRC_Flag = 0;
#endif
C51 COMPILER V7.50 TUNER 04/01/2008 15:02:43 PAGE 8
BYTE PreTVChannel;
PreTVChannel = TVChannel;
AudioOff();
for(i=MIN_TVCHN[TVInputSel-AIRTV]; i<= MAX_TVCHN[TVInputSel-AIRTV]; i++) {
if( WantToStopTVScan() )
break;
TVChannel = i;
SetTVPrSystem(TVChannel, SKIPCHN_MASK); // skip
SetFineTuneEE(TVChannel, 0);
TEMP_TVFREQ = Get_Channel2Divid(); // Get Freq Data from Channel table.
utoa( (WORD)i, str,10);
DisplayScanTVChannel(str);
#ifdef SUPPORT_HRCIRC
// HRC Check
if( (TVChannel != 5) && (TVChannel != 6)){
SetTVFreq( TEMP_TVFREQ-20 ); // STD-1.25 Mhz
delay(30); // Wait for 100mS
if(IsVideoInput())
{
HRC_Count++ ;
//Video_Status = TRUE;
SetTVPrSystem(TVChannel, 0); // Not skip
}
}
if( (TVChannel == 5) || (TVChannel == 6)){
// STD
SetTVFreq( TEMP_TVFREQ); // STD
delay(30);
if(IsVideoInput())
{
STD_Count++ ;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -