📄 paltuner.lst
字号:
C51 COMPILER V7.50 PALTUNER 04/01/2008 15:02:41 PAGE 1
C51 COMPILER V7.50, 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 MODDP2 INCDIR(.\Include\) DEFINE
-(INTERNAL_MCU) DEBUG OBJECTEXTEND PRINT(.\Source\PALTuner.lst) OBJECT(.\Output\PALTuner.obj)
line level source
1 #include "Config.h"
2 #include "reg.h"
3 #include "typedefs.h"
4
5 #if defined (SUPPORT_TV) && defined( PAL_TV )
6
7 #include "i2c.h"
8 #include "main.h"
9 #include "osdbasic.h"
10 #include "dispinfo.h"
11 #include "osdmenu.h"
12 #include "tuner.h"
13 #include "audio.h"
14 //#include "eds.h"
15 //#include "cc.h"
16 #include "printf.h"
17 #include "tw88.h"
18 #include "etc_eep.h"
19 #include "RegMap.h"
20
21 //#define Fpc_NTSC 45750; // 45.75Mhz
22
23 //--------------------------------------------------------------------------
24
25 static IDATA BYTE MTSType;
26 PDATA BYTE TVChannel, DummyChannel;
27 bit TVChManual = 0;
28 IDATA WORD TVFreq=0;
29
30 extern bit TVTunerAudioActive;
31 extern CODE struct RegisterInfo UserRange;
32 extern bit ChannelEdit_Flag;
33
34 //#define EDITTVCHN_TIMEOUT 100 //ljy.EDITTVCHN timeout for each number(in msec)
35
36 #define MIN_FREQUENCY 0x54a//0x572 //0x51b//0x54a //580
37 #define SECAM_L_MIN 0x51b
38 #define MAX_FREQUENCY 0x3882 // PAL FREQ INFO
39 #define FREQ_INC 16 // 1Mhz
40
41 // TVPRSYSTEM: X XXX XXXX : SKIP[bit7] : AUDIO[bit6-4] : COLORSYSTEM[bit3~0]
42
43 //---------- Control Code -----------------------------------------------------
44 #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 04/01/2008 15:02:41 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
81 CODE WORD kLowBand = 0xCE01;
82 CODE WORD kMidBand = 0xCE02;
83 CODE WORD kHighBand = 0xCE04;
84 //070406-end
85
86 #endif
87 //---------- PLL divider ------------------------------------------------------
88 #if TVTunerDevice==LGTUNER_MK5
89
90 #define FreqIF 3800 // 38.00 Mhz
91 #define FreqSetp 16 //
92
93 #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
99
100
101 //-----------------------------------------------------------------------------
102
103 WORD ConvertChDivToFreq(WORD wDiv)
104 {
105 1 DWORD Temp;
106 1 WORD wFreq; // Chanel Freq X 10
107 1
108 1 Temp = (DWORD)(wDiv * 10L / FreqSetp - FreqIF / 10L);
109 1 wFreq = (WORD)Temp;
110 1
111 1 return wFreq;
112 1 }
113
114 void DisplayTVFreq(WORD wFreq)
115 {
C51 COMPILER V7.50 PALTUNER 04/01/2008 15:02:41 PAGE 3
116 1 BYTE freq_str[9], temp_str, i;
117 1 WORD wDisplay_Freq;
118 1
119 1 wDisplay_Freq = ConvertChDivToFreq(wFreq);
120 1 utoa( (WORD)wDisplay_Freq, freq_str,10);
121 1 for(i=0;i<9;i++)
122 1 {
123 2 if(freq_str[i] == 0)
124 2 {
125 3 temp_str = freq_str[i-1];
126 3 freq_str[i-1] = '.';
127 3 freq_str[i] = temp_str;
128 3 freq_str[i+1] = 'M'; //end string
129 3 freq_str[i+2] = 'H'; //end string
130 3 freq_str[i+3] = 'z'; //end string
131 3 freq_str[i+4] = 0; //end string
132 3 break;
133 3 }
134 2 }
135 1 DisplayChannelFreq(freq_str); // Display current freq.
136 1
137 1 }
138
139 void DisplayScanChannel(BYTE cChannel)
140 {
141 1 BYTE str[4];
142 1
143 1 utoa( (WORD)cChannel, str,10);
144 1 DisplayScanTVChannel(str); // Display Channel
145 1 }
146
147 void SetTVFreq(WORD FreqDiv)
148 {
149 1 WORD TVCtrlCode=0;
150 1
151 1 TVFreq = FreqDiv;
152 1
153 1 #ifdef DEBUG_TV
dPuts("\r\n++(SetTVFreq)");
Printf("\r\CH:%d ", (WORD)TVChannel);
#endif
157 1
158 1 #ifdef DEBUG_TV
Printf("\rTVFreqDiv:0x%04x",(WORD)FreqDiv);
#endif
161 1
162 1 // Get Control Code
163 1 if( FreqDiv <= kUpperLowBand)
164 1 TVCtrlCode = kLowBand;
165 1 else
166 1 {
167 2 if( FreqDiv <= kUpperMidBand)
168 2 TVCtrlCode = kMidBand;
169 2 else
170 2 TVCtrlCode = kHighBand;
171 2 }
172 1
173 1 #ifdef DEBUG_TV
Printf(" TVCtrlCode:0x%04x", (WORD)TVCtrlCode);
#endif
176 1
177 1 I2CStart();
C51 COMPILER V7.50 PALTUNER 04/01/2008 15:02:41 PAGE 4
178 1 I2CWriteData(TVTunerI2CAddress & 0xFE);
179 1 I2CWriteData(FreqDiv>>8);
180 1 I2CWriteData(FreqDiv);
181 1 I2CWriteData(TVCtrlCode>>8);
182 1 I2CWriteData(TVCtrlCode);
183 1 I2CStop();
184 1
185 1 if( !TVTunerAudioActive )
186 1 AudioAutoStdDetection();
187 1
188 1 #ifdef DEBUG_TV
dPuts("\r\n__(SetTVFreq)");
#endif
191 1 }
192
193 //BYTE GetTVChannel(void)
194 //{
195 // return TVChannel;
196 //}
197 //---------------------------------------------------------------------------
198 //Auto Fine Tune
199 // if (FINE == 0) {
200 // +/-1.5Mhz : Data +/-24, : AutoScan
201 // +/-2.0Mhz : Data +/-32 : ManualScan
202 // Data 1: 62.25Khz
203 // }
204
205 // Read Tuner ADC Data
206 BYTE ReadTuner(void)
207 {
208 1 BYTE Val;
209 1
210 1 //070406-start
211 1 #if TVTunerDevice==LGTUNER_MK5
212 1 I2CStart();
213 1 I2CWriteData(TVTunerIFI2CAddress | 0x01);
214 1 Val = I2CReadData();
215 1 I2CStop();
216 1
217 1 #else //TVTunerDevice==LGTUNER_MK5
I2CStart();
I2CWriteData(TVTunerI2CAddress & 0xFE);
I2CStart();
I2CWriteData(TVTunerI2CAddress | 0x01);
Val = I2CReadData();
I2CStop();
// Printf("\r\nTuner ADC:0x%02x",(WORD)Val);
#endif //TVTunerDevice==LGTUNER_MK5
229 1 //070406-end
230 1
231 1 return Val;
232 1 }
233
234 BYTE AFT( WORD TVFreqDiv )
235 {
236 1 //070406-start
237 1 #if TVTunerDevice==LGTUNER_MK5
238 1
239 1 BYTE AFTStatus=FALSE;
C51 COMPILER V7.50 PALTUNER 04/01/2008 15:02:41 PAGE 5
240 1 BYTE val,Check_Cnt = 0;
241 1
242 1
243 1 //FreqDiv = FreqDiv & ( ~SKIPCHN_MASK );
244 1 if( IsNoInput() ) return FALSE; // ???
245 1
246 1 do{
247 2 ReadTuner();
248 2 delay(20);
249 2 val = ReadTuner();
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -