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