📄 scaler.lst
字号:
955 1 else
956 1 {
957 2 WriteIIC563(0x068,0x7a);
958 2 WriteIIC563(0x06a,0x92);
959 2 }
960 1 ///////////////////////////////////////////
961 1 WriteIIC563(0x101,0x00);
962 1 WriteIIC563(0x1b9,0x02);
963 1 WriteIIC563(0x1ef,0x00);
964 1 WriteIIC563(0x1f7,0x00);
965 1 WriteIIC563(0x204,0x00);
966 1 ///////////////////////////////////////////
967 1 ForceToBack = 0;
968 1 //WriteIIC563(0x159,(ReadIIC563(0x159)&0xc0|0x07)); //RGB
969 1 WriteIIC563(0x159,(ReadIIC563(0x159)&0xc0)); //RGB
970 1 if(ModePoint>7)
971 1 AutoTune();
972 1 WriteIIC563(0x154,0x00); //comeback to image
973 1 WriteIIC563(0x16e,0x07); //Graphic display enable
974 1 }
975 /*==========================================
976 ==========================================*/
977 void ScalerPowerUp(void)
978 {
C51 COMPILER V7.06 SCALER 12/11/2007 11:28:43 PAGE 17
979 1 unsigned char temp;
980 1 // PanelPowerOn();
981 1 // Sleep(PowerUpPanelTiming);
982 1 PowerDown = 0;
983 1 SetInterface();
984 1 temp = ReadIIC563(0x00e);
985 1 WriteIIC563(0x00e,temp | 0x07);
986 1 WriteIIC563(0x150,DisplayControl);
987 1 // SetBrightness();
988 1 LoadADC_Gain();
989 1 SetContrast();
990 1 #if PM
printf("Scaler PowerUp!!\r\n");
#endif
993 1
994 1 }
995 /*==========================================
996 ==========================================*/
997 #define Manual_offset 0 //AGN request y50527
998 void LoadADC_Gain(void)
999 {
1000 1 /*
1001 1 Byte Temp;
1002 1 FuncBuf[pROFFSET] = Read24C16(ep_ADC_R_Offset);
1003 1 Temp = FuncBuf[pROFFSET];
1004 1 WriteIIC563(0x003,Temp -Manual_offset);
1005 1 FuncBuf[pGOFFSET] = Read24C16(ep_ADC_G_Offset);
1006 1 Temp = FuncBuf[pGOFFSET];
1007 1 WriteIIC563(0x006,Temp -Manual_offset);
1008 1 FuncBuf[pBOFFSET] = Read24C16(ep_ADC_B_Offset);
1009 1 Temp = FuncBuf[pBOFFSET];
1010 1 WriteIIC563(0x009,Temp -Manual_offset);
1011 1 FuncBuf[pRADC] = Read24C16(ep_ADC_R_Gain);
1012 1 WriteIIC563(0x001,FuncBuf[pRADC]);
1013 1 FuncBuf[pGADC] = Read24C16(ep_ADC_G_Gain);
1014 1 WriteIIC563(0x004,FuncBuf[pGADC]);
1015 1 FuncBuf[pBADC] = Read24C16(ep_ADC_B_Gain);
1016 1 WriteIIC563(0x007,FuncBuf[pBADC]);
1017 1 //Set backend gain
1018 1 */
1019 1 #if ContrastBlock == sRGBGain
WriteIIC563(0x061,0x0d);
WriteIIC563(0x063,0xf0);
WriteIIC563(0x061,0x0e);
WriteIIC563(0x063,0xf0);
WriteIIC563(0x061,0x0f);
WriteIIC563(0x063,0xf0);
#endif
1027 1 }
1028 /*==========================================
1029 ==========================================*/
1030
1031 unsigned char Get_active_index(void)
1032 {
1033 1 unsigned char i,Resolution;
1034 1 Resolution=EEP_ModeMap[T_EEaddr_Resol]&0x7f;
1035 1 for(i=0;i<sizeof Active_Tab/7 ;i++){
1036 2 if(Resolution==Active_Tab[i].Resolution_tag){
1037 3 return i;
1038 3 }
1039 2 }
1040 1 return 0;
C51 COMPILER V7.06 SCALER 12/11/2007 11:28:43 PAGE 18
1041 1
1042 1 }
1043
1044 /*==========================================
1045 ==========================================*/
1046 void SetCaptureEnable(void)
1047 {
1048 1 unsigned char temp;
1049 1 temp = ReadIIC563(0x020);
1050 1 WriteIIC563(0x020,temp & (~BIT_0));
1051 1 WaitSetup(5);
1052 1 WaitSetup(5);
1053 1 temp = ReadIIC563(0x020);
1054 1 WriteIIC563(0x020,temp|BIT_0);
1055 1 }
1056 /*==========================================
1057 ==========================================*/
1058 void sRGB(Byte RedGain,Byte GreenGain,Byte BlueGain)
1059 {
1060 1 #define Saturation 50
1061 1 #define Tint 50
1062 1 xdata Byte i,j;
1063 1 xdata Word ss,hh;
1064 1 xdata short temp,gain[3];
1065 1 xdata short UserPrefContrast;
1066 1 code Byte arry[3][3]={
1067 1 {1,0,0},
1068 1 {0,1,0},
1069 1 {0,0,1}
1070 1 };
1071 1
1072 1 gain[0] = (Word)(RedGain*100)/255+30;
1073 1 gain[1] = (Word)(GreenGain*100)/255+30;
1074 1 gain[2] = (Word)(BlueGain*100)/255+30;
1075 1 ss = ((Word)Saturation * 256 + 50) / 100;
1076 1 hh = (((Word)Tint * 256 + 50) / 100) - 128;
1077 1 UserPrefContrast = 120; // for test only , 2004/04/13
1078 1
1079 1 for(i=0; i<3; i++)
1080 1 {
1081 2 WriteIIC563(0x1d0,((i * 2) + 0x31));
1082 2 for(j=0; j<3; j++)
1083 2 {
1084 3 temp = ((((long)(UserPrefContrast<<1)*((long)gain[i]<<5))+2048)>>12)*(long)arry[i][j];
1085 3 if(temp < 0)
1086 3 {
1087 4 temp = temp ^ 0xffff;
1088 4 temp +=1 ;
1089 4 temp |= 0xf400;
1090 4 }
1091 3 WriteWordIIC563((0x1d1+(j*2)),temp);
1092 3 }
1093 2 }
1094 1 WriteIIC563(0x1d0,0x3d);
1095 1 }
1096 #define Max_Video_VP 40
1097 Word code AvTable60[20][2]={
1098 0x055,0x01ED,
1099 0x053,0x0026,
1100 0x057,0x01b3,
1101 // 0x059,0x009f,
1102 // 0x05b,0x029a,
C51 COMPILER V7.06 SCALER 12/11/2007 11:28:43 PAGE 19
1103 0x059,0x002F,
1104 0x05b,0x02D2,
1105
1106 0x15b,0X031C,
1107 0x15e,0X03E6,
1108 0x15d,0X0006,
1109 0x160,0X0028,
1110 0x162,0X0025, //9
1111 0x166,0X0050,
1112 0x164,0X02BD,
1113 0x168,0X03B0,
1114 0x16f,0X000B, //d
1115 0x171,0X0364,
1116 0x175,0X0320,
1117 0x17a,0X0003,
1118 0x17c,0X0002,
1119 0x17e,0X0009,
1120 0x180,0X0000,
1121 };
1122 Word code AvTable50[20][2]={
1123 0x055,0x0000,
1124 0x053,0x0098,
1125 0x057,0x01B3,
1126 // 0x059,0x00ad,
1127 // 0x05b,0x028e,
1128 0x059,0x002f,
1129 0x05b,0x02CF,
1130
1131 0x15b,0x031c,
1132 0x15e,0x3e6,
1133 0x15d,0x0006,
1134 0x160,0x0028,
1135 //0x162,PanelVActiveStart,
1136 0x162,0x0025, //22
1137 0x166,0x004f,
1138 0x164,0x2BD,
1139 0x168,0x03b0,
1140 //0x16f,PanelVActiveStart,
1141 0x16f,0x000A, //d
1142 0x171,0x02E0,
1143 0x175,0x0325,
1144 0x17a,0x0046,
1145 0x17c,0x0026,
1146 0x17e,0x0069,
1147 0x180,PanelWidth,
1148 };
1149
1150 void SetScalerAVNTSC(void)
1151 {
1152 1 Byte i;
1153 1 // if(Video_50Hz)
1154 1 if(0)
1155 1 {//50Hz
1156 2 SetDPLL(26000000);
1157 2 for(i=0;i<20;i++)
1158 2 WriteWordIIC563(AvTable50[i][0],AvTable50[i][1]);
1159 2 }
1160 1 else
1161 1 {//60Hz
1162 2 SetDPLL(32300000);//(32500000);
1163 2 for(i=0;i<20;i++)
1164 2 WriteWordIIC563(AvTable60[i][0],AvTable60[i][1]);
C51 COMPILER V7.06 SCALER 12/11/2007 11:28:43 PAGE 20
1165 2 }
1166 1
1167 1 WriteIIC563(0x072,0x60); //Sync off //xxx
1168 1 WriteIIC563(0x154,0x00);
1169 1 WriteIIC563(0x041,0x13);
1170 1 //WriteIIC563(0x179,0x07);
1171 1 WriteWordIIC563(0x179,PanelMinHTotal);
1172 1 WriteIIC563(0x040,0x41); //auto detect on
1173 1 WriteIIC563(0x16e,0x47);
1174 1 Sleep(100);
1175 1 WriteIIC563(0x040,0x45); //auto detect off
1176 1 // WriteIIC563(0x102,0x01); //power down ADC
1177 1 WriteIIC563(0x102,0x00); //for OD power
1178 1 Sleep(100);
1179 1
1180 1 i = ReadIIC563(0x101);
1181 1 WriteIIC563(0x101,i |BIT_5); //chip warm reset
1182 1 //Sleep(20);
1183 1 WriteIIC563(0x101,i); //chip warm reset
1184 1
1185 1 WriteIIC563(0x101,0x40);
1186 1 WriteIIC563(0x1b9,0x02);
1187 1 WriteIIC563(0x1ef,0x04);
1188 1 // WriteIIC563(0x1f7,0xc0);
1189 1 WriteIIC563(0x204,0x00);
1190 1 WriteIIC563(0x16e,ReadIIC563(0x16e)|BIT_7);
1191 1
1192 1
1193 1 // add by Eason 070503
1194 1 WriteIIC563(0x023, ReadIIC563(0x023)|0x01); //enable video // video
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -