📄 tv_2in1.lst
字号:
289 1 chData.ucChannelMisc =NotSkipThisNum|DoAFCFlag|uctemp;
290 1 g_bSaveChannel=FALSE;
291 1 devTunerWrite(chData.wFreq);
292 1 InitVDBeforeSearchStart();
293 1 g_wTVAutoScan_LastVTotal = 0;
294 1
295 1 #if(ENABLE_CHECK_AUTO_H_TOTAL)
296 1 g_bEnableAutoHTotal = 1;
297 1 #endif
298 1
299 1 SystemDelay_translate_To_Dsp_Processor(5);
300 1 }
301
302 void TV_ChannelAutoScan(void)
C51 COMPILER V8.18 TV_2IN1 09/29/2009 23:58:04 PAGE 6
303 {
304 1 if( g_bTVAutoScanChannelBreak )
305 1 {
306 2 // Reset the value of the channel without signal
307 2 ResetChannels(g_TVChSetting.ucMaxValidChNum+1, MAX_CHANNEL_NUM-1);
308 2 TV_SelectChannel( 0 );
309 2 devAudioSetVolume(g_VideoSetting.volume);
310 2
311 2 g_bTVAutoScanChannelEnable=FALSE;
312 2 g_bTVAutoScanChannelBreak = FALSE;
313 2
314 2 #if(ENABLE_CHECK_AUTO_H_TOTAL)
315 2 g_bEnableAutoHTotal = 0;
316 2 #endif
317 2
318 2 //Set_InputTimingChangeFlag();
319 2 printMsg("auto stop");
320 2 g_ucOsdCounter=g_VideoSetting.OsdTime; // Reset OSD time
321 2 Clr_AFCDisableFlag();
322 2 }
323 1 else // Continue doing auto scan ...
324 1 {
325 2 WORD wFreqResult;
326 2 WORD wVTotal;
327 2 DrawScanProgress(chData.wFreq);
328 2
329 2 wVTotal = msVDGetVTotal();
330 2
331 2 if(abs(wVTotal -g_wTVAutoScan_LastVTotal)>10)
332 2 {
333 3 ResetupMode();
334 3 g_wTVAutoScan_LastVTotal = wVTotal;
335 3 if( msVDGetVTotal() > 575 ) // 50Hz
336 3 {
337 4 g_VdInfo.ucVideoSystem = SIG_PAL;
338 4 g_ucSrcModeIndex = MD_720x576_50I;
339 4 msVDSetupMode( VD_VSYNC_50HZ|VD_FSC_4433, SIG_PAL );
340 4 }
341 3 else // 60Hz
342 3 {
343 4 g_VdInfo.ucVideoSystem = SIG_NTSC;
344 4 g_ucSrcModeIndex = MD_720x480_60I;
345 4 msVDSetupMode( VD_FSC_3579, SIG_NTSC );
346 4 }
347 3
348 3 g_InOutCtl.bInterlace = 1;
349 3 SetOutputTimingAndWindow( OUTPUT_SNOW );
350 3 }
351 2
352 2 if (!(msVDGetSyncStable(25, 30)))
353 2 {
354 3 chData.wFreq += TN_SCAN_STEP;//14;//
355 3 devTunerWrite(chData.wFreq);
356 3 }
357 2 else
358 2 {
359 3 msVDColorBurstHandler( VD_COLOR_BURST_HANDLER_RESET );
360 3 ResetupMode();
361 3
362 3 if(devTunerAutoTuneFreq(chData.wFreq , &wFreqResult) == TN_SCAN_ERR)
363 3 chData.wFreq += 6;
364 3 }
C51 COMPILER V8.18 TV_2IN1 09/29/2009 23:58:04 PAGE 7
365 2
366 2 if(g_bSaveChannel)
367 2 {
368 3 g_wTVAutoScan_LastVTotal = 0;
369 3 chData.wFreq = wFreqResult;
370 3 SaveChannelData(g_ucTVChannelAutoScanCount, &chData);
371 3
372 3 g_TVChSetting.ucMaxValidChNum=g_ucTVChannelAutoScanCount;
373 3
374 3 if (g_ucTVChannelAutoScanCount == MAX_CHANNEL_NUM)
375 3 g_bTVAutoScanChannelBreak = TRUE;
376 3 else
377 3 g_ucTVChannelAutoScanCount++;
378 3
379 3 chData.wFreq += TN_SCAN_NEXT_CH; // set next channel
380 3 devTunerWrite(chData.wFreq);
381 3
382 3 //Delay1ms(20);
383 3 SystemDelay_translate_To_Dsp_Processor(2);
384 3 g_bSaveChannel = FALSE;
385 3 }
386 2
387 2 if( chData.wFreq> TN_FREQMAX )
388 2 g_bTVAutoScanChannelBreak = TRUE;
389 2 }
390 1 }
391
392 void TV_ChannelManualScanInit(void)
393 {
394 1 ChannelScanInit(); //for manual scan
395 1 if(g_bManualScanDirection)
396 1 chData.wFreq +=TN_SCAN_NEXT_CH;//STEP_200K; //
397 1 else
398 1 chData.wFreq -=TN_SCAN_NEXT_CH;//STEP_200K; //
399 1 g_bTVManualSearchEnable=TRUE;
400 1
401 1 #if(ENABLE_CHECK_AUTO_H_TOTAL)
402 1 g_bEnableAutoHTotal = 1;
403 1 #endif
404 1 }
405
406 void TV_ChannelManualScan(void)
407 {
408 1 WORD wFineTuneFreq;
409 1 BYTE Tmp;
410 1
411 1 if(chData.wFreq>TN_FREQMAX&&g_bManualScanDirection)
412 1 chData.wFreq=TN_FREQMIN;
413 1 else if(chData.wFreq<TN_FREQMIN&&!g_bManualScanDirection)
414 1 chData.wFreq=TN_FREQMAX; // check stop condition
415 1
416 1 if(g_bTVManualScanChannelBreak)
417 1 {
418 2 g_bTVManualStore = TRUE;
419 2 g_bSaveChannel = FALSE;
420 2 g_bTVManualSearchEnable = FALSE;
421 2 g_bTVManualScanChannelBreak = FALSE;
422 2 g_ucOsdCounter=g_VideoSetting.OsdTime; // Reset OSD time
423 2
424 2 #if(ENABLE_CHECK_AUTO_H_TOTAL)
425 2 g_bEnableAutoHTotal = 0;
426 2 #endif
C51 COMPILER V8.18 TV_2IN1 09/29/2009 23:58:04 PAGE 8
427 2
428 2 Clr_AFCDisableFlag();
429 2 return;
430 2 }
431 1
432 1 DrawScanProgress(chData.wFreq);
433 1
434 1 devTunerWrite( chData.wFreq );
435 1
436 1 if (!(msVDGetSyncStable(25, 30)))
437 1 {
438 2 if ( g_bManualScanDirection )
439 2 chData.wFreq += TN_SCAN_STEP; // next
440 2 else // if (cStep < 0)
441 2 chData.wFreq -= TN_SCAN_STEP; // next
442 2 devTunerWrite(chData.wFreq);
443 2 }
444 1 else
445 1 {
446 2 Tmp = devTunerAutoTuneFreq(chData.wFreq , &wFineTuneFreq);
447 2
448 2 if(Tmp == TN_SCAN_ERR)
449 2 {
450 3 if ( g_bManualScanDirection )
451 3 chData.wFreq += 5; // next
452 3 else // if (cStep < 0)
453 3 chData.wFreq -= 5; // next
454 3 }
455 2 else
456 2 {
457 3 chData.wFreq = wFineTuneFreq;
458 3 g_bTVManualScanChannelBreak = TRUE;
459 3 devTunerWrite(chData.wFreq);
460 3 Set_InputTimingChangeFlag();
461 3 }
462 2 }
463 1 }
464
465 void ResetTuner(void)
466 {
467 1 devTunerWrite(chData.wFreq);
468 1 }
469
470 WORD GetTVScale100Value(WORD value, WORD minValue, WORD maxValue)
471 {
472 1 maxValue=maxValue-minValue;
473 1 value=value-minValue;
474 1 if (value>650)
475 1 {
476 2 value/=2;
477 2 maxValue/=2;
478 2 }
479 1 value=((DWORD)value*100+maxValue/2)/maxValue;//modify word---->dword for tv search ,tzw
480 1
481 1 return value;
482 1 }
483 void DrawChannelFreqGuage( WORD wFreq ,BYTE foreColor)
484 {
485 1 BYTE *str;
486 1 WORD MinValue,MaxValue,TEMPVALUE;
487 1 TEMPVALUE=(WORD) wFreq;
488 1 if(TEMPVALUE < TN_LOWBAND_END)
C51 COMPILER V8.18 TV_2IN1 09/29/2009 23:58:04 PAGE 9
489 1 {
490 2 MinValue=TN_FREQMIN;
491 2 MaxValue=TN_LOWBAND_END;
492 2 str="VHFL";
493 2 }
494 1 else if(TEMPVALUE < TN_MIDBAND_END)
495 1 {
496 2 MinValue=TN_LOWBAND_END;
497 2 MaxValue=TN_MIDBAND_END;
498 2 str="VHFH";
499 2 }
500 1 else
501 1 {
502 2 MinValue=TN_MIDBAND_END;
503 2 MaxValue=TN_FREQMAX;
504 2 str=" UHF";
505 2 }
506 1
507 1 Osd_SetTextColor(CP_WhiteColor,CP_GrayColor);
508 1 Osd_DrawStr(13,6, str);
509 1
510 1 Osd_SetTextColor(foreColor,CP_GrayColor);
511 1 Osd_DrawGuage(0, 9, 15, GetTVScale100Value(TEMPVALUE,MinValue,MaxValue));
512 1 }
513
514 void DrawScanProgress( WORD wFreq )
515 {
516 1 Osd_SetTextColor(CP_BlueColor,CP_TransparenceColor);
517 1 DrawNum(7, 0, 3, wFreq/STEPS_1M);
518 1 DrawNum(11, 0, 2, wFreq%STEPS_1M*5);
519 1 if(wFreq%STEPS_1M>1)
520 1 Osd_DrawChar(11,0,'.');
521 1 else
522 1 Osd_DrawStr(11,0, ".0");
523 1
524 1 DrawChannelFreqGuage( wFreq ,CP_RedColor);
525 1 }
526
527 void TV_ChannelInit(void)
528 {
529 1 g_TVChSetting.ucPreChannelNO=g_TVChSetting.ucCurChannelNO;
530 1 //g_TVChSearchStartData=TN_FREQMIN;
531 1 if (IsTVInUse())
532 1 Set_ChannelChangFlag();
533 1
534 1 Set_ShowSourceFlag();
535 1 }
536
537 void ChannelSwap(BYTE sourcechannel ,BYTE goalchannel)
538 {
539 1 StuChannelData chDatatemp;
540 1 ReadTVChannelInfo(sourcechannel,TRUE);
541 1 chDatatemp=chData;
542 1 ReadTVChannelInfo(goalchannel,TRUE);
543 1 SaveTVChannelInfo(sourcechannel, TRUE);
544 1 chData=chDatatemp;
545 1 SaveTVChannelInfo(goalchannel, TRUE);
546 1 ResetTuner();
547 1 Set_InputTimingChangeFlag();
548 1 }
549
550
C51 COMPILER V8.18 TV_2IN1 09/29/2009 23:58:04 PAGE 10
551 void ReDrawProgram(BOOL flag)
552 {
553 1 if(flag)
554 1 {
555 2 Osd_SetTextColor(CP_GrayColor,CP_GrayColor);
556 2 Osd_DrawStr(2,7, strProgramText[g_VideoSetting.Language]);
557 2 Osd_DrawNum(13, 7, g_ucTVChannelAutoScanCount);
558 2 g_bProgramFlash=FALSE;
559 2 }
560 1 else
561 1 {
562 2 Osd_SetTextColor(CP_WhiteColor,CP_GrayColor);
563 2 Osd_DrawStr(2,7, strProgramText[g_VideoSetting.Language]);
564 2 Osd_DrawNum(13, 7, g_ucTVChannelAutoScanCount);
565 2 g_bProgramFlash=TRUE;
566 2 }
567 1 }
568
569 #endif
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 1879 ----
CONSTANT SIZE = 44 ----
XDATA SIZE = 5 ----
PDATA SIZE = ---- ----
DATA SIZE = 2 34
IDATA SIZE = ---- ----
BIT SIZE = ---- ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -