📄 devtuner.lst
字号:
void devTunerSetSoundToPalDK(void)
{
BYTE tempvalue;
tempvalue=P4;
tempvalue&=0xFC;
tempvalue|=0x01;
P4=tempvalue;
}
void devTunerSetSoundToNTSCMN(void)
{
P4&=0xFC;
}
#endif //TUNER_2IN1
196
197 ///////////////////////////////////////////////////////////////////////////////
198 ///////////////////////////////////////////////////////////////////////////////
199
200 #define SlopeCount 1
201
202 BYTE devTunerAutoTuneFreq( WORD wOriFreq, WORD* pwResultFreq )
203 {
204 1 TnAutoDrctType cDirect; // +/- direct
205 1 char cOffset; // frequency offset
206 1 BYTE ucDummy; // loop dummy
207 1 BYTE ucBestAfc; // found best freq. flag
208 1 BYTE ucAbidanceCount;//identify personate channel
209 1
210 1 *pwResultFreq = wOriFreq; // intialize
211 1 cDirect = TN_AUTO_TGL;
212 1 cOffset = 0;
213 1 ucDummy = TN_SCAN_STEP+5; // initialize dummy
214 1 ucBestAfc = 0x07; // initialize AFC
215 1 ucAbidanceCount=0;
216 1
217 1 do
218 1 {
219 2 BYTE ucStatus; // status buffer
220 2 BYTE ucAFC; // AFC status
221 2 BYTE ucAfcDelta;
222 2 BYTE ucLastAfc;
223 2
224 2 devTunerWrite( wOriFreq + cOffset); // setting parameteer
225 2 //Delay1ms(30);
226 2 SystemDelay_translate_To_Dsp_Processor(2);
227 2 ucStatus = devTunerGetStatus(10);
228 2 if((ucStatus & TN_READ_AFCWIN) == 0x00) // No signal
229 2 return TN_SCAN_ERR;
230 2
231 2 ucLastAfc=ucAFC;
232 2 ucAFC = (ucStatus & TN_READ_AFC) >> 1; // b4-b1
233 2 if (ucAFC < 0x08) // 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07
234 2 ucAfcDelta = ucAFC;
235 2 else //if(ucAFC >= 0x08) // 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d 0x0e, 0x0f
236 2 ucAfcDelta = ucAFC ^ 0x0f;
237 2
238 2 if (ucBestAfc > ucAfcDelta) // found better AFC
239 2 {
240 3 ucBestAfc = ucAfcDelta;
C51 COMPILER V8.18 DEVTUNER 09/29/2009 23:58:04 PAGE 5
241 3 *pwResultFreq = wOriFreq + cOffset; // save freq.
242 3 }
243 2
244 2 // Setup the direction of search
245 2 if (cDirect == TN_AUTO_TGL)
246 2 {
247 3 if( ucAFC < 0x08 ) // 0x03, 0x04, 0x05, 0x06, 0x07
248 3 cDirect = TN_AUTO_PLS; // increase
249 3 else // 0x08, 0x09, 0x0a, 0x0b, 0x0c
250 3 cDirect = TN_AUTO_MNS; // decrease
251 3 }
252 2 if (cDirect == TN_AUTO_PLS) // increase
253 2 {
254 3 if( ucAFC >= 0x08 ) // over -
255 3 {
256 4 if (ucBestAfc <= 0x02) // 0x00, 0x01, 0x02 or 0x0d 0x0e, 0x0f
257 4 {
258 5 if(ucAbidanceCount>SlopeCount)//||ucBestAfc == 0x00)
259 5 goto succeed;
260 5 else
261 5 {
262 6 if(ucLastAfc>ucAFC)
263 6 ucAbidanceCount++;
264 6 else
265 6 ucAbidanceCount=0;
266 6 }
267 5 }
268 4 }
269 3 cOffset++;
270 3 }
271 2 if (cDirect == TN_AUTO_MNS) // decrease
272 2 {
273 3 if( ucAFC < 0x08 ) // over +
274 3 {
275 4 if (ucBestAfc <= 0x02) // 0x00, 0x01, 0x02 or 0x0d 0x0e, 0x0f
276 4 {
277 5 if(ucAbidanceCount>SlopeCount)//||ucBestAfc == 0x00)
278 5 goto succeed;
279 5 else
280 5 {
281 6 if(ucLastAfc<ucAFC)
282 6 ucAbidanceCount++;
283 6 else
284 6 ucAbidanceCount=0;
285 6 }
286 5 }
287 4 }
288 3 cOffset--;
289 3 }
290 2 } while(ucDummy--);
291 1
292 1 return TN_SCAN_ERR;
293 1
294 1 succeed:
295 1 devTunerWrite( *pwResultFreq+STEPS_1M*2);
296 1 SystemDelay_translate_To_Dsp_Processor(1);
297 1 devTunerWrite( *pwResultFreq); // setting parameteer
298 1 SystemDelay_translate_To_Dsp_Processor(1);
299 1 msVDReset();
300 1 SystemDelay_translate_To_Dsp_Processor(1);
301 1 if (!(msVDGetSyncStable(10,20)))
302 1 return TN_SCAN_ERR;
C51 COMPILER V8.18 DEVTUNER 09/29/2009 23:58:04 PAGE 6
303 1 g_bSaveChannel = TRUE;
304 1 return TRUE; // find Channel
305 1 }
306
307 void devSetSWF(BYTE ColorSoundSystem)
308 {
309 1 BYTE tempchroamvalue;
310 1 tempchroamvalue=((g_TVChSetting.TvCurChannelMisc&ColorSysMask)>>4)%CHROMA_NUMS;
311 1
312 1 switch(tempchroamvalue)
313 1 {
314 2 case CHROMA_AUTO:
315 2 devTunerSetChromaToPal();
316 2 break;
317 2 case CHROMA_PAL:
318 2 devTunerSetChromaToPal();
319 2 break;
320 2 case CHROMA_NTSC:
321 2 devTunerSetChromaToNtsc();
322 2 break;
323 2 case CHROMA_SECAM:
324 2 devTunerSetChromaToPal();
325 2 break;
326 2 }
327 1
328 1 switch((ColorSoundSystem&SoundSysMask)%TV_SOUND_NUMS)
329 1 {
330 2 case TV_SOUND_BG:
331 2 devTunerSetSoundToPalBG();
332 2 break;
333 2 case TV_SOUND_I:
334 2 devTunerSetSoundToPalI();
335 2 break;
336 2 case TV_SOUND_M:
337 2 if(tempchroamvalue==CHROMA_AUTO||tempchroamvalue==CHROMA_NTSC)
338 2 devTunerSetChromaToNtsc();
339 2 devTunerSetSoundToNTSCMN();
340 2 break;
341 2 case TV_SOUND_L:
342 2 if(tempchroamvalue==CHROMA_AUTO||tempchroamvalue==CHROMA_SECAM)
343 2 devTunerSetChromaToSECAM();
344 2 devTunerSetSoundToSECAML();
345 2 break;
346 2 default:
347 2 case TV_SOUND_DK:
348 2 devTunerSetSoundToPalDK();
349 2 break;
350 2 }
351 1 }
352
353 #endif
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 738 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = 5 ----
PDATA SIZE = ---- ----
DATA SIZE = ---- 20
IDATA SIZE = ---- ----
BIT SIZE = ---- ----
END OF MODULE INFORMATION.
C51 COMPILER V8.18 DEVTUNER 09/29/2009 23:58:04 PAGE 7
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -