📄 scaler.i
字号:
extern idata unsigned char Inverter; extern xdata unsigned char CmdTxPtr1; extern xdata unsigned char CmdTxPtr2; extern xdata unsigned char CmdRxPtr1; extern xdata unsigned char CmdRxPtr2; extern xdata unsigned char CmdTxBuffer[]; extern xdata unsigned char CmdRxBuffer[]; extern xdata unsigned char Saturation; extern xdata unsigned char Tint; extern xdata unsigned char DeviceFlag; extern xdata unsigned char IIC_BaudRate; extern xdata unsigned char OSD_Control; extern xdata unsigned char TempValue; extern xdata unsigned short MoveX; extern xdata unsigned short MoveY; extern xdata unsigned char MuteTimer; extern xdata unsigned char checksum; extern bit NodeToggle; #line 9 "SRC\Scaler.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 10 "SRC\Scaler.C" /0 #line 1 "SRC\OSD.H" /0 extern code unsigned char IconPosition[]; extern code unsigned char ClearLine1[]; extern code unsigned char ClearLine2[]; extern code unsigned char ClearLine3[]; extern code unsigned char MenuItem[]; extern code unsigned char *SourceTab[]; void OsdInit(void); void Osd2Init(void); void Osd3Init(void); void Osd4Init(void); void LoadFont(void); void ShowMainMenu(void); void MainMenu(void); void ClearOSD(void); void OSD_OFF(void); void ShowSubMenu(void); void ValueUp(void); void ValueDown(void); void ShowT_Bar(void); void ShowBrightness(void); void ShowContrast(void); void ShowClock(void); void ShowPhase(void); void ShowHP(void); void ShowVP(void); void ShowNO_YES(unsigned char i); void SetPosition(void); void ShowVersion(void); void ClearText(void); void ShowOutOfRange(void); void ShowNoSync(void); void ShowDisconnector(void); void SaveData(void); void ShowAutoAdj1(void); void ShowAutoAdj(void); void ShowRGB(void); void ShowOSD_X(void); void ShowOSD_Y(void); void ShowOSD_Timer(void); void ShowColorTemperature(void); void ShowLanguage(void); void SelectItem(void); void WriteSequenceScaler(unsigned char addr,unsigned char *p); void WriteStringScaler(unsigned char Attr,unsigned char *p); void WriteXY_StrScaler(unsigned char Attr,unsigned char x,unsigned char y,unsigned char *p); void FillLineAttr(unsigned char x,unsigned char y,unsigned char l,unsigned short Attr); void UnselectIcon(void); void WriteXY_CStrScaler(unsigned char Attr,unsigned char x,unsigned char y,unsigned char w,unsigned char *p); void CheckRGB(void); void ShowMisceMenu(void); void ShowInverter(void); void ShowSaturation(void); void ShowTint(void); void ShowSharpness(void); void SetMovePosition(void); void ShowVolume(); void DirectVolume(); void ShowValue(unsigned char Attr,unsigned char value); void ShowSliderBar(unsigned char x,unsigned char y,unsigned char value); void ShowFreq(void); void ShowResolution(void); void ShowNum(unsigned char Attr,unsigned char xx,unsigned char yy,unsigned char value); void ShowInputSource(void); void VideoMenu(void); void ShowVideoMenu(void); void ShowVideoSubMenu(void); void VideoValueUp(void); void VideoValueDown(void); void VideoUnSelectIcon(void); void VideoSelectItem(void); enum{ NotSaveSaveFlag, BrightnessSaveFlag, ContrastSaveFlag, ClockSaveFlag, PhaseSaveFlag, HP_SaveFlag, VP_SaveFlag, R_GainSaveFlag, G_GainSaveFlag, B_GainSaveFlag, VolumeSaveFlag, OSD_X_SaveFlag, OSD_Y_SaveFlag, OSD_TimerSaveFlag, SaturationSaveFlag, TintSaveFlag, SharpnessSaveFlag, InverterSaveFlag, Osd_ControlSaveFlag }; enum{ BrightnessNode, ContrastNode, PhaseNode, ClockNode, HP_Node, VP_Node, RecallNode, ColorTempNode, R_GainNode, G_GainNode, B_GainNode, LanguageNode, MisceNode, ExitMainMenuNode, ExitMisceMenuNode, OSD_X_Node, OSD_Y_Node, OSD_TimerNode, OSD_RotationNode, OSD_FlipNode, OSD_MirrorNode, AutoColorNode, SaturationNode, TintNode, SharpnessNode }; enum{ AvBrightnessNode, AvContrastNode, AvSaturationNode, AvTintNode, AvSharpnessNode, AvLanguageNode, AvRecallNode, AvOSD_X_Node, AvOSD_Y_Node, AvOSD_TimerNode, AvExitMainMenuNode }; #line 11 "SRC\Scaler.C" /0 #line 14 "SRC\Scaler.C" /1 #line 16 "SRC\Scaler.C" /0 #line 20 "SRC\Scaler.C" /1 #line 22 "SRC\Scaler.C" /0 #line 26 "SRC\Scaler.C" /1 #line 28 "SRC\Scaler.C" /0 #line 32 "SRC\Scaler.C" /1 #line 34 "SRC\Scaler.C" /0 code unsigned short H_ActiveTab[]={ 1280,720,1280,800,832,1024,1152,1280,1280,1600,1280,848,1152,720 }; code unsigned short V_ActiveTab[]={ 350,400,480,600,624,768,864,960,1024,1200,720,480,870,576 }; #line 51 "SRC\Scaler.C" /1 #line 78 "SRC\Scaler.C" /0 #line 79 "SRC\Scaler.C" /1 #line 93 "SRC\Scaler.C" /0 #line 94 "SRC\Scaler.C" /1 #line 108 "SRC\Scaler.C" /0 #line 110 "SRC\Scaler.C" /1 #line 176 "SRC\Scaler.C" /0 void UpdatePresetData(void) { code unsigned char UpdateSquenceTable[]={ 0x0a,0x09,0x0B,0x0C,0x12,0x13,0x14,0x15, 0x16,0x17,0x18,0x19,0x1A,0x1B,0x4D,0x5E, 0x5F,0x60,0x61,0x63,0x6f }; code unsigned char D1024x768[]={ 0x1E,0x05,0x51,0x84,0x08,0x00,0x1D,0x00, 0x00,0x03,0x95,0x00,0x00,0x04,0x00,(unsigned char)0x0333, (unsigned char)(0x0333 >> 8),0x03,((0xff & 0x01) | (0xff & 0x02) | (0x00 & 0x04) | (0x00 & 0x08)),0x00,0x0f }; unsigned char i; for(i=0; i<21; i++){ WriteIIC_HW(0xB0,UpdateSquenceTable[i],D1024x768[i]); } } void InitScaler(void) { unsigned char i; code unsigned char InitTab[30][2]={ {0x01,(0x48|0x01)}, {0x4E,(unsigned char)806},{0x4F,(unsigned char)(806>>8)}, {0x50,(unsigned char)768},{0x51,(unsigned char)(768>>8)}, {0x52,(unsigned char)780 - 3 - 7},{0x53,(unsigned char)(780 - 3 - 7>>8)}, {0x54,(unsigned char)780 - 3 - 7 + 3},{0x55,(unsigned char)(780 - 3 - 7 + 3>>8)}, {0x56,(unsigned char)1210},{0x57,(unsigned char)(1210>>8)}, {0x58,(unsigned char)1024},{0x59,(unsigned char)(1024>>8)}, {0x5A,(unsigned char)1210 - 60 - 60},{0x5B,(unsigned char)(1210 - 60 - 60>>8)}, {0x5C,(unsigned char)1210 - 60 - 60 + 60},{0x5D,(unsigned char)(1210 - 60 - 60 + 60>>8)}, {0x85,0x04}, {0x86,0xc0}, {0x87,0xc0}, {0x88,0xc8}, {0x8b,0x0f}, {0x91,0xFF}, {0x92,0x00}, {0x93,0x40}, {0x94,0xa6}, {0xe6,0x03}, {0xf8,7}, {0xfd,0x05}, }; if((flag3 & 0x04) != 0x00) printf("Init Scaler\r\n"); TCONInit(); for(i=0; i<29; i++) { WriteIIC_HW(0xB0,InitTab[i][0],InitTab[i][1]); } UpdatePresetData(); if(0 == 0){ WriteIIC_HW(0xB0,0xfa,0x40); WriteIIC_HW(0xB0,0xfb,0xc3); WriteIIC_HW(0xB0,0xfe,0x02); } else if(0 == 1){ WriteIIC_HW(0xB0,0xfa,0x00); WriteIIC_HW(0xB0,0xfb,0x00); WriteIIC_HW(0xB0,0xfe,0xc0); } else if(0 == 2){ WriteIIC_HW(0xB0,0xfa,0xc0); WriteIIC_HW(0xB0,0xfb,0x00); WriteIIC_HW(0xB0,0xfe,0xc1); } else{ WriteIIC_HW(0xB0,0xfa,0x00); WriteIIC_HW(0xB0,0xfb,0x00); WriteIIC_HW(0xB0,0xfe,0xc1); } SetDPLL(60000*1210); WriteIIC_HW(0xB0,0x03,0x00); WriteIIC_HW(0xB0,0x05,0x00); WriteIIC_HW(0xB0,0x07,0x00); WriteIIC_HW(0xB0,0x40,0x01); WriteIIC_HW(0xB0,0xf4,0xc0); WriteIIC_HW(0xB0,0x4c,(0x68 | (0x00 & 0x04) | (0xff & 0x02) | (0x00 & 0x01))); WriteIIC_HW(0xB0,0x4d,0x02); WriteIIC_HW(0xB0,0x42,0x3a); WriteIIC_HW(0xB0,0x43,0x43); WriteWordIIC_HW(0xB0,0x75,0x20); WriteIIC_HW(0xB0,0xb3,0x09); WriteIIC_HW(0xB0,0xd6,0xb1); if((flag3 & 0x04) != 0x00) printf("LG_LM150X06_A4\r\n"); DVI_On(); } void TCONInit(void) { unsigned char i; WriteIIC_HW(0xB0,0xFF,0x01); #line 285 "SRC\Scaler.C" /1 #line 297 "SRC\Scaler.C" /0 i = (0x00 << 1) | 0x01; WriteIIC_HW(0xB0,0xf5,i); WriteIIC_HW(0xB0,0xFF,0x00); } #line 304 "SRC\Scaler.C" /1 #line 328 "SRC\Scaler.C" /0 void SetADC_Phase(void) { WriteIIC_HW(0xB0,0xFF,0x01); WriteIIC_HW(0xB0,0xD9,ADC_Phase); WriteIIC_HW(0xB0,0xFF,0x00); } void SetADC_PLL(void) { unsigned long PixelRate,H_Counter; unsigned short addr; unsigned char ch,k; float temp; PixelRate = ((unsigned long)HTotal * H_SYNC)/10000; ch = (unsigned char)PixelRate; WriteIIC_HW(0xB0,0xFF,0x01); WriteIIC_HW(0xB0,0xd0,0x43); addr = 0x106 + (ModePoint * 8); k = Read24C16(addr); flag3 &= ~0x02; if((ch > 140)||(k == 9)) flag3 |= 0x02; if((H_SYNC > 85 * 10)||(H_SYNC < 28 * 10)) flag3 |= 0x02; if((V_SYNC > 80 * 10)||(V_SYNC < 55 * 10)) flag3 |= 0x02; if((flag1 & 0x02) == 0){ k = ReadIIC_HW(0xB0,0xd1) & 0x03; } else{ if(ch > 100){ WriteIIC_HW(0xB0,0xd1,0x10); k = 0; } else if (ch > 50){ WriteIIC_HW(0xB0,0xd1,0x11); k = 1; } else{ WriteIIC_HW(0xB0,0xd1,0x12); k = 2; } } if((flag3 & 0x04) != 0x00){ printf("Htotal = %d\r\n",HTotal); printf("PixelRate = %d MHz\r\n",(unsigned short)PixelRate); } if((SyncMode == 0)||(SyncMode == 3)) WriteIIC_HW(0xB0,0xd6,0xbf); else WriteIIC_HW(0xB0,0xd6,0xa0); WriteIIC_HW(0xB0,0xdb,0x0c); if((flag1 & 0x02) == 0){ if((SyncMode == 1)||(SyncMode == 2)){ WriteIIC_HW(0xB0,0xd5,0x0D); } else{ if((HV_Pol & 0x10) == 0){ WriteIIC_HW(0xB0,0xd5,0x05); } else{ WriteIIC_HW(0xB0,0xd5,0x0d); } } ch = ReadIIC_HW(0xB0,0xdf) & 0x3f; PixelRate = ch; PixelRate <<= 8; ch = ReadIIC_HW(0xB0,0xde); PixelRate += ch; PixelRate <<= 8; ch = ReadIIC_HW(0xB0,0xdd); PixelRate += ch; } else{ WriteIIC_HW(0xB0,0xd5,0x00); H_Counter = 0; Timer3 = 25; while(Timer3 != 0){ ch = ReadIIC_HW(0xB0,0xdf) & 0x3f; PixelRate = ch; PixelRate <<= 8; ch = ReadIIC_HW(0xB0,0xde); PixelRate += ch; PixelRate <<= 8; ch = ReadIIC_HW(0xB0,0xdd); PixelRate += ch; if(PixelRate > H_Counter){ if((PixelRate - H_Counter ) > 2){ H_Counter = PixelRate; Timer3 = 25; } } else{ if((H_Counter - PixelRate ) > 2){ H_Counter = PixelRate; Timer3 = 25; } } } } if((flag3 & 0x04) != 0x00){ printf("Hcounter = %x %x\r\n",(unsigned short)(PixelRate>>16),(unsigned short)PixelRate); } temp = ((float)HTotal * 536870912) / PixelRate; PixelRate = temp; if((flag3 & 0x04) != 0x00){ printf("DSS = %x %x\r\n",(unsigned short)(PixelRate>>16),(unsigned short)PixelRate); } for(k; k>0; k--){ PixelRate <<= 1; } WriteIIC_HW(0xB0,0xd2,(unsigned char)PixelRate); WriteIIC_HW(0xB0,0xd3,(unsigned char)(PixelRate>>8)); WriteIICV_HW(0xB0,0xd4,(unsigned char)(PixelRate>>16)); WriteWordIIC_HW(0xB0,0xd7,HTotal); if((SyncMode == 1)||(SyncMode == 2)){ WriteIIC_HW(0xB0,0xd5,0x0D); } else{ if((HV_Pol & 0x10) == 0){ WriteIIC_HW(0xB0,0xd5,0x07); } else{ WriteIIC_HW(0xB0,0xd5,0x0F); } } WriteIIC_HW(0xB0,0xFF,0x00); } void SetScaler(void) { unsigned char r; unsigned short i,DispActiveHeight,dstVtotal,DV_HFreq,dstHtotal; unsigned long dclk; if(ModePoint >= 50) return; if(SyncMode != 3){ SetHP(); SetVP(); } i = 0x106 + (ModePoint * 8); r = Read24C16(i); H_Act = H_ActiveTab[r]; if((flag3 & 0x04) != 0x00){ printf("Resolution = %d x %d\r\n",H_ActiveTab[r],V_ActiveTab[r]); } if((flag3 & 0x40) != 0){ WriteWordIIC_HW(0xB0,0x16,V_ActiveTab[r]>>1); i = V_ActiveTab[r]>>1; } else{ WriteWordIIC_HW(0xB0,0x16,V_ActiveTab[r]); i = V_ActiveTab[r]; } WriteWordIIC_HW(0xB0,0x1a,H_ActiveTab[r]); if(H_Act == 1024) WriteIIC_HW(0xB0,0x43,0x43); else WriteIIC_HW(0xB0,0x43,0x00); dclk = ((unsigned long)768 * VTotal / V_ActiveTab[r]) * V_SYNC * 1210 / 10000; DispActiveHeight = 768; dstHtotal = 1210; dstVtotal = ((((unsigned long)VTotal * DispActiveHeight) << 4) / V_ActiveTab[r] + 8) >> 4; if(dclk < 50000){ dstHtotal = 1344; } else if(dclk > 80000){ DispActiveHeight = (unsigned long)768 * 80000 / dclk; if(i < 768) i = (unsigned long)i * dclk / 80000; WriteWordIIC_HW(0xB0,0x16,i); dstVtotal = ((((unsigned long)VTotal * DispActiveHeight) << 4) / V_ActiveTab[r] + 8) >> 4; } dclk = ((long)dstHtotal * dstVtotal * V_SYNC + 5) / 10; if(dstVtotal < 780){ dstVtotal = 780; dstHtotal = 1344; dclk = ((unsigned long)1344 * dstVtotal* V_SYNC + 5) / 10; DV_HFreq = dclk / 1210 / 100; } else{ DV_HFreq = (unsigned short)((unsigned long)dstVtotal * V_SYNC / 1000); } SetDPLL(dclk); Sleep(80); dstHtotal = ReadWordIIC_HW(0xB0,0x67) & 0x07ff; dstVtotal = dclk * 10 / dstHtotal / V_SYNC; if((flag3 & 0x04) != 0x00){ printf("DCLK = 0x%x 0x%x\r\n",(unsigned short)(dclk >> 16),(unsigned short)dclk); printf("DispActiveHeight = %d\r\n",DispActiveHeight); printf("DispHFreq = %d\r\n",DV_HFreq); printf("dstVtotal = %d\r\n",dstVtotal); printf("dstHtotal = %d\r\n",dstHtotal); } WriteWordIIC_HW(0xB0,0x4e,dstVtotal); dstVtotal = dstVtotal - 3 - 7; WriteWordIIC_HW(0xB0,0x52,dstVtotal); dstVtotal = dstVtotal + 3; WriteWordIIC_HW(0xB0,0x54,dstVtotal); WriteWordIIC_HW(0xB0,0x56,dstHtotal); dstHtotal = dstHtotal - 60 - 60; WriteWordIIC_HW(0xB0,0x5a,dstHtotal); dstHtotal = dstHtotal + 60; WriteWordIIC_HW(0xB0,0x5c,dstHtotal); } void SetScalerAV(void) { unsigned char Vfreq; unsigned short DispActiveHeight,dstVtotal,DV_HFreq,dstHtotal,i; unsigned long dclk; code unsigned short H_ActTab[]={ 680,680 }; code unsigned short V_ActTab[]={ 232,278 }; if((flag2 & 0x04) == 0) Vfreq = 1; else Vfreq = 0; if(Vfreq == 0){ WriteWordIIC_HW(0xB0,0x18,150); WriteWordIIC_HW(0xB0,0x14,0x6015); H_SYNC = 157; V_SYNC = 599; VTotal = 262; } else{ WriteWordIIC_HW(0xB0,0x18,159); WriteWordIIC_HW(0xB0,0x14,0x0019); H_SYNC = 156; V_SYNC = 500; VTotal = 302; } H_Act = H_ActTab[Vfreq]; if((flag3 & 0x04) != 0x00){ printf("Resolution = %d x %d\r\n",H_ActTab[Vfreq],V_ActTab[Vfreq]); } WriteWordIIC_HW(0xB0,0x16,V_ActTab[Vfreq]); i = V_ActTab[Vfreq]; WriteWordIIC_HW(0xB0,0x1a,H_ActTab[Vfreq]); dclk = ((unsigned long)768 * VTotal / V_ActTab[Vfreq]) * V_SYNC * 1210 / 10000; DispActiveHeight = 768; dstHtotal = 1210; dstVtotal = ((((unsigned long)VTotal * DispActiveHeight) << 4) / V_ActiveTab[Vfreq] + 8) >> 4; if(dclk < 50000){ dstHtotal = 1344; } else if(dclk > 80000){ DispActiveHeight = (unsigned long)768 * 80000 / dclk; if(i < 768) i = (unsigned long)i * dclk / 80000; WriteWordIIC_HW(0xB0,0x16,i); dstVtotal = ((((unsigned long)VTotal * DispActiveHeight) << 4) / V_ActiveTab[Vfreq] + 8) >> 4; } dclk = ((long)dstHtotal * dstVtotal * V_SYNC + 5) / 10; if(dstVtotal < 780){ dstVtotal = 780; dstHtotal = 1344; dclk = ((unsigned long)1344 * dstVtotal* V_SYNC + 5) / 10; DV_HFreq = dclk / 1210 / 100; } else{ DV_HFreq = (unsigned short)((unsigned long)dstVtotal * V_SYNC / 1000); } SetDPLL(dclk); Sleep(80); dstHtotal = ReadWordIIC_HW(0xB0,0x67) & 0x07ff; dstVtotal = dclk * 10 / dstHtotal / V_SYNC; if((flag3 & 0x04) != 0x00){ printf("DCLK = 0x%x 0x%x\r\n",(unsigned short)(dclk >> 16),(unsigned short)dclk); printf("DispActiveHeight = %d\r\n",DispActiveHeight); printf("DispHFreq = %d\r\n",DV_HFreq); printf("dstVtotal = %d\r\n",dstVtotal); printf("dstHtotal = %d\r\n",dstHtotal); } WriteWordIIC_HW(0xB0,0x4e,dstVtotal); dstVtotal = dstVtotal - 3 - 7; WriteWordIIC_HW(0xB0,0x52,dstVtotal); dstVtotal = dstVtotal + 3; WriteWordIIC_HW(0xB0,0x54,dstVtotal); WriteWordIIC_HW(0xB0,0x56,dstHtotal); dstHtotal = dstHtotal - 60 - 60; WriteWordIIC_HW(0xB0,0x5a,dstHtotal); dstHtotal = dstHtotal + 60; WriteWordIIC_HW(0xB0,0x5c,dstHtotal); } void SetDPLL(unsigned long dclk) { unsigned long temp; WriteIIC_HW(0xB0,0xff,0x01); WriteIIC_HW(0xB0,0xf0,0x00); if(dclk > 100000000){ WriteIIC_HW(0xB0,0xf1,0x10); temp = ((float)dclk * 16384) / 1500000; } else if(dclk > 50000000){ WriteIIC_HW(0xB0,0xf1,0x11); temp = ((float)dclk * 32768) / 1500000; } else if(dclk > 25000000){ WriteIIC_HW(0xB0,0xf1,0x12); temp = ((float)dclk * 65536) / 1500000; } else{ WriteIIC_HW(0xB0,0xf1,0x13); temp = ((float)dclk * 131072) / 1500000; } #line 678 "SRC\Scaler.C" /1 #line 695 "SRC\Scaler.C" /0 WriteIIC_HW(0xB0,0xf2,(unsigned char)temp); WriteIIC_HW(0xB0,0xf3,(unsigned char)(temp >> 8)); WriteIIC_HW(0xB0,0xf4,(unsigned char)(temp >> 16)); WriteIIC_HW(0xB0,0xf0,0x01); WriteIIC_HW(0xB0,0xff,0x00); } void SetHP(void) { WriteWordIIC_HW(0xB0,0x18,HP_Start); if((flag3 & 0x04) != 0x00){ printf("HP_Start = %d\r\n",HP_Start); } } void SetVP(void) { if((flag3 & 0x40) != 0){ WriteWordIIC_HW(0xB0,0x14,VP_Start | 0x6000); } else{ WriteWordIIC_HW(0xB0,0x14,VP_Start); } if((flag3 & 0x04) != 0x00){ printf("VP_Start = %d\r\n",VP_Start); } } void SetSharpness(void) { WriteIIC_HW(0xB0,0x70,Sharpness); if((flag3 & 0x04) != 0x00){ printf("Sharpness = %d\r\n",(unsigned short)Sharpness); } } void SetBrightness(void) { unsigned char value; value = 78 + Brightness; if(value > 0x7f) value &= 0x7f; else value |= 0x80; WriteIIC_HW(0xB0,0x6c,value); WriteIIC_HW(0xB0,0x6d,value); WriteIIC_HW(0xB0,0x6e,value); if((flag3 & 0x04) != 0x00){ printf("Brightness of ASIC = %x\r\n",(unsigned short)value); } } void SetInverter(void) { unsigned char value; value = Inverter << 1; PWM_REG[15] = value; if((flag3 & 0x04) != 0x00){ printf("Inverter = %x\r\n",(unsigned short)value); } } void ForceToBackground(unsigned char color) { if(((flag1 & 0x02) == 0)||((flag3 & 0x01) != 0)){ flag1 |= 0x02; if((flag3 & 0x04) != 0x00){ printf("Force To Background %x\r\n",(unsigned short)color); } color <<= 2; color |= 0x02; WriteIIC_HW(0xB0,0x4d,color); } } void SetDisplayNormal(void) { flag1 &= ~0x20; flag1 &= ~0x02; WriteIIC_HW(0xB0,0x4d,0x00); MuteTimer = 128; if((flag3 & 0x04) != 0x00){ printf("Set Display Normal\r\n"); } } void PowerSaving(void) { OSD_Control &= ~0x01; WriteIIC_HW(0xB0,0x95,OSD_Control); AUDIO_MUTE(); ForceToBackground(0); BackLightOff(); Sleep(250); ScalerPowerDown(); AMP_STBY(); if((flag3 & 0x04) != 0x00){ printf("Power Saving\r\n"); } } void ScalerPowerDown(void) { if(0 > 1){ WriteIIC_HW(0xB0,0xff,0x01); WriteIIC_HW(0xB0,0x08,0x00); WriteIIC_HW(0xB0,0xff,0x00); } WriteIIC_HW(0xB0,0x6f,0x00); WriteIIC_HW(0xB0,0xE8,0x00); WriteIIC_HW(0xB0,0xfe,0x00); WriteIIC_HW(0xB0,0xfa,0x00); WriteIIC_HW(0xB0,0xfb,0x00); WriteIIC_HW(0xB0,0x00,0x37); WriteIIC_HW(0xB0,0x00,0x07); WriteIIC_HW(0xB0,0x4c,0x00); Sleep(1); PanelPowerOff(); Timer4 = 100; } void ScalerPowerUp(void) { if((ReadIIC_HW(0xB0,0x00) & 0x01) != 0){ LED_GrnOn(); LED_RedOff(); AMP_On(); if((PortC & 0x80) == 0x00){ #line 891 "SRC\Scaler.C" /1 #line 893 "SRC\Scaler.C" /0 while(Timer4 != 0){}; PanelPowerOn(); Sleep(1); } if(0 == 0){ WriteIIC_HW(0xB0,0xfa,0x40); WriteIIC_HW(0xB0,0xfb,0xc3); WriteIIC_HW(0xB0,0xfe,0x02); } else if(0 == 1){ WriteIIC_HW(0xB0,0xfa,0x00); WriteIIC_HW(0xB0,0xfb,0x00); WriteIIC_HW(0xB0,0xfe,0xc0); } else if(0 == 2){ WriteIIC_HW(0xB0,0xfa,0xc0); WriteIIC_HW(0xB0,0xfb,0x00); WriteIIC_HW(0xB0,0xfe,0xc1); WriteIIC_HW(0xB0,0xff,0x01); WriteIIC_HW(0xB0,0x08,0x10); WriteIIC_HW(0xB0,0xff,0x00); } else{ WriteIIC_HW(0xB0,0xfa,0x00); WriteIIC_HW(0xB0,0xfb,0x00); WriteIIC_HW(0xB0,0xfe,0xc1); WriteIIC_HW(0xB0,0xff,0x01); WriteIIC_HW(0xB0,0x08,0x10); WriteIIC_HW(0xB0,0xff,0x00); } WriteIIC_HW(0xB0,0xe8,0xc0); WriteIIC_HW(0xB0,0x6f,0x0f); WriteIIC_HW(0xB0,0x4c,(0x68 | (0x00 & 0x04) | (0xff & 0x02) | (0x00 & 0x01))); WriteIIC_HW(0xB0,0x00,0x30); SetBrightness(); sRGB(); } PoSvTimer = 500; flag1 &= ~0x08; H_SYNC_Temp = 0xffff; V_SYNC_Temp = 0xffff; if((flag3 & 0x04) != 0x00){ printf("WakeUp\r\n"); } } void LoadADC_Gain(void) { WriteIIC_HW(0xB0,0x0f,Read24C16(0xfa)); WriteIIC_HW(0xB0,0x10,Read24C16(0xfb)); WriteIIC_HW(0xB0,0x11,Read24C16(0xfc)); R_ADC = Read24C16(0xfd); WriteIIC_HW(0xB0,0x02,R_ADC); G_ADC = Read24C16(0xfe); WriteIIC_HW(0xB0,0x04,G_ADC); B_ADC = Read24C16(0xff); WriteIIC_HW(0xB0,0x06,B_ADC); } void SetVolume(void) { unsigned char value; value = (Volume << 1) + 55; PWM_REG[1] = value; if(Volume == 0){ AUDIO_MUTE(); } else{ AUDIO_On(); } if((flag3 & 0x04) != 0x00){ printf("Volume = %x\r\n",(unsigned short)value); } }
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -