paltuner.lst

来自「显示屏驱动源代码」· LST 代码 · 共 747 行 · 第 1/3 页

LST
747
字号
C51 COMPILER V7.06   PALTUNER                                                              02/21/2008 14:00:31 PAGE 1   


C51 COMPILER V7.06, COMPILATION OF MODULE PALTUNER
OBJECT MODULE PLACED IN .\Output\PALTuner.obj
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE PALTuner.c COMPACT OPTIMIZE(9,SIZE) BROWSE INCDIR(.\Include\) DEBUG OBJECTE
                    -XTEND PRINT(.\Source\PALTuner.lst) OBJECT(.\Output\PALTuner.obj)

stmt 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    "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.06   PALTUNER                                                              02/21/2008 14:00:31 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;
              
              //070406-start
              #elif TVTunerDevice==LGTUNER_MK5
              CODE    WORD    kLowBand  = 0x8E01;
              CODE    WORD    kMidBand  =  0x8E02;
              CODE    WORD    kHighBand = 0x8E04;
              //070406-end
              
              #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
              
C51 COMPILER V7.06   PALTUNER                                                              02/21/2008 14:00:31 PAGE 3   

                      // Get Control Code
                      if( FreqDiv <= kUpperLowBand)
                                      TVCtrlCode = kLowBand;
                      else
                      {
                              if( FreqDiv <= kUpperMidBand)
                                              TVCtrlCode = kMidBand;
                              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;
              
              //070406-start
              #if  TVTunerDevice==LGTUNER_MK5 
                      I2CStart();
                      I2CWriteData(TVTunerIFI2CAddress | 0x01);
                      Val = I2CReadData();
                      I2CStop();
                      
              #else   //TVTunerDevice==LGTUNER_MK5 
              
                      I2CStart();
                      I2CWriteData(TVTunerI2CAddress & 0xFE);
                      I2CStart();
                      I2CWriteData(TVTunerI2CAddress | 0x01);
                      Val = I2CReadData();
C51 COMPILER V7.06   PALTUNER                                                              02/21/2008 14:00:31 PAGE 4   

                      I2CStop();
              
              //      Printf("\r\nTuner ADC:0x%02x",(WORD)Val);
              
              #endif  //TVTunerDevice==LGTUNER_MK5 
              //070406-end
              
                      return Val;
              }
              
              BYTE AFT( WORD TVFreqDiv )
              {
              //070406-start
              #if  TVTunerDevice==LGTUNER_MK5 
              
                      BYTE AFTStatus=FALSE;
                      BYTE val,Check_Cnt;
                      
                      
                      //FreqDiv = FreqDiv & ( ~SKIPCHN_MASK );
                      if( IsNoInput() ) return FALSE;  // ???
              
                      do{
                              ReadTuner();
                              delay(30);      
                              val = ReadTuner();
                              if((val & 0x81)==0x80)  // check bit7=1  for inside AFC,bit0=0 for PONR 
                                      {
                                              if(val & 0x40)
                                                      {
                                                              val=val&0x1e;
                                                              if(val == 0x00 ||val == 0x02 || val == 0x1e || val == 0x1c)
                                                                      {
                                                                              AFTStatus=TRUE; // inside AFC & Freq locked
                                                                              val=0xff;
                                                                      }
                                                              else
                                                                      {
                                                                              val>>=1;
                                                                              switch(val)
                                                                                      {
                                                                                      case 0x07:
                                                                                              val=6;
                                                                                              break;
                                                                                              
                                                                                      case 0x06:
                                                                                              val=3;
                                                                                              break;
                                                                                      
                                                                                      case 0x05:
                                                                                      case 0x04:
                                                                                              val=2;
                                                                                              break;                  
              
                                                                                      case 0x03:

⌨️ 快捷键说明

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