paltuner.lst
来自「显示屏驱动源代码」· LST 代码 · 共 747 行 · 第 1/3 页
LST
747 行
case 0x02:
val=1;
break;
case 0x08:
val=0x16;
break;
C51 COMPILER V7.06 PALTUNER 02/21/2008 14:00:31 PAGE 5
case 0x09:
val=0x13;
break;
case 0x0a:
case 0x0b:
val=0x12;
break;
case 0x0c:
case 0x0d:
default:
val=0x11;
break;
}
if(val>10)
TVFreqDiv-=(val&0x0f);
else
TVFreqDiv+=val;
val=0xee;
}
}
}
else if((ReadTuner()) & 0xc0) //double check again
val=0xee;
else
val=0xff; // outside AFC data
SetTVFreq(TVFreqDiv);
Check_Cnt++;
if(Check_Cnt>0x20)
val=0xff;
}while(val == 0xee);
if((AFTStatus==TRUE) && (IsVideoInput()))
{
val = ReadTuner();
val=val&0xc1;
if((val == 0xc0) || (val == 0xc1) || (val == 0xde) || (val == 0xdd))
{
TVFreq = TVFreqDiv; // Get Data.
// Printf("\n\rTVFreqH %02xH TVFreqL %02xH",(WORD)(TVFreqDiv>>8),(WORD)(TVFreqDiv&0xff));
// Printf("Freq ADC%02xH",(WORD)(ReadTuner()));
}
}
return AFTStatus;
#else //TVTunerDevice==LGTUNER_MK5
BYTE amount = 8, Check_Cnt=8, val;
//FreqDiv = FreqDiv & ( ~SKIPCHN_MASK );
if( IsNoInput() ) return FALSE; // ???
SetTVFreq(TVFreqDiv);
C51 COMPILER V7.06 PALTUNER 02/21/2008 14:00:31 PAGE 6
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);
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()){
TVFreq = TVFreqDiv; // Get Data.
return TRUE;
}
else return FALSE;
#endif //TVTunerDevice==LGTUNER_MK5
//070406-end
}
C51 COMPILER V7.06 PALTUNER 02/21/2008 14:00:31 PAGE 7
void SetTVChannel(void)
{
//WORD TVFreq;
char Fine;
//BYTE val;
//val = ReadDecoder(MISC3);
//WriteDecoder(MISC3, val|0x08); // Force to output blue or black Screen
PanelBlack(1);
CheckAndClearMuteOn();
AudioOff(); // to remove Pop Noise.
delay(5);
TVFreq = GetTVFreqEE(TVChannel);
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.
if(!ChannelEdit_Flag) DisplayTVChannel(TVChannel,1);
SetTVPrEE();
PanelBlack(0);
AudioOn(); //SetMSPVol();
}
//======================= Called from outside ==============================================
void ChangeTVChannel(BYTE NewCh)
{
TVChManual = 0;
if( NewCh <= TOTAL_PR )
{
TVChannel = DummyChannel = NewCh;
SetTVChannel();
}
}
BYTE UpDownTVChannel(BYTE flag)
{
BYTE i=0, OldTVChannel;
BYTE MinChannel=START_PR;
BYTE MaxCount;
if(!ChannelEdit_Flag)
ClearOSDInfo();
MaxCount = TOTAL_PR ;
C51 COMPILER V7.06 PALTUNER 02/21/2008 14:00:31 PAGE 8
OldTVChannel = TVChannel;
do {
i++;
if( i > MaxCount )
{
TVChannel = DummyChannel = OldTVChannel;
break;
}
if(flag == UP) DummyChannel = ( TVChannel-MinChannel + 1 ) % MaxCount + MinChannel;
else DummyChannel = ( TVChannel - MinChannel + MaxCount - 1) % MaxCount + MinChannel;
TVChannel = DummyChannel;
if(ChannelEdit_Flag) break;
} while( GetTVPrSystem(TVChannel) & SKIPCHN_MASK);
SetTVChannel();
return TRUE;
}
// TV Channel Scan..
void ManualTune(BYTE flag)
{
DWORD TEMP_TVFREQ;
AudioOff();
TEMP_TVFREQ = TVFreq;
DisplayManualScanTVProg(flag);
SetTVFreq( TEMP_TVFREQ );
if( IsVideoInput() ) {
if( flag == UP ) TEMP_TVFREQ += FREQ_INC;
else TEMP_TVFREQ -= FREQ_INC;
}
while(1)
{
if( WantToStopTVScan() )
break;
if( flag == UP ) TEMP_TVFREQ += FREQ_INC;
else TEMP_TVFREQ -= FREQ_INC;
SetTVFreq( TEMP_TVFREQ );
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?