📄 autoadj.i
字号:
void OSD_Y_Down(void); void SharpnessUp(void); void SharpnessDown(void); void RGB_Up(void); void RGB_Down(void); void OSD_TimerUp(void); void OSD_TimerDown(void); void ColorTempUp(void); void ColorTempDown(void); void LanguageUp(void); void LanguageDown(void); void ResetEEPROM(void); void SaturationUp(void); void SaturationDown(void); void TintUp(void); void TintDown(void); void SharpnessDown(void); void CH_SystemUp(void); void CH_SystemDown(void); void InverterUp(void); void InverterDown(void); void SourceSelect(void); #line 9 "SRC\AutoAdj.C" /0 #line 1 "SRC\MODEHANDLE.H" /0 void GetCounter(void); void CheckFreq(void); void GetMode(void); void SetUserMode(void); void SyncSource(void); void NoSync(void); void SetMinMax(void); void CheckModeChange(void); void GoToSeparateSync(void); void GoToCompositeSync(void); void CheckSOG(void); #line 10 "SRC\AutoAdj.C" /0 #line 1 "SRC\8051.H" /0 sfr ACC = 0xE0; sfr B = 0xF0; sfr PSW = 0xD0; sfr SP = 0x81; sfr DPL = 0x82; sfr DPH = 0x83; sfr P0 = 0x80; sfr P1 = 0x90; sfr P2 = 0xA0; sfr P3 = 0xB0; sfr IE = 0xA8; sfr IP = 0xB8; sfr PCON = 0x87; sfr TCON = 0x88; sfr TMOD = 0x89; sfr TL0 = 0x8A; sfr TL1 = 0x8B; sfr TH0 = 0x8C; sfr TH1 = 0x8D; sfr T2CON = 0xC8; sfr RCAP2L = 0xCA; sfr RCAP2H = 0xCB; sfr TL2 = 0xCC; sfr TH2 = 0xCD; sfr SCON = 0x98; sfr SBUF = 0x99; sbit CY = 0xD7; sbit AC = 0xD6; sbit F0 = 0xD5; sbit RS1 = 0xD4; sbit RS0 = 0xD3; sbit OV = 0xD2; sbit P = 0xD0; sbit TF1 = 0x8F; sbit TR1 = 0x8E; sbit TF0 = 0x8D; sbit TR0 = 0x8C; sbit IE1 = 0x8B; sbit IT1 = 0x8A; sbit IE0 = 0x89; sbit IT0 = 0x88; sbit TF2 = 0xCF; sbit EXF2 = 0xCE; sbit RCLK = 0xCD; sbit TCLK = 0xCC; sbit EXEN2 = 0xCB; sbit TR2 = 0xCA; sbit CT2 = 0xC9; sbit CPRL2 = 0xC8; sbit SM0 = 0x9F; sbit SM1 = 0x9E; sbit SM2 = 0x9D; sbit REN = 0x9C; sbit TB8 = 0x9B; sbit RB8 = 0x9A; sbit TI = 0x99; sbit RI = 0x98; sbit EA = 0xAF; sbit ET2 = 0xAD; sbit ES = 0xAC; sbit ET1 = 0xAB; sbit EX1 = 0xAA; sbit ET0 = 0xA9; sbit EX0 = 0xA8; sbit PT2 = 0xBD; sbit PS = 0xBC; sbit PT1 = 0xBB; sbit PX1 = 0xBA; sbit PT0 = 0xB9; sbit PX0 = 0xB8; sbit P00 = 0x80; sbit P01 = 0x81; sbit P02 = 0x82; sbit P03 = 0x83; sbit P04 = 0x84; sbit P05 = 0x85; sbit P06 = 0x86; sbit P07 = 0x87; sbit P10 = 0x90; sbit P11 = 0x91; sbit P12 = 0x92; sbit P13 = 0x93; sbit P14 = 0x94; sbit P15 = 0x95; sbit P16 = 0x96; sbit P17 = 0x97; sbit P20 = 0xA0; sbit P21 = 0xA1; sbit P22 = 0xA2; sbit P23 = 0xA3; sbit P24 = 0xA4; sbit P25 = 0xA5; sbit P26 = 0xA6; sbit P27 = 0xA7; sbit P30 = 0xB0; sbit P31 = 0xB1; sbit P32 = 0xB2; sbit P33 = 0xB3; sbit ISCL = 0xB4; sbit ISDA = 0xB5; sbit P36 = 0xB6; sbit P37 = 0xB7; #line 11 "SRC\AutoAdj.C" /0 #line 1 "SRC\SRGB.H" /0 int sine(unsigned char alpha); int cosine(unsigned char alpha); void product(int *first, int * second, int *result); void sRGB(void); #line 12 "SRC\AutoAdj.C" /0 #line 1 "SRC\ROM_MAP.H" /0 extern code unsigned char MCU_DataMap[]; extern code unsigned char DDC_Tab[]; #line 13 "SRC\AutoAdj.C" /0 #line 1 "SRC\SAA7114.H" /0 void SAA7114Init(void); void WritePageSAA7114(unsigned char addr1,unsigned char addr2); void CheckColorSystem(void); void CheckVideo(void); void SetVideoBrightness(void); void SetVideoContrast(void); void SetVideoSaturation(void); void SetVideoTint(void); void SetVideoSharpness(void); void SetAV_System(void); #line 14 "SRC\AutoAdj.C" /0 void AutoTune(void) { xdata unsigned short HP_Temp,VP_Temp,addr; if(H_SYNC_Temp == 0xffff) goto Error1; HP_Temp = HP_Start; VP_Temp = VP_Start; NonFullScreen = 0; flag2 &= ~0x01; AutoPosition(); if(H_SYNC_Temp == 0xffff) goto Error1; if((flag2 & 0x01) != 0x00){ if(NonFullScreen == 0){ goto Error1; } } AutoClock(); if(H_SYNC_Temp == 0xffff) goto Error1; if((flag2 & 0x01) != 0x00){ if(NonFullScreen == 0){ goto Error; } else{ flag2 &= ~0x01; AutoClockByPhase(1); } } else{ AutoClockByPhase(0); } if(H_SYNC_Temp == 0xffff) goto Error1; AutoPhaseFineTune(); if(H_SYNC_Temp == 0xffff) goto Error1; if((flag2 & 0x01) != 0x00) goto Error; AutoPosition(); if(H_SYNC_Temp == 0xffff) goto Error1; if(((flag2 & 0x01) != 0x00)&&(NonFullScreen == 1)){ if(ModePoint < 31){ addr = 0x101 + (ModePoint * 8); VP_Temp = MCU_DataMap[addr]; addr++; HP_Temp = MCU_DataMap[addr]; HP_Temp <<= 8; addr++; HP_Temp += MCU_DataMap[addr]; } HP_Start = HP_Temp; VP_Start = VP_Temp; SetHP(); SetVP(); flag2 &= ~0x01; } Error: if((flag2 & 0x01) != 0x00){ if(H_SYNC_Temp != 0xffff){ ForceToBackground(0); LoadModeDependentSettings(); SetADC_PLL(); SetADC_Phase(); SetScaler(); WriteIIC_HW(0xB0,0x95,0x00); SetDisplayNormal(); if((flag3 & 0x04) != 0x00){ printf("AutoTune fail\r\n"); } } } else{ SaveModeDependentSettings(); SetMinMax(); if((flag3 & 0x04) != 0x00){ printf("AutoTune OK\r\n"); } } Error1: RepeatTimer = 100; Repeat = 0xff; } void AutoPosition(void) { unsigned short temph,tempv; if((flag3 & 0x04) != 0x00){ printf("AutoPosition\r\n"); } WriteIIC_HW(0xB0,0x2E,HP_Min); WriteIIC_HW(0xB0,0x3C,0x00); WriteIIC_HW(0xB0,0x2F,0x30); WriteIIC_HW(0xB0,0x30,0x30); WriteIIC_HW(0xB0,0x31,0x30); CheckModeChange(); if((flag2 & 0x01) != 0) return; WriteIIC_HW(0xB0,0x1F,0x00); if(SyncMode == 3){ WriteIIC_HW(0xB0,0x1E,0x19); } else{ WriteIIC_HW(0xB0,0x1E,0x09); } Timer3 = 10; while(!(ReadIIC_HW(0xB0,0x1F) & 0x01) && Timer3 != 0){ CheckModeChange(); if((flag2 & 0x01) != 0) return; } if(Timer3 != 0){ tempv = ReadWordIIC_HW(0xB0,0x32) & 0x07ff; temph = ReadWordIIC_HW(0xB0,0x36) & 0x07ff; if((flag3 & 0x04) != 0x00){ printf("VP_Start = %d\r\n",tempv); printf("HP_Start = %d\r\n",temph); } if((tempv > 0xff) || (temph > (HTotal-H_Act))){ flag2 |= 0x01; NonFullScreen = 1; if((flag3 & 0x04) != 0x00){ printf("AutoPosition fail\r\n"); } } else{ HP_Start = temph; VP_Start = tempv; } } else{ flag2 |= 0x01; if((flag3 & 0x04) != 0x00){ printf("AutoPosition fail\r\n"); } } SetHP(); SetVP(); } void AutoClock(void) { unsigned char H_Difference,i,Compare,k; unsigned short PLL_Divider,V_Act; unsigned short H_Ref; if((flag2 & 0x01) != 0x00) return; if((flag3 & 0x04) != 0x00){ printf("AutoClock\r\n"); } V_Act = ReadWordIIC_HW(0xB0,0x34) & 0x07ff; if(VTotal > (V_Act + 190)){ flag2 |= 0x01; NonFullScreen = 1; if((flag3 & 0x04) != 0x00){ printf("Nono full screen V\r\n"); } return; } if((flag3 & 0x40) != 0){ V_Act <<= 1; } PLL_Divider = ReadWordIIC_HW(0xB0,0x38) & 0x07ff; if((flag3 & 0x04) != 0x00){ printf("V_Act = %d\r\n",V_Act); printf("H_Act = %d\r\n",PLL_Divider); } for(i=0; i<14; i++){ if(V_Act > V_ActiveTab[i]) H_Ref = V_Act - V_ActiveTab[i]; else H_Ref = V_ActiveTab[i] - V_Act; if(H_Ref < 5){ H_Ref = H_ActiveTab[i]; if((i == 1)&&(Read24C16(0xd3) != 0)) H_Ref = 640; if(PLL_Divider > H_Ref){ PLL_Divider = PLL_Divider - H_Ref; Compare = 0; } else{ PLL_Divider = H_Ref - PLL_Divider; Compare = 1; } if(PLL_Divider > (H_Ref >> 3)){ if((i == 2) && (Compare == 0)){ i = 11; H_Ref = 848; } } PLL_Divider = 0x106 + (ModePoint * 8); if(i != Read24C16(PLL_Divider)){ Write24C16(PLL_Divider,i); SetScaler(); } break; } } if((i == 14)||(V_Act < 340)){ flag2 |= 0x01; NonFullScreen = 1; if((flag3 & 0x04) != 0x00){ printf("Nono full screen V\r\n"); } return; } k = i; WriteWordIIC_HW(0xB0,0x3A,H_Ref); if(HTotal <= H_Ref){ HTotal = H_Ref + HP_Start; SetADC_PLL(); if((flag3 & 0x02) != 0){ flag2 |= 0x01; return; } } for(i=0; i<0x20; i++){ WriteIIC_HW(0xB0,0x1F,0x00); WriteIIC_HW(0xB0,0x1E,0x09); Timer3 = 10; while(!(ReadIIC_HW(0xB0,0x1F) & 0x01) && Timer3 != 0){ CheckModeChange(); if((flag2 & 0x01) != 0) return; } if(Timer3 == 0){ flag2 |= 0x01; return; } H_Act = ReadWordIIC_HW(0xB0,0x38) & 0x07ff; H_Difference = ReadIIC_HW(0xB0,0x1F); Compare = (H_Difference & 0x0C) >> 2; H_Difference = (H_Difference & 0xF0) >> 4; if((flag3 & 0x04) != 0x00){ printf("PLL_Divider = %d\r\n",PLL_Divider); printf("H_Act = %d\r\n",H_Act); printf("H_Difference = %d\r\n",(unsigned short)H_Difference); } if(Compare==0x01){ break; } if(Compare==0x00){ HTotal = HTotal + H_Difference; if(HTotal > 2048){ i = 0xff; break; } } if(Compare == 0x02){ HTotal = HTotal - H_Difference; if(HTotal < H_Ref){ i = 0xff; break; } } SetADC_PLL(); if((flag3 & 0x02) != 0){ flag2 |= 0x01; return; } } if(i == 0xff){ NonFullScreen = 1; flag2 |= 0x01; if((flag3 & 0x04) != 0x00){ printf("Nono full screen H\r\n"); } } else{ HTotal = (HTotal + 2) & 0xfffc; #line 306 "SRC\AutoAdj.C" /1 #line 308 "SRC\AutoAdj.C" /0 SetADC_PLL(); if((flag3 & 0x02) != 0){ flag2 |= 0x01; return; } if((flag3 & 0x04) != 0x00){ printf("H_Total = %d\r\n",HTotal); } } } void AutoPhaseFineTune(void) { unsigned char qq,yy,zz,uu,i; unsigned long Phase_0, Phase_1, Phase_2, Phase_Pre3, Phase_Now3, Phase_Delta; unsigned char value; if((flag2 & 0x01) != 0x00) return; if((flag3 & 0x04) != 0x00){ printf("Auto Phase Fine Tune\r\n"); } Phase_1 = 0x00000000; Phase_2 = 0x00000000; Phase_Pre3 = 0x00000000; Phase_Delta = 0xffffffff; qq = ADC_Phase; WriteIIC_HW(0xB0,0x20,0x01); Timer3 = 100; for(yy=1; yy<Repeat; yy++){ while((ReadIIC_HW(0xB0,0x20) & 0x01) && Timer3 != 0){ CheckModeChange(); if((flag2 & 0x01) != 0) return; } ADC_Phase = (qq + yy) & 0x3f; SetADC_Phase(); WriteIIC_HW(0xB0,0x20,0x01); Timer3 = 100; Phase_Now3 = 0x00000000; for (zz=0x24; zz>0x20; zz--){ value = ReadIIC_HW(0xB0,zz); Phase_Now3 = Phase_Now3 << 8; Phase_Now3 |= value; } i = (ADC_Phase - 1) & 0x3f; if((flag3 & 0x04) != 0x00) printf("Phase %d = %x %x\r\n",(unsigned short)i,(unsigned short)(Phase_Now3>>16),(unsigned short)Phase_Now3); Phase_2 = Phase_1; Phase_1 = Phase_0; Phase_0 = Phase_Now3; Phase_Now3 = (Phase_0>>1) + (Phase_1>>1) + (Phase_2>>2); if(yy < 4){ Phase_Pre3 = Phase_Now3; } else{ if(Phase_Now3 > Phase_Pre3){ Phase_Pre3 = Phase_Now3 - Phase_Pre3; } else{ Phase_Pre3 = Phase_Pre3 - Phase_Now3; } if(Phase_Pre3 < Phase_Delta){ uu = i; Phase_Delta = Phase_Pre3; } Phase_Pre3 = Phase_Now3; } } ADC_Phase = (uu - 2) & 0x3f; SetADC_Phase(); if((flag3 & 0x04) != 0x00) printf("Phase ok = %d\r\n",(unsigned short)ADC_Phase); } void SetADC_Offset(unsigned char OffSet) { unsigned char i,j,k,m,n,value; unsigned long PhaseResult,Temp;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -