📄 scaler.lst
字号:
713 2 if((FuncBuf[pVIDEOSOURCE] == SourceDVI) && (ReadIIC563(0x19a) & BIT_3) ==0x00)
714 2 {
715 3 PixelRate = ReadWordIIC563(0x19b) & 0x1fff;
716 3 if((PixelRate == 0x1fff)||(PixelRate == 0))
717 3 H_SYNC_Temp = 0xffff;
718 3 else
719 3 H_Counter = PixelRate * 512;
720 3 }
721 2 else
722 2 {
723 3 LocalTimer = 25;
724 3 while(LocalTimer > 0){
725 4 ch = ReadIIC563(0x0df) & 0x3f;
726 4 PixelRate = ch;
727 4 PixelRate <<= 8;
728 4 ch = ReadIIC563(0x0de);
729 4 PixelRate += ch;
730 4 PixelRate <<= 8;
C51 COMPILER V7.06 SCALER 12/11/2007 11:28:43 PAGE 13
731 4 ch = ReadIIC563(0x0dd);
732 4 PixelRate += ch;
733 4 if(abs(PixelRate - H_Counter) > 2){
734 5 H_Counter = PixelRate;
735 5 LocalTimer = 25;
736 5 }
737 4 if(DetectBacklight()) //waiting for pll stable
738 4 break;
739 4 }
740 3 H_Counter = PixelRate;
741 3 }
742 2 temp = ((float)FuncBuf[pCLOCK] * 536870912) / PixelRate;
743 2 PixelRate = temp;
744 2 for(k; k>0; k--)
745 2 PixelRate <<= 1;
746 2 WriteIIC563(0x0d2,(unsigned char)PixelRate);
747 2 WriteIIC563(0x0d3,(unsigned char)(PixelRate>>8));
748 2 WriteIIC563(0x0d4,(unsigned char)(PixelRate>>16));
749 2 }
750 1 WriteIIC563(0x0d7,(Byte)FuncBuf[pCLOCK]);
751 1 WriteIIC563(0x0d8,(Byte)(FuncBuf[pCLOCK]>>8));
752 1 if((SyncMode == 1)||(SyncMode == 2)||(SyncMode == 5)||(SyncMode == 6)){ //H+V SOG
753 2 WriteIIC563(0xd5,0x09);
754 2 }
755 1 else{
756 2 #if 0
if((HV_Pol & BIT_4) == 0)
WriteIIC563(0x0d5,0x03&(~BIT_3));
else
WriteIIC563(0x0d5,0x03|BIT_3);
#else
762 2 WriteIIC563(0x0d5,0x0b);
763 2 #endif
764 2 }
765 1 }
766
767 void SetDPLL(unsigned long dclk)
768 {
769 1 Byte i;
770 1 unsigned long temp;
771 1 unsigned long code DpllTab[4]={80000000,40000000,20000000,0}; //050428,Eason
772 1 for(i=0;i<4;i++)
773 1 if(dclk > DpllTab[i])
774 1 break;
775 1 WriteIIC563(0x0f1,0x10+i);
776 1 if(PanelTwoPixelPerClk == 1) //Jacky 20050107
777 1 WriteIIC563(0x1fb,i * 2);
778 1 else
779 1 WriteIIC563(0x1fb,i & 0xFE );
780 1 switch(i)
781 1 {
782 2 case 0:
783 2 temp = ((float)dclk / 1000) * 131072 / REFCLK;
784 2 break;
785 2 case 1:
786 2 temp = ((float)dclk / 1000) * 131072 / REFCLK * 2;
787 2 break;
788 2 case 2:
789 2 temp = ((float)dclk / 1000) * 131072 / REFCLK * 4;
790 2 break;
791 2 case 3:
792 2 temp = ((float)dclk / 1000) * 131072 / REFCLK * 8;
C51 COMPILER V7.06 SCALER 12/11/2007 11:28:43 PAGE 14
793 2 break;
794 2 };
795 1 WriteIIC563(0x0f2,(unsigned char)temp);
796 1 WriteIIC563(0x0f3,(unsigned char)(temp >> 8));
797 1 WriteIIC563(0x0f4,(unsigned char)(temp >> 16));
798 1 WriteIIC563(0x0f0,0x03);
799 1 }
800 void SetHP(void)
801 {
802 1 // Horizontal Start
803 1 WriteWordIIC563(0x034,FuncBuf[pHPOSITION]);
804 1 }
805 /*==========================================
806 ==========================================*/
807 void SetVP(void)
808 {
809 1 // Vertical Start
810 1 if(Interlance){
811 2 WriteWordIIC563(0x030,FuncBuf[pVPOSITION]);
812 2 if(V_SYNC < 550)
813 2 WriteWordIIC563(0x02e,FuncBuf[pVPOSITION]-1);
814 2 else
815 2 WriteWordIIC563(0x02e,FuncBuf[pVPOSITION]);
816 2 }else
817 1 // WriteWordIIC563(0x02e,0x0050);
818 1 WriteWordIIC563(0x02e,FuncBuf[pVPOSITION]);
819 1 }
820 /*==========================================
821 ==========================================*/
822 /*
823 void SetSharpness(void)
824 {
825 Word code H_Sharp[]={
826 0x1f,0x1e,0x1d,0x1c,0x1b,0x1a,0x19,0x18,
827 0x17,0x16,0x15,0x14,0x13,0x12,0x11,0x10,
828 0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07,
829 0x08,0x09,0x0a,0x0b,0x0c,0x0d,0x0e,0x0f,
830 };
831 WriteIIC563(0x060,H_Sharp[FuncBuf[pSHARPNESS]]);
832 WriteIIC563(0x066,FuncBuf[pSHARPNESS]/4);
833 }
834 */
835 /*==========================================
836 ==========================================*/
837 void SetBrightness(void)
838 {
839 1 /*
840 1 unsigned short value;
841 1
842 1 #define BACKLIGHT_50 ((maxBACKLIGHT-minBACKLIGHT)/2+minBACKLIGHT)
843 1
844 1 if(FuncBuf[pBRIGHTNESS]>BACKLIGHT_50) // max=111, min=18, 50%=46+18=64
845 1 {
846 1 value = FuncBuf[pBRIGHTNESS];
847 1 value = (value-BACKLIGHT_50);
848 1
849 1 //PWM9_REG = 3*value/5+60; // evan modify date 060214
850 1
851 1 PWM9_REG = 7*value/5+60;
852 1
853 1 WriteIIC563(0x061,0);
854 1 WriteIIC563(0x062,0);
C51 COMPILER V7.06 SCALER 12/11/2007 11:28:43 PAGE 15
855 1 }
856 1 else
857 1 {
858 1 PWM9_REG = 60;
859 1 value = 0x100 - (BACKLIGHT_50-FuncBuf[pBRIGHTNESS])*25/40;
860 1 WriteIIC563(0x061,0);
861 1 WriteIIC563(0x062,(Byte)value);
862 1 }
863 1 */
864 1 }
865 /*==========================================
866 ==========================================*/
867 void SetContrast(void)
868 {
869 1 Word value,k;
870 1
871 1 FuncBuf[pRCOLOR]=0x7f;
872 1 FuncBuf[pGCOLOR]=0x7f;
873 1 FuncBuf[pBCOLOR]=0x7f;
874 1 FuncBuf[pCONTRAST]=0x7f;
875 1 #if ContrastBlock == sRGBGain
// WriteIIC563(0x3C0,0x7c);
// WriteIIC563(0x3C4,0x80);//level0);
// WriteIIC563(0x3C5,0x80);//level1);
// WriteIIC563(0x3C6,0x80);//level2);
sRGB(200,200,200);
#else
882 1
883 1 k = FuncBuf[pCONTRAST] + 100; //78 ---- 178
884 1 value = FuncBuf[pRCOLOR];
885 1 value = (unsigned short)value * k / 128;
886 1 WriteIIC563(0x061,0x0d);
887 1 WriteIIC563(0x063,value);
888 1 value = FuncBuf[pGCOLOR];
889 1 value = (unsigned short)value * k / 128;
890 1 WriteIIC563(0x061,0x0e);
891 1 WriteIIC563(0x063,value);
892 1 value = FuncBuf[pBCOLOR];
893 1 value = (unsigned short)value * k / 128;
894 1 WriteIIC563(0x061,0x0f);
895 1 WriteIIC563(0x063,value);
896 1
897 1 #endif
898 1 }
899 /*==========================================
900 ==========================================*/
901 void ForceToBackground(Byte color_r,Byte color_g,Byte color_b)
902 {
903 1 unsigned char temp;
904 1 if((ForceToBack == 0)||(FactMode!= 0)){
905 2 ForceToBack = 1;
906 2 WriteIIC563(0x16b,color_r);
907 2 WriteIIC563(0x16c,color_g);
908 2 WriteIIC563(0x16d,color_b);
909 2 temp = ReadIIC563(0x159);
910 2 //WriteIIC563(0x159,(temp&0xc0|0x07)); //RGB
911 2 WriteIIC563(0x159,(temp&0xc0)); //RGB
912 2 WriteIIC563(0x154,0x02);
913 2 }
914 1 }
915 /*==========================================
916 ==========================================*/
C51 COMPILER V7.06 SCALER 12/11/2007 11:28:43 PAGE 16
917 void SetDisplayNormal(void)
918 {
919 1 Byte ch;
920 1 if(SyncMode == 3)
921 1 {
922 2 ;
923 2 }
924 1 else
925 1 {
926 2 WriteIIC563(0x1a9,0x00);
927 2 ch = ReadIIC563(0x101);
928 2 WriteIIC563(0x101,ch|BIT_5); //chip warm reset
929 2 //Sleep(20);
930 2 WriteIIC563(0x101,ch); //chip warm reset
931 2 }
932 1 #if DVImode == DEmode
933 1 // Jacky 20040623 For DE mode scaler shut down
934 1 if(SyncMode == 3) //DVI
935 1 {
936 2 WriteIIC563(0x1a9,0x00); //disable IRQ interrupt
937 2 ch = ReadIIC563(0x196);
938 2 WriteIIC563(0x196,0x94);
939 2 Sleep(20);
940 2 WriteIIC563(0x196,ch&(~BIT_7));
941 2 }
942 1 #endif
943 1 // Sleep(80);
944 1 // Sleep(50);
945 1 //-------------------------
946 1 WriteIIC563(0x1ab,0x3f); //clear IRQ
947 1 WriteIIC563(0x1ac,0x1f);
948 1 WriteIIC563(0x1a9,0x3c);
949 1 LoadADC_Gain();
950 1 if(SyncMode == 3) //DVI
951 1 {
952 2 WriteIIC563(0x068,0x00);
953 2 WriteIIC563(0x06a,0x00);
954 2 }
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -