📄 tv_2in1.lst
字号:
C51 COMPILER V8.18 TV_2IN1 09/29/2009 23:58:04 PAGE 1
C51 COMPILER V8.18, COMPILATION OF MODULE TV_2IN1
OBJECT MODULE PLACED IN ..\..\1out\TV_2IN1.obj
COMPILER INVOKED BY: d:\Keil\C51\BIN\C51.EXE ..\..\tv\TV_2IN1.c BROWSE INCDIR(..\..\inc) DEBUG OBJECTEXTEND PRINT(..\..\
-1out\TV_2IN1.lst) OBJECT(..\..\1out\TV_2IN1.obj)
line level source
1 #define _TV_2IN1_C_
2
3 #include "board.h"
4
5 #define _TV_C_
6
7 #include <math.h>
8 #include "types.h"
9 #include "Global.h"
10 #if TV_ENABLE
11 #include "Reg52.h"
12 #include "TV.h"
13 #include "devtuner.h"
14 #include "misc.h"
15 #include "nvram.h"
16 #include "DevVD.h"
17 #include "msosd.h"
18 #include "DEBUG.h"
19 #include "ms_reg.h"
20 #include "ms_rwreg.h"
21 #include "panel.h"
22 #include "mstar.h"
23 //#include "menudef.h"
24 #include "menu.h"
25 #include "UserPref.h"
26 #include "Tda7052.h"
27 #include "nvram.h"
28 #include "M2_vd_agc_lib.h"
29
30 #if(ENABLE_VD_DSP)
31 #include "Maria2_dsp_lib.h"
32 #endif
33
34
35 BYTE XDATA g_ucTryTimes;
36 extern BYTE code strProgramText[LANG_Nums][12];
37
38 extern void devSetSWF(BYTE ColorSoundSystem);
39 extern void NVRam_WriteWord(WORD addr, WORD value);
40 extern void Osd_SetTextColor(BYTE foreColor, BYTE backColor);
41 extern BOOL ExecuteKeyEvent(MenuItemActionType menuAction);
42
43 //extern BYTE g_ucMenuPageIndex;
44 //extern BYTE g_ucMenuItemIndex;
45
46 BYTE GetAFCValue(BYTE ucLoopCount)
47 {
48 1 BYTE value;
49 1 BYTE code AUTOAFCMappingValue[16]=
50 1 {
51 1 0x08,// 0
52 1 0x09,// 1
53 1 0x0A,// 2
54 1 0x0B,// 3
C51 COMPILER V8.18 TV_2IN1 09/29/2009 23:58:04 PAGE 2
55 1 0x0C,// 4
56 1 0x0D,// 5
57 1 0x0E,// 6
58 1 0x0F,// 7
59 1 0x00,// 8
60 1 0x01,// 9
61 1 0x02,// A
62 1 0x03,// B
63 1 0x04,// C
64 1 0x05,// D
65 1 0x06,// E
66 1 0x07,// F
67 1 };
68 1
69 1 value= devTunerGetStatus(ucLoopCount);
70 1 value &= 0x1e;
71 1 value >>= 1;
72 1 value &= 0x0f;//16 counts
73 1 // printf("AUTOAFC==%d", AUTOAFCMappingValue[value]);
74 1 // printf("value===%d", value);
75 1 return AUTOAFCMappingValue[value];//abs(value-7);//alue;//
76 1 }
77
78 /*
79 void TurnerAFCHandler(void)
80 {
81 BYTE AFCValue;
82 if(!PowerOnFlag) // Nelson added 2006-01-24
83 return; // Nelson added 2006-01-24
84 if(!IsTVInUse())
85 return;
86 else if(AFCDisableFlag)
87 return;
88 else if(!(chData.ucChannelMisc&DoAFCFlag))
89 return;
90 else if(!(g_VdInfo.wVideoStatus&VD_HSYNC_LOCKED))
91 return;
92 else if(g_ucAFCTuneCounter<AFCTUNEMINCOUNT||g_ucAFCTuneCounter>AFCTUNEMAXCOUNT)
93 Set_AFCDisableFlag();
94
95 AFCValue = GetAFCValue(5);
96
97 if(AFCValue>9)
98 {
99 chData.wFreq++;
100 g_ucAFCTuneCounter++;
101 }
102 else if(AFCValue<6)
103 {
104 chData.wFreq--;
105 g_ucAFCTuneCounter--;
106 }
107 else
108 return;
109
110 ResetTuner();
111 }
112 */
113 BOOL CheckTunerVsIsValid(WORD Vs)
114 {
115 1 if((Vs>=TN_FREQMIN)&&(Vs<=TN_FREQMAX))
116 1 return TRUE;
C51 COMPILER V8.18 TV_2IN1 09/29/2009 23:58:04 PAGE 3
117 1 else
118 1 return FALSE;
119 1 }
120
121 void ReadTVChannelInfo(BYTE ch, BOOL ReallyAddr)
122 {
123 1 ReallyAddr=ReallyAddr;
124 1 NVRam_ReadTbl(nvrChanneAddr(ch), (BYTE*)&chData,SIZE_TV_CHANNEL_INFO);
125 1 if(!CheckTunerVsIsValid(chData.wFreq))
126 1 chData.wFreq=TN_FREQ_INVILIDDEF;
127 1 }
128
129 void SaveTVChannelInfo(BYTE ch, BOOL ReallyAddr)
130 {
131 1 ReallyAddr=ReallyAddr;
132 1
133 1 if(!CheckTunerVsIsValid(chData.wFreq))
134 1 chData.wFreq=TN_FREQ_INVILIDDEF;
135 1 NVRam_WriteTbl(nvrChanneAddr(ch), (BYTE*)&chData,SIZE_TV_CHANNEL_INFO);
136 1 }
137
138 void TV_SelectChannel( BYTE ucChannel )
139 {
140 1 g_TVChSetting.ucPreChannelNO = g_TVChSetting.ucCurChannelNO;
141 1 g_TVChSetting.ucCurChannelNO = ucChannel;
142 1 TV_SetCh();
143 1 }
144
145 void TV_SelectPreChannel(void)
146 {
147 1 BYTE temp;
148 1 temp=g_TVChSetting.ucCurChannelNO;
149 1 g_TVChSetting.ucCurChannelNO=g_TVChSetting.ucPreChannelNO;
150 1 g_TVChSetting.ucPreChannelNO=temp;
151 1 TV_SetCh();
152 1 }
153
154 void TV_SetCh(void)
155 {
156 1 VD_AGC_ResetGain( g_uwVideoAGC );
157 1
158 1 ReadTVChannelInfo(g_TVChSetting.ucCurChannelNO,FALSE);
159 1 g_TVChSetting.TvCurChannelMisc=chData.ucChannelMisc;
160 1 //printf("chData.wFreq==%x", chData.wFreq);
161 1 devTunerWrite(chData.wFreq);
162 1 //SetColorSystem(chData);
163 1 devSetSWF(chData.ucChannelMisc);
164 1 devTunerSetAGCValue(g_VideoSetting.TunerAGC);
165 1 msVDReset();
166 1
167 1 //if( g_ucmsVDCtl&MSVD_CTL_FLAG_NOISE_HANDLER )
168 1 msVDNoiseHandlerReset();
169 1
170 1 SaveChannelNumberSetting();
171 1 Set_InputTimingChangeFlag();
172 1 Set_AFCDisableFlag();
173 1 msVDColorBurstHandler( VD_COLOR_BURST_HANDLER_RESET );
174 1 }
175
176 BYTE TV_GetIncValidChannel( BYTE ucCurChannel )
177 {
178 1 if(ucCurChannel>(MAX_CHANNEL_NUM-2))//g_TVChSetting.ucMaxValidChNum)
C51 COMPILER V8.18 TV_2IN1 09/29/2009 23:58:04 PAGE 4
179 1 ucCurChannel=0;
180 1 else
181 1 ucCurChannel++;
182 1
183 1 return ucCurChannel;
184 1 }
185
186 BYTE TV_GetDecValidChannel( BYTE ucCurChannel )
187 {
188 1 if(ucCurChannel==0)
189 1 ucCurChannel=(MAX_CHANNEL_NUM-2);//g_TVChSetting.ucMaxValidChNum;
190 1 else
191 1 ucCurChannel--;
192 1
193 1 return ucCurChannel;
194 1 }
195
196 BYTE SearchTVNoSkipChannel(BYTE channel,BOOL Inc)
197 {
198 1 BYTE BkChannel=channel;
199 1 BYTE temp;
200 1
201 1 do
202 1 {
203 2 if(Inc)
204 2 channel=TV_GetIncValidChannel(channel);
205 2 else
206 2 channel=TV_GetDecValidChannel(channel);
207 2 NVRam_ReadByte((nvrChanneAddr(channel)+MISCOFFSETADDR),&temp);
208 2 if((temp&NotSkipThisNum)||channel==g_TVChSetting.ucCurChannelNO)
209 2 break;
210 2 }while(BkChannel!=channel);
211 1
212 1 return channel;
213 1 }
214
215
216 void SaveChannelData( BYTE chIdx, StuChannelData* pChData )
217 {
218 1 //printf("nvrChanneAddr(chIdx)====%x", nvrChanneAddr(chIdx));
219 1 //printf("SIZE_TV_CHANNEL_INFO===%x", SIZE_TV_CHANNEL_INFO);
220 1 rmBurstWriteBytes( nvrChanneAddr(chIdx), (BYTE *)pChData, SIZE_TV_CHANNEL_INFO);
221 1 }
222
223 void InitChannelData( BYTE ucChIdx, StuChannelData* pChData)
224 {
225 1 pChData->wFreq = ((WORD)55.25*TN_FREQ_UNIT)+((WORD)(ucChIdx%100)*8*TN_FREQ_UNIT);
226 1 pChData->ucChannelMisc=0;//default color sys auto
227 1 pChData->ucChannelMisc =TV_SOUND_I|DoAFCFlag;
228 1 }
229
230 void ResetChannels(BYTE ucMinCh, BYTE ucMaxCh)
231 {
232 1 BYTE i;
233 1 StuChannelData ChannelBff;
234 1
235 1 i = ucMinCh;
236 1 Delay1ms(100);
237 1 do
238 1 {
239 2 WatchDogClear();
240 2 //Delay1ms(100);
C51 COMPILER V8.18 TV_2IN1 09/29/2009 23:58:04 PAGE 5
241 2 InitChannelData( i, &ChannelBff);
242 2 SaveChannelData( i, &ChannelBff );
243 2 } while((i++) != ucMaxCh); // while
244 1 }
245
246 void ChannelScanInit(void)
247 {
248 1 devAudioWrite(0);
249 1 //msFPLLCtl( FPLL_TUNE_LINE_ONLY );
250 1 g_ucOsdCounter = 0;
251 1 Set_AFCDisableFlag();
252 1 }
253
254 void InitVDBeforeSearchStart(void)
255 {
256 1 g_VdInfo.ucVideoSystem = SIG_NONE;
257 1 g_InOutCtl.bInterlace = 1;
258 1
259 1 if( IsVideoPortInUse())
260 1 {
261 2 // For TV snow
262 2 #if( TV_SYSTEM == TV_NTSC )
msVDSetupMode( VD_FSC_3579, SIG_NTSC );
#else
265 2 msVDSetupMode( VD_FSC_4433|VD_VSYNC_50HZ, SIG_PAL );
266 2 #endif
267 2 }
268 1
269 1 SetOutputTimingAndWindow( OUTPUT_SNOW );
270 1
271 1 msSetBlueScreen( _DISABLE, FR_BLACK);
272 1 }
273
274 WORD g_wTVAutoScan_LastVTotal;
275 void TV_ChannelAutoScanInit(void)
276 {
277 1 BYTE uctemp;
278 1 ChannelScanInit(); //for auto scan
279 1
280 1 devSetSWF(TV_SOUND_I);
281 1
282 1 g_ucTVChannelAutoScanCount = 0; // select start channel
283 1 chData.wFreq = TN_FREQMIN;//TN_FREQMIN;
284 1 g_bTVAutoScanChannelEnable=TRUE;
285 1
286 1 uctemp=((chData.ucChannelMisc&SoundSysMask)%TV_SOUND_NUMS);
287 1 //printf("uctemp===%d", uctemp);
288 1 //chData.ucChannelMisc=0;//default color sys auto
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -