📄 tuner.lst
字号:
C51 COMPILER V7.50 TUNER 04/01/2008 15:02:43 PAGE 1
C51 COMPILER V7.50, COMPILATION OF MODULE TUNER
OBJECT MODULE PLACED IN .\Output\tuner.obj
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE tuner.c COMPACT OPTIMIZE(9,SIZE) BROWSE MODDP2 INCDIR(.\Include\) DEFINE(IN
-TERNAL_MCU) DEBUG OBJECTEXTEND PRINT(.\Source\tuner.lst) OBJECT(.\Output\tuner.obj)
line level source
1 //============ TV Tuner =========================================================
2 //
3 // ljy.EDITTVCHN 10/30/03~
4 // .Enhance the way to get channel number via remocon
5 // NTSC AIR - Wait to get channel number until EDITTVCHN_TIMEOUT
6 // is reached or two number are endtered.
7 // NTSC CABLE- Wait to get channel number until EDITTVCHN_TIMEOUT
8 // is reached or three number are endtered.
9 // PAL - Wait to get channel number until EDITTVCHN_TIMEOUT
10 // is reached.
11 // .Change DisplayTVChannel()->DisplayTVChannel( chn )
12 //
13 // ljy.TV_OPTI 10/31/03~
14 // .Use constant MIN_TVCHN[] and MAX_TVCHN[] for TVInputSel
15 //
16 // ljy01xx04
17 // .Insert 'sacnning TV...'message when start to scan TV.
18 //
19 //===============================================================================
20 #include "Config.h"
21 #include "reg.h"
22 #include "typedefs.h"
23
24 #if defined (SUPPORT_TV) && defined( NTSC_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
//--------------------------------------------------------------------------
PDATA BYTE TVInputSel;
static IDATA BYTE MTSType;
PDATA BYTE TVChannel, DummyChannel;
extern bit TVTunerAudioActive;
bit TVChManual = 0;
extern CODE struct RegisterInfo UserRange;
C51 COMPILER V7.50 TUNER 04/01/2008 15:02:43 PAGE 2
static IDATA WORD TVFreq=0;
//static IDATA BYTE NewTVChannel=0; //ljy.EDITTVCHN
//static IDATA WORD EditTVChnStartTime; //ljy.EDITTVCHN
//#define EDITTVCHN_TIMEOUT 100 //ljy.EDITTVCHN timeout for each number(in msec)
#define MIN_FREQUENCY 0x572//0x51b//0x54a //580
#define SECAM_L_MIN 0x51b//0x54a //580
#define MAX_FREQUENCY 0x3882 // PAL FREQ INFO
#define FREQ_INC 16 // 1000 // 1Mhz
// TVPRSYSTEM: X XXXXXXX : STORE[1] : COLORSYSTEM[bit6~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;
#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
C51 COMPILER V7.50 TUNER 04/01/2008 15:02:43 PAGE 3
#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
// Calculate
#define TVFreqDiv1 0x770 //(7325L+FreqIF)*FreqSetp/100;
#define TVFreqDiv2 0x650 //(5525+FreqIF)*FreqSetp/100;
#define TVFreqDiv5 0x7b0 //(7725+FreqIF)*FreqSetp/100;
#define TVFreqDiv7 0xdd0 //(17575L+FreqIF)*FreqSetp/100;
#define TVFreqDiv14_AIR 0x2050 // (47125L+FreqIF)*FreqSetp/100;
#define TVFreqDiv14 0xa70 // (12125L+FreqIF)*FreqSetp/100;
#define TVFreqDiv23 0x1070 // (21725L+FreqIF)*FreqSetp/100;
#define TVFreqDiv95 0x890 // (9125L+FreqIF)*FreqSetp/100;
#define TVFreqDiv100 0x2b70 // (64925L+FreqIF)*FreqSetp/100;
#define TVFreqDivINC 0x60 //6*FreqSetp; // 6Mz step in NTSC
CODE WORD MIN_TVCHN[]= { 2, 1 }; //{ AIR, CABLE }
CODE WORD MAX_TVCHN[]= { 69, 125 };
//-----------------------------------------------------------------------------
#ifdef NTSC_TV
WORD Get_Channel2Divid (void)
{
WORD FreqDiv=NIL;
if( TVInputSel==CABLETV ) {
if( TVChannel < 1 )TVChannel = 1;
if( TVChannel ==1 ) FreqDiv = TVFreqDiv1;
else if( TVChannel >=2 && TVChannel <=4 ) FreqDiv = (TVChannel-2)*TVFreqDivINC + TVFreqDiv2;
else if( TVChannel >=5 && TVChannel <=6 ) FreqDiv = (TVChannel-5)*TVFreqDivINC + TVFreqDiv5; //(77.55+4
-5.75)*16
else if( TVChannel >=95 && TVChannel <=99 ) FreqDiv = (TVChannel-95)*TVFreqDivINC + TVFreqDiv95; //(91.2
-5+45.75)*16
else if( TVChannel >=14 && TVChannel <=22 ) FreqDiv = (TVChannel-14)*TVFreqDivINC + TVFreqDiv14; //(121.
-25+45.75)*16
else if( TVChannel >=7 && TVChannel <=13 ) FreqDiv = (TVChannel-7)*TVFreqDivINC + TVFreqDiv7; //(175.25
-+45.75)*16
else if( TVChannel >=23 && TVChannel <=94 ) FreqDiv = (TVChannel-23)*TVFreqDivINC + TVFreqDiv23; //(217.
-25+45.75)*16
else if( TVChannel >=100 && TVChannel <=125 ) FreqDiv = (TVChannel-100)*TVFreqDivINC + TVFreqDiv100;//(
-649.25+45.75)*16
}
else
{ // AIRTV
if( TVChannel < 2 )TVChannel = 2;
if( TVChannel >=2 && TVChannel <=4 ) FreqDiv = (TVChannel-2)*TVFreqDivINC + TVFreqDiv2; //(91.25+45.75
-)*16
else if( TVChannel >=5 && TVChannel <=6 ) FreqDiv = (TVChannel-5)*TVFreqDivINC + TVFreqDiv5; //(77.55+4
-5.75)*16
else if( TVChannel >=7 && TVChannel <=13 ) FreqDiv = (TVChannel-7)*TVFreqDivINC + TVFreqDiv7; //(175.25+
-45.75)*16
else if( TVChannel >=14 && TVChannel <=69) FreqDiv = (TVChannel-14)*TVFreqDivINC + TVFreqDiv14_AIR; //(
-471.25+45.75)*16
C51 COMPILER V7.50 TUNER 04/01/2008 15:02:43 PAGE 4
}
return FreqDiv;
}
#endif // NTSC_TV
//-----------------------------------------------------------------------------
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;
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
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -