📄 v46x_panel.lst
字号:
209 4
210 4 // I2C_WriteByte(V46X_WRID, 0x1A, 0x40); // Turn ON Screen;
211 4 return _Color;
212 4 }
213 3 }
214 2
215 2 if ( ColorEN&0x4 )
216 2 V46X_ColorSystem(SECAM);
217 2 }
218 1 else
219 1 {
220 2 V46X_ColorSystem(NTSC);
221 2 }
222 1
223 1 // I2C_WriteByte(V46X_WRID, 0x1A, 0x40); // Turn ON Screen;
224 1 return _Color ;
225 1 }
226
227 unsigned char V46X_Detect_ColorSystem_AV()
228 {
229 1 unsigned char r3A,r3C;
230 1
231 1 r3A = CVD1_ReadWrite(R_TYPE, 0x3A, 0x00);
232 1 r3C = CVD1_ReadWrite(R_TYPE, 0x3C, 0x00);
233 1
234 1 if ( r3A&0x1 ) // No Signal
235 1 return _Color;
236 1
237 1 while (1)
238 1 {
239 2 if ((r3C&0x4) && _Color != PAL )
C51 COMPILER V7.50 V46X_PANEL 12/14/2006 10:36:49 PAGE 5
240 2 break;
241 2 if ( (r3C&0x4)==0 && _Color != NTSC )
242 2 break;
243 2 if ( !V46X_If_CorrectCS() )
244 2 break;
245 2 return _Color;
246 2 }
247 1
248 1 /*
249 1 if ( r3A&0x1 ) // No Signal
250 1 return _Color;
251 1 if ( (r3C&0x4) && _Color == PAL )
252 1 return _Color;
253 1 if ( (r3C&0x4)==0 && _Color == NTSC )
254 1 return _Color;
255 1
256 1 _Delay(500);
257 1 r3A = CVD1_ReadWrite(R_TYPE, 0x3A, 0x00);
258 1 r3C = CVD1_ReadWrite(R_TYPE, 0x3C, 0x00);
259 1
260 1 if ( r3A&0x1 ) // No Signal
261 1 return _Color;
262 1 if ( (r3C&0x4) && _Color == PAL )
263 1 return _Color;
264 1 if ( (r3C&0x4)==0 && _Color == NTSC )
265 1 return _Color;
266 1
267 1 _Delay(500);
268 1 r3A = CVD1_ReadWrite(R_TYPE, 0x3A, 0x00);
269 1 r3C = CVD1_ReadWrite(R_TYPE, 0x3C, 0x00);
270 1
271 1
272 1 if ( r3A&0x1 ) // No Signal
273 1 return _Color;
274 1 if ( (r3C&0x4) && _Color == PAL )
275 1 return _Color;
276 1 if ( (r3C&0x4)==0 && _Color == NTSC )
277 1 return _Color;
278 1
279 1 */
280 1 I2C_WriteByte(V46X_WRID, 0x1A, 0x80); // Turn OFF Screen;
281 1
282 1 _Delay(60000);
283 1 _Delay(60000);
284 1
285 1 r3A = CVD1_ReadWrite(R_TYPE, 0x3A, 0x00);
286 1 r3C = CVD1_ReadWrite(R_TYPE, 0x3C, 0x00);
287 1
288 1 if ( r3A&0x1 ) // No Signal
289 1 return _Color;
290 1
291 1 if ( r3C&0x4 )
292 1 {
293 2 V46X_Set_ScanLines(S625);
294 2 V46X_ColorSystem(PAL);
295 2 }
296 1 else
297 1 {
298 2 V46X_Set_ScanLines(S525);
299 2 V46X_ColorSystem(NTSC);
300 2 }
301 1
C51 COMPILER V7.50 V46X_PANEL 12/14/2006 10:36:49 PAGE 6
302 1 // I2C_WriteByte(V46X_WRID, 0x1A, 0x40); // Turn ON Screen;
303 1 return _Color;
304 1 }
305
306 void V46X_Set_ScanLines(unsigned char scan)
307 {
308 1 unsigned char R00;
309 1
310 1 _Scan = scan;
311 1
312 1 R00 = CVD1_ReadWrite(R_TYPE, 0x00, 0x00);
313 1 if ( _Scan )
314 1 R00 = R00 | 0x30;
315 1 else
316 1 R00 = R00 & 0xCF;
317 1 CVD1_ReadWrite(W_TYPE, 0x00, R00);
318 1
319 1 CVD1_ReadWrite(W_TYPE, 0x3F, 0x01);
320 1 CVD1_ReadWrite(W_TYPE, 0x3F, 0x00);
321 1
322 1 I2C_Write(V46X_WRID, 0x08, 0x03, &TCON_Scaler[_Screen][_Scan][0]);
323 1 I2C_Write(V46X_WRID, 0x38, 0x28, &TCON_Scaler[_Screen][_Scan][3]);
324 1
325 1 _Delay(20000);
326 1 }
327
328 void V46X_Detect_ScanLines()
329 {
330 1 unsigned char r3A,r3C;
331 1
332 1 r3A = CVD1_ReadWrite(R_TYPE, 0x3A, 0x00);
333 1 r3C = CVD1_ReadWrite(R_TYPE, 0x3C, 0x00);
334 1
335 1 if ( r3A&0x1 ) // No Signal
336 1 return ;
337 1 if ( (r3C&0x4)==4 && _Scan == S625 )
338 1 return ;
339 1 if ( (r3C&0x4)==0 && _Scan == S525 )
340 1 return ;
341 1
342 1 I2C_WriteByte(V46X_WRID, 0x1A, 0x80);
343 1
344 1 if ( r3C&0x4 )
345 1 V46X_Set_ScanLines(S625);
346 1 else
347 1 V46X_Set_ScanLines(S525);
348 1
349 1 _Delay(20000);
350 1 }
351
352 bit V46X_If_CorrectCS()
353 {
354 1 unsigned char r3A,r3C;
355 1
356 1 r3A = CVD1_ReadWrite(R_TYPE, 0x3A, 0x00);
357 1 r3C = CVD1_ReadWrite(R_TYPE, 0x3C, 0x00);
358 1
359 1 /*
360 1 if ( _Color == SECAM )
361 1 {
362 1 if ( (r3A&0x8) == 0x08 && (r3C&0x7) == 0x6 ) // Chroma Locked
363 1 return 1; // and In correct color system
C51 COMPILER V7.50 V46X_PANEL 12/14/2006 10:36:49 PAGE 7
364 1 else
365 1 return 0;
366 1 }
367 1 */
368 1 if ( (r3A&0x8) == 0x08 && (r3C&0x3) == (_VStatus[_Color]&0x3) ) // Chroma Locked
369 1 return 1; // and In correct color system
370 1 else
371 1 return 0;
372 1 }
373
374 void V46X_Change_Mode(unsigned char video_source, unsigned char color_system,
375 unsigned char screen_mode )
376 {
377 1 unsigned char i;
378 1
379 1 _Source = video_source;
380 1 _Color = color_system;
381 1 _Screen = screen_mode;
382 1
383 1 I2C_WriteByte(V46X_WRID, 0x1A, 0x80); //Turn OFF Screen;
384 1
385 1 I2C_WriteByte(V46X_WRID, 0x00, 0x60);
386 1 I2C_WriteByte(V46X_WRID, 0x01, 0x01);
387 1 I2C_WriteByte(V46X_WRID, 0x05, 0x00);
388 1
389 1 I2C_Write(V46X_WRID, 0x08, 0x03, &TCON_Scaler[_Screen][_Scan][0]);
390 1 I2C_Write(V46X_WRID, 0x38, 0x28, &TCON_Scaler[_Screen][_Scan][3]);
391 1
392 1 for (i=0; i<9; i++)
393 1 CVD1_ReadWrite(W_TYPE, VideoSUR_Addr[i], VideoSUR_Data[_Source][i]);
394 1
395 1 if ( _Source == SVIDEO1 || _Source == SVIDEO2 )
396 1 i = VideoSTD_Data[_Color][0] | 0x1;
397 1 else
398 1 i = VideoSTD_Data[_Color][0];
399 1
400 1 if ( _Scan == S625 )
401 1 i = i | 0x30;
402 1 else
403 1 i = i & 0xCF;
404 1
405 1 CVD1_ReadWrite(W_TYPE, 0x00, i);
406 1
407 1 for (i=1; i<19; i++)
408 1 CVD1_ReadWrite(W_TYPE, VideoSTD_Addr[i], VideoSTD_Data[_Color][i]);
409 1
410 1 _Delay(60000);
411 1 // I2C_WriteByte(V46X_WRID, 0x1A, 0x40); //Turn ON Screen;
412 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 1620 ----
CONSTANT SIZE = 1687 ----
XDATA SIZE = 22 11
PDATA SIZE = ---- ----
DATA SIZE = ---- ----
IDATA SIZE = ---- ----
BIT SIZE = ---- 2
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -