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

📄 paltuner.lst

📁 此程序为twell8806驱动程序
💻 LST
📖 第 1 页 / 共 2 页
字号:
C51 COMPILER V7.50   PALTUNER                                                              08/20/2007 10:23:35 PAGE 1   


C51 COMPILER V7.50, COMPILATION OF MODULE PALTUNER
OBJECT MODULE PLACED IN PALTuner.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE PALTuner.c COMPACT OPTIMIZE(9,SIZE)

line level    source

   1          #include "Config.h"
   2          #include        "reg.h"
   3          #include        "typedefs.h"
   4          
   5          #if defined (SUPPORT_TV) && defined( PAL_TV )
              
              #include        "i2c.h"
              #include        "main.h"
              #include        "osdbasic.h"
              #include    "dispinfo.h"
              #include        "osdmenu.h"
              #include        "tuner.h"
              #include        "audio.h"
              #include        "eds.h"
              #include    "cc.h"
              #include        "debug.h"
              #include    "printf.h"
              #include        "tw88.h"
              #include        "etc_eep.h"
              #include        "RegMap.h"
              
              //#define  Fpc_NTSC     45750;                  // 45.75Mhz
              
              //--------------------------------------------------------------------------
              
              static  IDATA BYTE      MTSType;
                              PDATA BYTE      TVChannel, DummyChannel;
                          bit   TVChManual = 0;
              static  IDATA DWORD TVFreq=0;
              
              extern  bit   TVTunerAudioActive;
              extern CODE struct RegisterInfo UserRange;
              extern  bit             ChannelEdit_Flag;
              
              //#define EDITTVCHN_TIMEOUT             100             //ljy.EDITTVCHN timeout for each number(in msec)
              
              #define MIN_FREQUENCY   0x54a//0x572    //0x51b//0x54a //580
              #define SECAM_L_MIN             0x51b   
              #define MAX_FREQUENCY   0x3882          // PAL FREQ INFO
              #define FREQ_INC            16          // 1Mhz         
              
              // TVPRSYSTEM: X XXX XXXX :  SKIP[bit7] : AUDIO[bit6-4] : COLORSYSTEM[bit3~0]
              
              //---------- Control Code -----------------------------------------------------
              #if TVTunerDevice==PHILIPS
              
              CODE    WORD    kLowBand  = 0xCEA0;
              CODE    WORD    kMidBand  = 0xCE90;
              CODE    WORD    kHighBand = 0xCE30;
              
              #elif TVTunerDevice==ALPS
              
              CODE    WORD    kLowBand  = 0xCE01;
              CODE    WORD    kMidBand  = 0xCE02;
              CODE    WORD    kHighBand = 0xCE08;
C51 COMPILER V7.50   PALTUNER                                                              08/20/2007 10:23:35 PAGE 2   

              
              #elif TVTunerDevice==TEMIC
              
              CODE    WORD    kLowBand  = 0x8EA2;
              CODE    WORD    kMidBand  = 0x8E94;
              CODE    WORD    kHighBand = 0x8E31;
              
              #elif TVTunerDevice==TVAVA
              
              CODE    WORD    kLowBand  = 0x8001;
              CODE    WORD    kMidBand  = 0x8002;
              CODE    WORD    kHighBand = 0x8008;
              
              #elif TVTunerDevice==LGTUNER    // TAPC-H701F (NTSC Only)
              
              CODE    WORD    kLowBand  = 0x8E01;
              CODE    WORD    kMidBand  = 0x8E02;
              CODE    WORD    kHighBand = 0x8E08;
              
              #elif TVTunerDevice==SAMSUNGMUTITUNER   // PAL/SECAM
              CODE    WORD    kLowBand  = 0x8EA1;
              CODE    WORD    kMidBand  = 0x8E91;
              CODE    WORD    kHighBand = 0x8E31;
              
              #endif
              //---------- PLL divider ------------------------------------------------------
              #if TVTunerDevice==TVAVA
              
              #define FreqIF          3800 // 38.00 Mhz
              #define FreqSetp        20       // 
              
              #else
              //TVTunerDevice==PHILIPS || TVTunerDevice==ALPS || TVTunerDevice==TEMIC || TVTunerDevice==LGTUNER || TVTun
             -erDevice==SAMSUNGMUTITUNER
              #define FreqIF          4575 // Picture Intermediate Freq. in NTSC tuner : 45.75 MHz
              #define FreqSetp        16       // 1Mhz/62.5Khz (RSA=RAB=1) // 1000/62.5 = 16
              
              #endif
              
              //-----------------------------------------------------------------------------
              void SetTVFreq(WORD FreqDiv)
              {
                      WORD TVCtrlCode=0;
              
                      TVFreq = FreqDiv;       
              
                      #ifdef DEBUG_TV
                      dPuts("\r\n++(SetTVFreq)");
                      Printf("\r\CH:%d  ", (WORD)TVChannel);
                      #endif
              
                      #ifdef DEBUG_TV
                      Printf("\rTVFreqDiv:0x%04x",(WORD)FreqDiv);
                      #endif
              
                      // Get Control Code
                      if( FreqDiv <= kUpperLowBand)
                                      TVCtrlCode = kLowBand;
                      else
                      {
                              if( FreqDiv <= kUpperMidBand)
                                              TVCtrlCode = kMidBand;
C51 COMPILER V7.50   PALTUNER                                                              08/20/2007 10:23:35 PAGE 3   

                              else
                                              TVCtrlCode = kHighBand;
                      }
                      
                      #ifdef DEBUG_TV
                      Printf("  TVCtrlCode:0x%04x", (WORD)TVCtrlCode);
                      #endif
              
                      I2CStart();
                      I2CWriteData(TVTunerI2CAddress & 0xFE);
                      I2CWriteData(FreqDiv>>8);
                      I2CWriteData(FreqDiv);
                      I2CWriteData(TVCtrlCode>>8);
                      I2CWriteData(TVCtrlCode);
                      I2CStop();
                      
                      if( !TVTunerAudioActive )
                              AudioAutoStdDetection();
              
                      #ifdef DEBUG_TV
                      dPuts("\r\n__(SetTVFreq)");
                      #endif
              }
              
              //BYTE GetTVChannel(void)
              //{
              //      return TVChannel;
              //}
              //---------------------------------------------------------------------------
              //Auto Fine Tune
              //      if (FINE == 0) {        
                       // +/-1.5Mhz : Data +/-24, : AutoScan 
                       // +/-2.0Mhz : Data +/-32  : ManualScan
                       // Data 1: 62.25Khz
              //      }  
              
              // Read Tuner ADC Data
              BYTE ReadTuner(void)
              {
                      BYTE Val;
              
                      I2CStart();
                      I2CWriteData(TVTunerI2CAddress & 0xFE);
                      I2CStart();
                      I2CWriteData(TVTunerI2CAddress | 0x01);
                      Val = I2CReadData();
                      I2CStop();
              
              //      Printf("\r\nTuner ADC:0x%02x",(WORD)Val);
              
                      return Val;
              }
              
              BYTE AFT( WORD TVFreqDiv )
              {
                      BYTE amount = 8, Check_Cnt=8, val;
                      
                      //FreqDiv = FreqDiv & ( ~SKIPCHN_MASK );
                      if( IsNoInput() ) return FALSE;  // ???
              
                      SetTVFreq(TVFreqDiv);
                      delay(30);      
C51 COMPILER V7.50   PALTUNER                                                              08/20/2007 10:23:35 PAGE 4   

                      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;
              }
              
              void SetTVChannel(void)
              {
                      //WORD TVFreq;
C51 COMPILER V7.50   PALTUNER                                                              08/20/2007 10:23:35 PAGE 5   

                      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)
              {

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -