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 + -
显示快捷键?