📄 paltuner.lst
字号:
250 2 #ifdef DEBUG
251 2 dPrintf("\r\n AFT value(ch:%d) = 0x%02x; count:%d", (WORD)TVChannel, (WORD)val, (WORD)Check_Cnt);
252 2 #endif
253 2 if((val & 0x81)==0x80) // check bit7=1 for inside AFC,bit0=0 for PONR
254 2 {
255 3 if(val & 0x40)
256 3 {
257 4 val=val&0x1e;
258 4 if(val == 0x00 ||val == 0x02 || val == 0x1e || val == 0x1c)
259 4 {
260 5 AFTStatus=TRUE; // inside AFC & Freq locked
261 5 val=0xff;
262 5 }
263 4 else
264 4 {
265 5 val>>=1;
266 5 switch(val)
267 5 {
268 6 case 0x07:
269 6 val=8;
270 6 break;
271 6
272 6 case 0x06:
273 6 val=4;
274 6 break;
275 6
276 6 case 0x05:
277 6 case 0x04:
278 6 val=2;
279 6 break;
280 6
281 6 case 0x03:
282 6 case 0x02:
283 6 val=1;
284 6 break;
285 6
286 6 case 0x08:
287 6 val=0x18;
288 6 break;
289 6
290 6 case 0x09:
291 6 val=0x14;
292 6 break;
293 6
294 6 case 0x0a:
295 6 case 0x0b:
296 6 val=0x12;
297 6 break;
298 6
299 6 case 0x0c:
300 6 case 0x0d:
301 6 default:
C51 COMPILER V7.50 PALTUNER 04/01/2008 15:02:41 PAGE 6
302 6 val=0x11;
303 6 break;
304 6
305 6 }
306 5 if(val>10)
307 5 TVFreqDiv-=(val&0x0f);
308 5 else
309 5 TVFreqDiv+=val;
310 5
311 5 val=0xee;
312 5 }
313 4 }
314 3
315 3 }
316 2 else if((ReadTuner()) & 0xc0) //double check again
317 2 val=0xee;
318 2 else
319 2 val=0xff; // outside AFC data
320 2
321 2 SetTVFreq(TVFreqDiv);
322 2 DisplayTVFreq(TVFreqDiv);
323 2 Check_Cnt++;
324 2 if(Check_Cnt>0x20)
325 2 val=0xff;
326 2
327 2
328 2 }while(val == 0xee);
329 1
330 1 if((AFTStatus==TRUE) && (IsVideoInput()))
331 1 {
332 2 val = ReadTuner();
333 2 val=val&0xc1;
334 2 if((val == 0xc0) || (val == 0xc1) || (val == 0xde) || (val == 0xdd))
335 2 {
336 3 TVFreq = TVFreqDiv; // Get Data.
337 3 // Printf("\n\rTVFreqH %02xH TVFreqL %02xH",(WORD)(TVFreqDiv>>8),(WORD)(TVFreqDiv&0xff));
338 3 // Printf("Freq ADC%02xH",(WORD)(ReadTuner()));
339 3 }
340 2 }
341 1
342 1 return AFTStatus;
343 1
344 1 #else //TVTunerDevice==LGTUNER_MK5
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 ) {
C51 COMPILER V7.50 PALTUNER 04/01/2008 15:02:41 PAGE 7
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
413 1 //070406-end
414 1 }
415
416 void SetTVChannel(void)
417 {
418 1 //WORD TVFreq;
419 1 char Fine;
420 1
421 1 //BYTE val;
422 1 //val = ReadDecoder(MISC3);
423 1 //WriteDecoder(MISC3, val|0x08); // Force to output blue or black Screen
424 1 PanelBlack(1);
425 1 CheckAndClearMuteOn();
C51 COMPILER V7.50 PALTUNER 04/01/2008 15:02:41 PAGE 8
426 1 AudioOff(); // to remove Pop Noise.
427 1 delay(5);
428 1
429 1 TVFreq = GetTVFreqEE(TVChannel);
430 1 Fine = GetFineTuneEE(TVChannel);// - 31;
431 1 #ifdef DEBUG_TV
Printf("\rTVFreqDiv:0x%04x",(WORD)Fine);
#endif
434 1 if( Fine ) SetTVFreq( TVFreq + Fine); //
435 1 else{
436 2
437 2 //if( AFT(TVFreq)) ;
438 2 //else
439 2 SetTVFreq( TVFreq ); // AFT Fail
440 2 }
441 1
442 1 delay(10);
443 1
444 1 //SWReset();
445 1 //WriteDecoder(MISC3, val); // Disable Blue/black Screen
446 1 //WriteDecoder(0x2f, 0x91); // Rewrite Clroma low pass filter data for Noinput color killer problem.
447 1 if(!ChannelEdit_Flag) DisplayTVChannel(TVChannel,1);
448 1 SetTVPrEE();
449 1 PanelBlack(0);
450 1
451 1 AudioOn(); //SetMSPVol();
452 1
453 1 }
454 //======================= Called from outside ==============================================
455 void ChangeTVChannel(BYTE NewCh)
456 {
457 1 TVChManual = 0;
458 1
459 1 if( NewCh <= TOTAL_PR )
460 1 {
461 2 TVChannel = DummyChannel = NewCh;
462 2 SetTVChannel();
463 2 }
464 1 }
465
466 BYTE UpDownTVChannel(BYTE flag)
467 {
468 1 BYTE i=0, OldTVChannel;
469 1 BYTE MinChannel=START_PR;
470 1 BYTE MaxCount;
471 1
472 1 if(!ChannelEdit_Flag)
473 1 ClearOSDInfo();
474 1
475 1 MaxCount = TOTAL_PR ;
476 1
477 1 OldTVChannel = TVChannel;
478 1
479 1 do {
480 2 i++;
481 2 if( i > MaxCount )
482 2 {
483 3 TVChannel = DummyChannel = OldTVChannel;
484 3 break;
485 3 }
486 2
487 2 if(flag == UP) DummyChannel = ( TVChannel-MinChannel + 1 ) % MaxCount + MinChannel;
C51 COMPILER V7.50 PALTUNER 04/01/2008 15:02:41 PAGE 9
488 2 else DummyChannel = ( TVChannel - MinChannel + MaxCount - 1) % MaxCount + MinChannel;
489 2
490 2 TVChannel = DummyChannel;
491 2
492 2 if(ChannelEdit_Flag) break;
493 2
494 2 } while( GetTVPrSystem(TVChannel) & SKIPCHN_MASK);
495 1
496 1 SetTVChannel();
497 1 return TRUE;
498 1 }
499
500 // TV Channel Scan..
501 void ManualTune(BYTE flag)
502 {
503 1 DWORD TEMP_TVFREQ;
504 1
505 1 AudioOff();
506 1
507 1 TEMP_TVFREQ = TVFreq;
508 1
509 1 DisplayManualScanTVProg(flag);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -