📄 modehandle.lst
字号:
251 3 }
252 2 ModePoint++;
253 2 CLRWDT = 0x55;
254 2 }
255 1 if(ModePoint >= ModeNum){
256 2 if((flag3 & BIT_2) != 0x00){
257 3 printf("user's mode\r\n");
258 3 }
259 2 SetUserMode();
260 2 }
261 1 LoadModeDependentSettings();
262 1 i = 0x106 + (ModePoint * 8);
263 1 i = Read24C16(i);
264 1 VP_Max = (unsigned char)(VTotal - V_ActiveTab[i] + 20);
265 1 if(VP_Max < VP_Start)
266 1 VP_Max = (unsigned char)VP_Start;
267 1 if((flag3 & BIT_2) != 0x00){
268 2 printf("HV_Pol= %x\r\n",(unsigned short)HV_Pol);
269 2 printf("H_SYNC= %d\r\n",H_SYNC);
270 2 printf("V_SYNC= %d\r\n",V_SYNC);
271 2 printf("VP_Max = %d\r\n",(unsigned short)VP_Max);
272 2 }
273 1 if((SyncMode == 2)||(SyncMode == 1))
274 1 WriteIIC_HW(Scaler_Addr,0x01,(0x58 | DT01));
275 1 else
276 1 WriteIIC_HW(Scaler_Addr,0x01,(0x48 | DT01));
277 1 SetADC_PLL();
278 1 if((flag3 & BIT_1) == 0){
279 2 SetScaler();
280 2 if(SyncMode != 3){
281 3 SetADC_Phase();
282 3 SetSharpness();
283 3 }
284 2 }
285 1 #if DVImode == DEmode
VP_Start = 0;
HP_Start = 0;
WriteWordIIC_HW(Scaler_Addr,0x14,VP_Start);
WriteWordIIC_HW(Scaler_Addr,0x18,HP_Start);
#else
291 1 if((SyncMode == 3) && ((PortD & BIT_2) != 0)) //DVI
292 1 AutoPosition();
293 1 #endif
294 1 }
295
296 void SetUserMode(void)
297 {
298 1 code unsigned short Vt_Tab[]={
299 1 500,600,700,768,850,950,1050,1080
300 1 };
301 1
302 1 code unsigned char UserTimeTab[]={
C51 COMPILER V7.50 MODEHANDLE 03/18/2008 22:04:55 PAGE 6
303 1 0x00,0x10,0x00,0x60,0x03,0x84,0x01,0x10, //720x400
304 1 0x00,0x10,0x00,0x50,0x06,0x80,0x02,0x10, //640x480
305 1 0x00,0x10,0x00,0x98,0x04,0x18,0x03,0x10, //800x600
306 1 0x00,0x10,0x00,0xe0,0x06,0xc0,0x0c,0x10, //1280x720
307 1 0x00,0x10,0x00,0xd0,0x05,0x40,0x05,0x10, //1024x768
308 1 0x00,0x10,0x00,0xd0,0x06,0x40,0x06,0x10, //1152x864
309 1 0x00,0x10,0x00,0xe0,0x06,0xc0,0x07,0x10, //1280x960
310 1 0x00,0x10,0x00,0xf8,0x06,0x98,0x08,0x10, //1280x1024
311 1 0x00,0x2e,0x01,0x30,0x08,0x70,0x09,0x10 //over (1600x1200)
312 1 };
313 1
314 1 unsigned short addr;
315 1 unsigned char i,j,k;
316 1 if((flag3 & BIT_2) != 0x00){
317 2 printf("Vtotal = %d\r\n",VTotal);
318 2 }
319 1 if((flag3 & BIT_6) != 0){
320 2 addr = VTotal << 1;
321 2 }
322 1 else{
323 2 addr = VTotal;
324 2 }
325 1 j = 8;
326 1 for(i=0; i<8; i++){
327 2 if(addr < Vt_Tab[i]){
328 3 j = i;
329 3 break;
330 3 }
331 2 }
332 1 j = j * 8;
333 1 ModePoint = Read24C16(0xd2);
334 1 ModePoint++;
335 1 if(ModePoint >= ModeNum){
336 2 ModePoint = UserModeSt - 1;
337 2 }
338 1 Write24C16(0xd2,ModePoint);
339 1 if((flag3 & BIT_2) != 0x00){
340 2 printf("UserModePoint = %d\r\n",(unsigned short)ModePoint);
341 2 }
342 1 addr = 0x100 + (ModePoint * 8);
343 1 for(i=0; i<8; i++){
344 2 k = UserTimeTab[j];
345 2 Write24C16(addr,k);
346 2 if((flag3 & BIT_2) != 0x00){
347 3 printf("Data %x = %x\r\n",(unsigned short)i,(unsigned short)k);
348 3 }
349 2 addr++;
350 2 j++;
351 2 }
352 1 addr = ModePoint * 4;
353 1 k = H_SYNC >> 8;
354 1 Write24C16(addr,k);
355 1 addr++;
356 1 k = H_SYNC;
357 1 Write24C16(addr,k);
358 1 addr++;
359 1 k = V_SYNC >> 8;
360 1 k |= HV_Pol;
361 1 Write24C16(addr,k);
362 1 addr++;
363 1 k = V_SYNC;
364 1 Write24C16(addr,k);
C51 COMPILER V7.50 MODEHANDLE 03/18/2008 22:04:55 PAGE 7
365 1 addr = 0x290 + (ModePoint << 1);
366 1 j = j - 4;
367 1 k = UserTimeTab[j];
368 1 Write24C16(addr,k);
369 1 addr++;
370 1 j++;
371 1 k = UserTimeTab[j];
372 1 Write24C16(addr,k);
373 1 }
374
375 void SyncSource(void)
376 {
377 1 unsigned char value;
378 1 if((flag1 & BIT_3) != 0){
379 2 if((PoSvTimer == 0)&&((PortC & BIT_0) != 0))
380 2 {
381 3 if((flag3 & BIT_0) == 0)
382 3 {
383 4 if(Read24C16(0xdc) == 0)
384 4 //Power saving flag 0 = no power saving, 1 = have power saving
385 4 {
386 5 PoSvTimer = 500;
387 5 }
388 4 else
389 4 {
390 5 PowerSaving();
391 5 }
392 4 }
393 3 else
394 3 {
395 4 OSD_OFF(); //Factory mode
396 4 PoSvTimer = 500;
397 4 value = ReadIIC_HW(Scaler_Addr,0x4d) & 0x1f;
398 4 value >>= 2;
399 4 if(++value > 7)
400 4 value = 0;
401 4 flag1 &= ~BIT_1; //Clear fource to background
402 4 ForceToBackground(value); //Set fource to background
403 4 }
404 3 }
405 2 #ifdef MoveAltOSD
406 2 else if(((PortD & BIT_5) != 0)&&(PoSvTimer < 400)&&((flag3 & BIT_0) == 0)){
407 3 if(PoSvTimer == 0)
408 3 {
409 4 ScalerPowerUp();
410 4 }
411 3 else
412 3 {
413 4 PoSvTimer = 500;
414 4 ShowDisconnector();
415 4 if((PortC & BIT_0) == 0)
416 4 {
417 5 BackLightOn();
418 5 }
419 4 }
420 3 return;
421 3 }
422 2 else if(((PortD & BIT_5) == 0)&&((flag2 & BIT_2) != 0)&&((flag3 & BIT_0) == 0))
423 2 {
424 3 flag1 &= ~BIT_3; //preset no sync
425 3 NoSync();
426 3 }
C51 COMPILER V7.50 MODEHANDLE 03/18/2008 22:04:55 PAGE 8
427 2 #endif
428 2 switch(SyncMode)
429 2 {
430 3 case 0x00: // H/V
431 3 value = MUTE_CTRL & 0x30;
432 3 if(value == 0x00)
433 3 { //no H,V; goto SOG
434 4 CheckSOG();
435 4 }
436 3 else if(value == 0x20)
437 3 { //no V; goto H+V
438 4 GoToCompositeSync();
439 4 }
440 3 break;
441 3 case 0x01: // H+V
442 3 value = MUTE_CTRL & 0x30;
443 3 if(value == 0x00)
444 3 { //no H,V; goto SOG
445 4 CheckSOG();
446 4 }
447 3 else if(value == 0x20)
448 3 { //no V; goto H/V
449 4 GoToSeparateSync();
450 4 }
451 3 break;
452 3 case 0x02: //SOG
453 3 GoToSeparateSync();
454 3 break;
455 3 case 0x03: //DVI
456 3 DIG_SEL();
457 3 HVI_REG = 0xE0; // HVI_REG
458 3 #if DVImode == DEmode
WriteIIC_HW(Scaler_Addr,0x12,0xb1);
#else
461 3 WriteIIC_HW(Scaler_Addr,0x12,0x81);
462 3 #endif
463 3 WriteIIC_HW(Scaler_Addr,0x86,0xc0);
464 3 WriteIIC_HW(Scaler_Addr,0x87,0xc0);
465 3 WriteIIC_HW(Scaler_Addr,0xd5,0x00);
466 3 WriteIIC_HW(Scaler_Addr,0xe5,0xc0);
467 3 WriteIIC_HW(Scaler_Addr,0xe6,0x03);
468 3 WriteIIC_HW(Scaler_Addr,0xf8,DTF8);
469 3 if(Use_TCON != 0){
470 4 WriteIIC_HW(Scaler_Addr,0xfe,0xc1);
471 4 }
472 3 else{
473 4 WriteIIC_HW(Scaler_Addr,0xfe,0xc0);
474 4 }
475 3 if((flag3 & BIT_2) != 0x00)
476 3 {
477 4 printf("DVI Input\r\n");
478 4 }
479 3 break;
480 3 }
481 2 Timer3 = 50;
482 2 while(Timer3 != 0)
483 2 {
484 3 CheckIRKey();
485 3 CheckKey();
486 3 CLRWDT = 0x55;
487 3 }
488 2 }
C51 COMPILER V7.50 MODEHANDLE 03/18/2008 22:04:55 PAGE 9
489 1 }
490
491 void GoToSeparateSync(void)
492 {
493 1 DIG_Off();
494 1 HVI_REG = 0xE0; // HVI_REG
495 1 WriteIIC_HW(Scaler_Addr,0x86,0xc0);
496 1 WriteIIC_HW(Scaler_Addr,0x87,0xc0);
497 1 WriteIIC_HW(Scaler_Addr,0xd5,0x00);
498 1 WriteIIC_HW(Scaler_Addr,0xe6,0x03);
499 1 WriteIIC_HW(Scaler_Addr,0xf8,DTF8);
500 1 if(Use_TCON != 0){
501 2 WriteIIC_HW(Scaler_Addr,0xfe,0xc1);
502 2 }
503 1 else{
504 2 WriteIIC_HW(Scaler_Addr,0xfe,0xc0);
505 2 }
506 1 SyncMode = 0;
507 1 if((flag3 & BIT_2) != 0x00){
508 2 printf("Separate Sync\r\n");
509 2 }
510 1 }
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -