⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 paltuner.lst

📁 车载DVD osdIC TW8816原厂代码
💻 LST
📖 第 1 页 / 共 3 页
字号:
 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 + -