📄 devtuner.lst
字号:
C51 COMPILER V8.18 DEVTUNER 09/29/2009 23:58:04 PAGE 1
C51 COMPILER V8.18, COMPILATION OF MODULE DEVTUNER
OBJECT MODULE PLACED IN ..\..\1out\DevTuner.obj
COMPILER INVOKED BY: d:\Keil\C51\BIN\C51.EXE ..\..\tv\DevTuner.c BROWSE INCDIR(..\..\inc) DEBUG OBJECTEXTEND PRINT(..\..
-\1out\DevTuner.lst) OBJECT(..\..\1out\DevTuner.obj)
line level source
1 /******************************************************************************
2 Copyright (c) 2005 MStar Semiconductor, Inc.
3 All rights reserved.
4
5 [Module Name]: DevTuner.c
6 [Date]: 30-JUN-2004
7 [Comment]:
8 TV tuner subroutines.
9 [Reversion History]:
10 *******************************************************************************/
11
12 #define _DEVTUNER_C_
13 #include "types.h"
14 #include "global.h"
15
16 #if TV_ENABLE
17 #include "DevTuner.h"
18 #include "i2c.h"
19 #include "misc.h"
20 #include "DEBUG.h"
21 #include "tv.h"
22 #include "devvd.h"
23 #include "panel.h"
24 #include "mstar.h"
25
26 ///////////////////////////////////////////////////////////////////////////////
27 ///////////////////////////////////////////////////////////////////////////////
28 void devTunerWrite(WORD wFreq)
29 {
30 1 #if (TUNER_TYPE==TUNER_XUGUANG_VFT_5A_118)
BYTE controltemp;
#endif
33 1 g_bTunerParm.ProgDivide = wFreq+(WORD)(TN_FREQ_IF*1000)/TN_FREQ_SS;
34 1
35 1 if( wFreq < TN_LOWBAND_END ) // low bank
36 1 g_bTunerParm.ControlInfo2 = TN_LOW_BAND;
37 1 else if( wFreq < TN_MIDBAND_END) // middle band
38 1 g_bTunerParm.ControlInfo2 = TN_MID_BAND;
39 1 else
40 1 g_bTunerParm.ControlInfo2 = TN_HIGH_BAND;
41 1
42 1 //printf("\r\nwFreq = %x", wFreq);
43 1 //printf("\r\ng_TuneFreqIF = %x", g_TuneFreqIF);
44 1 #if (TUNER_TYPE==TUNER_XUGUANG_VFT_5A_118)
controltemp=g_bTunerParm->ControlInfo2;
controltemp&=0x3F;
switch((chData.ucChannelMisc&SoundSysMask)%TV_SOUND_NUMS)
{
case TV_SOUND_BG:
controltemp|=0x80;
break;
case TV_SOUND_I:
controltemp|=0x40;
C51 COMPILER V8.18 DEVTUNER 09/29/2009 23:58:04 PAGE 2
break;
case TV_SOUND_M:
default:
case TV_SOUND_DK:
controltemp|=0xC0;
break;
}
g_bTunerParm.ControlInfo2=controltemp;
#endif
64 1
65 1 i2c_AccessStart(TN_PROG_I2C_ADDR, I2C_WRITE);
66 1 i2c_SendByte(g_bTunerParm.ProgDivide>>8);
67 1 Delay1ms(1);
68 1 i2c_SendByte(g_bTunerParm.ProgDivide&0xff);
69 1 Delay1ms(1);
70 1 i2c_SendByte(TN_CTL_BYTE);
71 1 Delay1ms(1);
72 1 i2c_SendByte(g_bTunerParm.ControlInfo2);
73 1 Delay1ms(1);
74 1 i2c_Stop();
75 1 }
76
77
78 #if TUNER_2IN1
79 ///////////////////////////////////////////////////////////////////////////////
80 ///////////////////////////////////////////////////////////////////////////////
81 void devTunerSetChromaToPal(void)
82 {
83 1 i2cWriteByte(TN_IF_I2C_ADDR,TN_SWITCHING_SUBADDR,SwitchDataPAL);//0xd6);
84 1 i2cWriteByte(TN_IF_I2C_ADDR,TN_ADJUST_SUBADDR,AdjustDataPAL|g_VideoSetting.TunerAGC);//0x70);
85 1 }
86
87
88 void devTunerSetChromaToNtsc(void)
89 {
90 1 i2cWriteByte(TN_IF_I2C_ADDR,TN_SWITCHING_SUBADDR,SwitchDataNTSC);//0x16);
91 1 i2cWriteByte(TN_IF_I2C_ADDR,TN_ADJUST_SUBADDR,AdjustDataNTSC|g_VideoSetting.TunerAGC);//0x30);
92 1 }
93
94 void devTunerSetChromaToSECAM(void)
95 {
96 1 i2cWriteByte(TN_IF_I2C_ADDR,TN_SWITCHING_SUBADDR,SwitchDataSECAM);//0x16);
97 1 i2cWriteByte(TN_IF_I2C_ADDR,TN_ADJUST_SUBADDR,AdjustDataSECAM|g_VideoSetting.TunerAGC);//0x30);
98 1 }
99
100 BYTE devTunerGetStatus(BYTE ucLoopCount)
101 {
102 1 BYTE ucStatus; // tuner status
103 1 BYTE AfcWinCounter=0;
104 1
105 1 while(ucLoopCount--) // loop to detect
106 1 {
107 2 i2cBurstCurrentBytes(TN_IF_I2C_ADDR,&ucStatus,1);
108 2
109 2 if (ucStatus & TN_READ_AFCWIN) // check inside AFC Window
110 2 AfcWinCounter++;
111 2
112 2 if(AfcWinCounter>ucLoopCount/2)
113 2 break;
114 2
115 2 Delay1ms(1);
116 2 }
C51 COMPILER V8.18 DEVTUNER 09/29/2009 23:58:04 PAGE 3
117 1
118 1 return ucStatus;
119 1 }
120
121 void devTunerSetSoundToPalBG(void)
122 {//devTunerSetChromaToPal();
123 1 i2cWriteByte(TN_IF_I2C_ADDR,TN_DATA_SUBADDR,SoundPALBG);
124 1 }
125
126 void devTunerSetSoundToPalI(void)
127 {//devTunerSetChromaToPal();
128 1 i2cWriteByte(TN_IF_I2C_ADDR,TN_DATA_SUBADDR,SoundPALI);
129 1 }
130
131 void devTunerSetSoundToPalDK(void)
132 {//devTunerSetChromaToPal();
133 1 i2cWriteByte(TN_IF_I2C_ADDR,TN_DATA_SUBADDR,SoundPALDK);
134 1 }
135
136 void devTunerSetSoundToNTSCMN(void)
137 {//devTunerSetChromaToNtsc();
138 1 i2cWriteByte(TN_IF_I2C_ADDR,TN_DATA_SUBADDR,SoundNTSC);
139 1 }
140
141 void devTunerSetSoundToSECAML(void)
142 {//devTunerSetChromaToSECAM();
143 1 i2cWriteByte(TN_IF_I2C_ADDR,TN_DATA_SUBADDR,SoundSECAML);
144 1 }
145
146
147 void devTunerSetAGCValue(value)
148 {
149 1 BYTE uctemp;
150 1 if (chData.ucChannelMisc==TV_SOUND_M)
151 1 uctemp=AdjustDataNTSC;
152 1 else
153 1 uctemp=AdjustDataPAL;
154 1
155 1 uctemp&=0xE0;
156 1 i2cWriteByte(TN_IF_I2C_ADDR,TN_ADJUST_SUBADDR,uctemp|value);
157 1 }
158
159
160 #else
///////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////
void devTunerSetSoundToPalBG(void)
{
BYTE tempvalue;
tempvalue=P4;
tempvalue&=0xFC;
tempvalue|=0x03;
P4=tempvalue;
}
void devTunerSetSoundToPalI(void)
{
BYTE tempvalue;
tempvalue=P4;
tempvalue&=0xFC;
tempvalue|=0x02;
P4=tempvalue;
C51 COMPILER V8.18 DEVTUNER 09/29/2009 23:58:04 PAGE 4
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -