📄 scaler.lst
字号:
IIC_Tx(SCALER_ADDR);
IIC_Tx(addr1);
for(i=0; i<16; i++){
ch = p[addr2 + i];
IIC_Tx(ch);
}
IIC_Stop();
}
#endif
480 /*==========================================
481 ==========================================*/
482 void SetADC_Phase(void)
483 {
484 1 WriteIIC563(0x0d9,FuncBuf[pPHASE]);
C51 COMPILER V7.06 SCALER 10/16/2007 19:09:01 PAGE 9
485 1 }
486 /*==========================================
487 ==========================================*/
488 /*
489 Byte Check_HFreqRange(void)
490 {
491 //first priority
492 if((H_SYNC > H_OverMuteScreenLimit)||(H_SYNC < H_UnderMuteScreenLimit))
493 return OverRangeMuteScreen;
494 //if((H_SYNC > H_OverNormalDisplayLimit)||(H_SYNC < H_UnderNormalDisplayLimit))
495 //return OverRangeWithCanDisplay;
496 return Within_range;
497 }
498 */
499 /*==========================================
500 ==========================================*/
501 /*
502 Byte Check_VFreqRange(void)
503 {
504 //first priority
505 if((V_SYNC > V_OverMuteScreenLimit)||(V_SYNC < V_UnderMuteScreenLimit))
506 return OverRangeMuteScreen;
507
508 // y050818,Eason
509 // if (Hresolution==PanelWidth&& Vresolution==PanelHeight &&abs(V_SYNC-850)<10){
510 // return OverRangeMuteScreen;
511 // }else
512 // if((V_SYNC > V_OverNormalDisplayLimit)||(V_SYNC < V_UnderNormalDisplayLimit))
513 // return OverRangeWithCanDisplay;
514
515 return Within_range;
516 }
517 */
518 /*==========================================
519 ==========================================*/
520 /*
521 Byte Check_PixelRange(Byte Pixel)
522 {
523 //first priority
524 if((Pixel > MaxPixelClock)||(Hresolution> Rel_OverMuteScreenLimit))
525 return OverRangeMuteScreen;
526 //if(Hresolution> Rel_OverNormalDisplayLimit)
527 //return OverRangeWithCanDisplay;
528 return Within_range;
529 }
530 */
531 /*==========================================
532 ==========================================*/
533 /*
534 void CheckFreqRange(Byte Pixel)
535 {
536 if(Check_HFreqRange()==OverRangeMuteScreen||Check_VFreqRange()==OverRangeMuteScreen||Check_PixelRange(Pix
-el)==OverRangeMuteScreen){
537 OutOfRange=OverRangeMuteScreen;
538 return;
539 }
540 //if(Check_HFreqRange()==OverRangeWithCanDisplay||Check_VFreqRange()==OverRangeWithCanDisplay||Check_Pixe
-lRange(Pixel)==OverRangeWithCanDisplay){
541 //OutOfRange=OverRangeWithCanDisplay;
542 //return;
543 //}
544 OutOfRange=Within_range;
C51 COMPILER V7.06 SCALER 10/16/2007 19:09:01 PAGE 10
545 }
546 */
547 /*==========================================
548 ==========================================*/
549 void SetScaler(void)
550 {
551 1 unsigned char temp154,ch;
552 1 unsigned short DispActiveHeight,dstVtotal,DV_HFreq,dstHtotal;
553 1 unsigned long dclk;
554 1 //,old_ratio,new_ratio,delta;//,i
555 1 float temp;
556 1 //xdata unsigned short Hr;
557 1
558 1 if(SyncMode < 3){ //y50316 error setting in DVI mdeo kevin
559 2 ch = ReadIIC563(0x020);
560 2 if(ReadIIC563(0x19a) & BIT_2){
561 3 // Interlance = 1; //kevin
562 3 Interlance = 0; //1280*1024 soft power Off/On abnormal
563 3 // WriteIIC563(0x020,ch|BIT_2); //1280*1024 soft power Off/On abnormal
564 3 }else{
565 3 Interlance = 0;
566 3 WriteIIC563(0x020,ch);
567 3 }
568 2 Interlance = 0;
569 2 }
570 1
571 1 if(SyncMode != 3){
572 2 SetHP();
573 2 SetVP();
574 2 }
575 1 // H_Act = H_ActiveTab[ResolutionPtr];
576 1 if(Interlance){
577 2 WriteWordIIC563(0x032,Vresolution); // Capture V_Active
578 2 }else{
579 2 WriteWordIIC563(0x032,Vresolution); // Capture V_Active
580 2 }
581 1 WriteWordIIC563(0x036,Hresolution); // Capture H_Active
582 1 WriteWordIIC563(0x175,PanelWidth); // Display H_Active
583 1
584 1 dclk = (unsigned long)PanelHeight *VTotal ;// / Vresolution) * V_SYNC * PanelTypHTotal / 10; //Hz
585 1 dclk = (unsigned long)dclk / Vresolution;//) * V_SYNC * PanelTypHTotal / 10; //Hz
586 1 dclk = (unsigned long)dclk * V_SYNC;// * PanelTypHTotal / 10; //Hz
587 1 dclk = (unsigned long)dclk * PanelMinHTotal;// / 10; //Hz
588 1 dclk = (unsigned long)dclk / 10; //Hz
589 1 if(Interlance){
590 2 dclk = dclk*2;
591 2 }
592 1 DispActiveHeight = PanelHeight; // set the vertical active height to the Panel Height
593 1
594 1 dstHtotal = PanelMinHTotal;
595 1 // calculate dst vtotal
596 1 dstVtotal = ((((unsigned long)VTotal * DispActiveHeight ) << 4) / Vresolution + 8)>> 4;
597 1 if(dclk < PanelMinPClk){
598 2 dstHtotal = PanelTypHTotal;
599 2 dclk = ((unsigned long)dstHtotal * dstVtotal * V_SYNC + 5) / 10;
600 2 }else if(dclk > PanelMaxPClk){
601 2 dstHtotal = PanelLowHTotal;
602 2 dclk = PanelMaxPClk;
603 2 }
604 1 if(dstVtotal < PanelMinVTotal)
605 1 {
606 2 dstVtotal = PanelMinVTotal;
C51 COMPILER V7.06 SCALER 10/16/2007 19:09:01 PAGE 11
607 2 dstHtotal = PanelMinHTotal;
608 2 dclk = ((unsigned long)PanelMinHTotal * dstVtotal * V_SYNC + 5) / 10;
609 2 DV_HFreq = dclk / PanelMinHTotal / 100;
610 2 }else
611 1 DV_HFreq = (unsigned short)((unsigned long)dstVtotal * V_SYNC/1000);
612 1 if(SyncMode<3)
613 1 {
614 2 WriteIIC563(0x0f5,ReadIIC563(0x0f5) & (~BIT_0)); // Disable SSC_EN
615 2 temp154 = ReadIIC563(0x154);
616 2 WriteIIC563(0x154,temp154 & 0xfc); //Normal display
617 2 temp = ((float)dstHtotal-0.1) * PanelHeight * 4096 / H_Counter / Vresolution;
618 2 dclk = (unsigned long)(temp * 12000000);
619 2 }
620 1 Sleep(80);
621 1 //SetDPLL(dclk);
622 1 SetDPLL(33200000);
623 1 //SetDPLL(30000000);
624 1 /*
625 1 if((FuncBuf[pVIDEOSOURCE]==SourceDVI) && (ReadIIC563(0x19a) & BIT_3) ==0x00)
626 1 {
627 1 Hr = ReadWordIIC563(0x184);
628 1 dstHtotal = ReadWordIIC563(0x182);
629 1 old_ratio = ReadWordIIC563(0x0f3);
630 1 old_ratio <<=8;
631 1 ch = ReadIIC563(0x0f2);
632 1 old_ratio += ch;
633 1 delta = old_ratio * Hr / dstHtotal / PanelHeight;
634 1 new_ratio = old_ratio - delta;
635 1 WriteIIC563(0x0f2,(unsigned char)new_ratio);
636 1 WriteIIC563(0x0f3,(unsigned char)(new_ratio >> 8));
637 1 WriteIIC563(0x0f4,(unsigned char)(new_ratio >> 16));
638 1 WriteWordIIC563(0x15e,dstHtotal-1);
639 1 WriteIIC563(0x150, ReadIIC563(0x150)&0xdf);
640 1 }
641 1 */
642 1 /*
643 1 Hr = ReadIIC563(0x184)+(ReadIIC563(0x185)*256);
644 1 if(Hr < 0x80)
645 1 {
646 1 temp = (float)dclk * (abs(0x80-Hr));
647 1 temp2 = temp / ((unsigned long)PanelHeight*dstHtotal);
648 1 dclk += temp2;
649 1 SetDPLL(dclk);
650 1 Sleep(80);
651 1 }
652 1 else if (Hr > (PanelHeight - 0x80))
653 1 {
654 1 temp = (float)dclk * (abs(Hr-0x380));
655 1 temp2 = temp / ((unsigned long)PanelHeight*dstHtotal);
656 1 dclk -= temp2;
657 1 SetDPLL(dclk);
658 1 Sleep(80);
659 1 }
660 1 */
661 1 #if Panel_Spread_Spect_En == 0xff
662 1 WriteIIC563(0x0f5,ReadIIC563(0x0f5)|BIT_0);
663 1 #endif
664 1 WriteIIC563(0x154,temp154);
665 1 if(!DetectBacklight()){
666 2 WriteIIC563(0x154,0x02);
667 2 }
668 1 WriteWordIIC563(0x15b,dstVtotal); // Display Vtotal
C51 COMPILER V7.06 SCALER 10/16/2007 19:09:01 PAGE 12
669 1 if(dstHtotal < PanelMinHTotal){ //y50819 for 2 msg display same time
670 2 dstHtotal = PanelMinHTotal;
671 2 }
672 1 WriteWordIIC563(0x15e,dstHtotal); // Display Htotal
673 1 }
674
675 void SetADC_PLL(void)
676 {
677 1 Byte code DpllSeqTab[4]={100,50,20,0};
678 1 unsigned long PixelRate,LineCounter;
679 1 Byte ch,k;
680 1 float temp;
681 1
682 1 PixelRate = ((unsigned long)FuncBuf[pCLOCK] * H_SYNC)/10000;
683 1 ch = (unsigned char)PixelRate;
684 1 WriteIIC563(0x0d0,0x23);
685 1 //CheckFreqRange(ch);
686 1 //----------------------------------
687 1 if(ForceToBack == 0){
688 2 k = ReadIIC563(0x0d1);
689 2 k &= 0x03;
690 2 }else{
691 2 for(k=0;k<4;k++)
692 2 if(ch > DpllSeqTab[k])
693 2 break;
694 2 WriteIIC563(0x0d1,0x10+k);
695 2 }
696 1 WriteIIC563(0x0d6,0xc0);
697 1 WriteIIC563(0x0db,0x0c);
698 1 LineCounter = 4096;
699 1 ch = ReadIIC563(0x102);
700 1 WriteIIC563(0x102,ch|BIT_5);
701 1 Sleep(5);
702 1 WriteIIC563(0x102,ch);
703 1 if(ForceToBack != 0){
704 2 WriteIIC563(0x0d5,0x01);
705 2 H_Counter = 0;
706 2 if((FuncBuf[pVIDEOSOURCE] == SourceDVI) && (ReadIIC563(0x19a) & BIT_3) ==0x00)
707 2 {
708 3 PixelRate = ReadWordIIC563(0x19b) & 0x1fff;
709 3 if((PixelRate == 0x1fff)||(PixelRate == 0))
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -