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