⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 lcd_auto.i

📁 液晶显示器程序代码
💻 I
📖 第 1 页 / 共 5 页
字号:
 RTDRead(0x04, 1, 1);   if (0x08 == (Data[0] & 0x0c)) { ((unsigned int *)Data)[1]   += 0x03; ((unsigned int *)Data)[2]   += 0x03; }    usH_Start   = (((unsigned int *)Data)[1] + stMUD.H_POSITION) >= (128 + (10 - 3)) ? (((unsigned int *)Data)[1] + stMUD.H_POSITION) - (128 + (10 - 3)) : 0x0000; usH_End     = (((unsigned int *)Data)[2] + stMUD.H_POSITION) >= (128 + (10 - 3 + 1)) ? (((unsigned int *)Data)[2] + stMUD.H_POSITION) - (128 + (10 - 3 + 1)) : 0x0fff;  return 0x00; }         unsigned char Measure_PositionN(unsigned char NM) { unsigned char Result;  Result  = Measure_PositionV(NM);  if (0x00 == Result)     { Result  = Measure_PositionH(NM); }  return Result; }   void Read_Auto_Info(unsigned char index) { if(index == 0) return;  RTDRead(0x88, 4, 0);  Data[index << 2] = Data[3]; Data[(index << 2) + 1] = Data[2]; Data[(index << 2) + 2] = Data[1]; Data[(index << 2) + 3] = Data[0];  }  unsigned char FindColor() { unsigned long ulTemp0; unsigned char ucDetect,ucResult,ucPhase;  RTDSetByte(0x7E, 0x28);  ulTemp0     = 0; ucDetect    = 0x77; do { ucResult    = 0x00; ucPhase     = 0x00; do { RTDSetByte(0x7D, ucPhase); RTDSetByte(0x7F, ucDetect);  Wait_Finish(); if (0x00 != Data[0])   return Data[0];  Read_Auto_Info(1);  if (ulTemp0 < ((unsigned long *)Data)[1]) { ulTemp0     = ((unsigned long *)Data)[1]; ucResult    = ucPhase;  if (0x8000 < ulTemp0)   break; }  if (0x00 == ucPhase) ucPhase = 0x01; else if (0x01 == ucPhase) ucPhase = 0x02; else break; } while (1);  if (0 != ulTemp0 || 0x7b != ucDetect)   break;  ucDetect    = 0x77; } while (1);  return 0x00; } unsigned long GetMaxSum(unsigned char select) { unsigned char ucPhase,ucDetect; unsigned long ulTemp0; ucPhase = 0;   ulTemp0 = 0; Set_Phase(ucPhase); ucDetect    = (select == 0) ? 0x77 : 0x7b;    RTDSetByte(0x9e,0x07);    Wait_For_IVS();  RTDSetByte(0x7F, ucDetect);     Wait_For_IVS(); for(ucPhase = 0;ucPhase < 4; ucPhase++) {  Wait_For_IVS(); Read_Auto_Info(1);  if(ulTemp0 < ((unsigned long *)Data)[1]) { ulTemp0   = ((unsigned long *)Data)[1] & 0xffffff00; } } RTDSetByte(0x9e,0x00);    Wait_Finish(); if(0x00 != Data[0])     return (Data[0] & 0x000000ff);  #line 513 "Code\Lcd_auto.c" /1                   #line 532 "Code\Lcd_auto.c" /0 return ulTemp0; }           unsigned char Auto_Clock_Do(unsigned char NM) { #line 547 "Code\Lcd_auto.c" /1                                                                                                                                                                                                                                                                                                                                                                                   #line 918 "Code\Lcd_auto.c" /0 unsigned char   Result; unsigned char   count, delta, stop,start;     unsigned long   ulSum,ulCompare; ulCompare = 0; ulSum = 0;     Result  = Measure_PositionV(NM);  if (0x00 != (Result & 0x80))   return Result;  NM      = NM + 0x10;       count   = 10; do {     Result  = Measure_PositionH(NM);  if (0x00 != (Result & 0x80))    return Result;  usH_End = usH_End + 1 - usH_Start;   if (usH_End < usIPH_ACT_WID) delta = (usIPH_ACT_WID - usH_End > 0x00ff) ? 0xff : (unsigned char)(usIPH_ACT_WID - usH_End); else  delta = (usH_End - usIPH_ACT_WID > 0x00ff) ? 0xff : (unsigned char)(usH_End - usIPH_ACT_WID);   if((usIPH_ACT_WID/3) < delta)    { return (usH_End < usIPH_ACT_WID) ? 0xfa : 0xfb; }  if (1 >= delta)     break;     delta   = delta + (delta >> 2);     if (usH_End < usIPH_ACT_WID)      { if ((178 - stMUD.CLOCK) < delta)    return 0xfa;  stMUD.CLOCK  += delta;  Set_Clock(); Set_H_Position(); } else                              { if ((stMUD.CLOCK - 78) < delta)     return 0xfb;  stMUD.CLOCK -= delta;  Set_H_Position(); Set_Clock(); }     #line 984 "Code\Lcd_auto.c" /1                     #line 1005 "Code\Lcd_auto.c" /0 } while (--count);    if (0 == count)  return 0xfd;  stop    = 0;  while (1) { count   = 0x10;       delta   = 0xff;  while (1) {   Set_Phase(count);   Result  = Measure_PositionH(NM);  if (0x00 != (Result & 0x80)) { if (0xf8 == Result) {  if (0x70 == count) { Set_Phase(stMUD.PHASE);   break; } else { count += 0x20; continue; } }  Set_Phase(stMUD.PHASE);    return Result; }  usH_End = usH_End + 1 - usH_Start;  Result  = (usH_End < usIPH_ACT_WID) ? 0x80 - (unsigned char)(usIPH_ACT_WID - usH_End) : 0x80 + (unsigned char)(usH_End - usIPH_ACT_WID);  if (Result < delta) { delta   = Result;         }  if (0x70 == count) { Set_Phase(stMUD.PHASE);   break; }  count += 0x10; }  if (0x81 < delta) { stMUD.CLOCK -= 1;  Set_H_Position(); Set_Clock();  stop    = 1; } else if (0x80 > delta) { if (stop && (0x7f == delta))    break;   stMUD.CLOCK += 1;  Set_Clock(); Set_H_Position();  if (stop)   break; } else     break; }  count = stMUD.PHASE;    start = stMUD.CLOCK ;   if(FindColor() != 0x00) return 0xff;  RTDSetByte(0x7E, 0x30);  ulSum = GetMaxSum(1);   ulCompare = GetMaxSum(0);    if((ulSum > 460000) || ((ulSum < 460000) && (ulCompare > 2000000)) ) {  ulCompare = 0;       if(0x80 < (start - 2) || 0x80 > start) { stMUD.CLOCK = 0x80; Set_H_Position(); Set_Clock(); ulSum = GetMaxSum(0);  if(ulCompare < ulSum) { ulCompare = ulSum; Result = stMUD.CLOCK; }  stMUD.CLOCK = start + 1; } else { stMUD.CLOCK = start; Set_H_Position(); Set_Clock(); ulSum = GetMaxSum(0); }    while(1) { if(ulCompare < ulSum) { ulCompare = ulSum; Result = stMUD.CLOCK; } if(stMUD.CLOCK == start - 2) break;      stMUD.CLOCK -= 1; Set_Clock(); Set_H_Position(); ulSum = GetMaxSum(0);         }  stMUD.CLOCK = Result; stMUD.PHASE = count; Set_Clock(); Set_H_Position(); Set_Phase(stMUD.PHASE); }       return (28 > stMUD.CLOCK) ? 0xfb : (228 < stMUD.CLOCK) ? 0xfa : 0x00; }     unsigned char Auto_Position(void) { unsigned char   Result, Curr_PosH, Curr_PosV;  bAutoInProgress = 1;  Curr_PosH   = stMUD.H_POSITION;       Curr_PosV   = stMUD.V_POSITION;        if (ucV_Max_Margin < stMUD.V_POSITION) { stMUD.V_POSITION    = ucV_Max_Margin; Set_V_Position(); }  RTDCodeW(ADC_DEFAULT);     Result  = Min_Noise_Margin();  if (0x00 == (Result & 0x80)) {       Result  = Auto_Position_Do(Data[0]);      }  if (0x00 == (Result & 0x80)) { Save_MUD(ucMode_Curr); } else { stMUD.H_POSITION    = Curr_PosH; stMUD.V_POSITION    = Curr_PosV;  Set_H_Position(); Set_V_Position(); }   SetADC_GainOffset();  bAutoInProgress = 0;  return Result; }               unsigned char Auto_Position_Do(unsigned char NM) { unsigned char   Result;     Result      = Measure_PositionN(NM);  if (0x00 != (Result & 0x80))   return Result; Result  = 0x00;     NM  = 1; while (1) { if ((usIPV_ACT_STA + ucV_Max_Margin - 128) >= usVer_Start) { if ((usIPV_ACT_STA + ucV_Min_Margin - 128) <= usVer_Start) { stMUD.V_POSITION = (usVer_Start + 128) - usIPV_ACT_STA; Set_V_Position();  break;    } else Result  |= 0x02; } else Result  |= 0x01;   if (NM && usVer_End > usIPV_ACT_LEN) { usVer_Start = usVer_End - usIPV_ACT_LEN + 1; NM          = 0; } else { Result  |= 0x04; break; } }     NM  = 1; while (1) {   if ((usIPH_ACT_STA + (stMUD.CLOCK >> 2) + ucH_Max_Margin - 32 - 128) >= usH_Start) {   if(ucH_Min_Margin  <= 128 ) ((unsigned int*)Data)[0] = usH_Start + 128 - stMUD.H_POSITION + 50;  else ((unsigned int*)Data)[0] = usH_Start;    if ((usIPH_ACT_STA + (stMUD.CLOCK >> 2) + ucH_Min_Margin - 32 - 128) <= ((unsigned int*)Data)[0]) {  stMUD.H_POSITION    = usH_Start + 128 + 32 - usIPH_ACT_STA - (stMUD.CLOCK >> 2); Set_H_Position();  break;    } else Result  |= 0x10; } else Result  |= 0x08;   #line 1334 "Code\Lcd_auto.c" /1                         #line 1359 "Code\Lcd_auto.c" /0  if (NM && usH_End > usIPH_ACT_WID) { usH_Start   = usH_End - usIPH_ACT_WID + 1; NM          = 0; } else { Result  |= 0x20; break; } }  return Result; }  unsigned char Min_Noise_Margin(void) { unsigned char   Result, Noise; unsigned int    Curr_StartH, Curr_EndH;  Result  = Measure_PositionV(0x30);  if (0x00 != (Result & 0x80))   return Result;  if (0 == usVer_Start) { Result  = Measure_PositionV(0x30 + 0x20); if (0x00 != (Result & 0x80))   return Result; }  Noise   = 0x00; Result  = Measure_PositionH(Noise); if (0x00 != (Result & 0x80))   return Result;  Curr_StartH = usH_Start;      Curr_EndH   = usH_End;         do { Noise   = Noise + 0x10; Result  = Measure_PositionH(Noise);  if (0x00 != (Result & 0x80))   return Result;  if (Curr_StartH >= usH_Start) { Curr_StartH = usH_Start; } else if (0x08 < (usH_Start - Curr_StartH)) { break;    } } while (0x90 > Noise);  if (0x80 < Noise)   return 0xf9;        while (1) {    Curr_StartH = usH_Start; Curr_EndH   = usH_End;  Result  = Measure_PositionH(Noise + 0x28);  if (0x00 != (Result & 0x80))   return Result;  if ((Curr_EndH - Curr_StartH) == (usH_End - usH_Start) || (Curr_EndH - Curr_StartH) >= (usH_End - usH_Start + 3)) { break;    }  if (0xa0 <= Noise) { break;    }  Noise   = Noise + 0x10;         Result  = Measure_PositionH(Noise);  if (0x00 != (Result & 0x80))   return Result; };  Data[0] = Noise + 0x10;  return 0x00; }  unsigned char Auto_Phase(void) { unsigned char   Result, Curr_PosV;  bAutoInProgress = 1;  Curr_PosV   = stMUD.V_POSITION;        if (ucV_Max_Margin < stMUD.V_POSITION) { stMUD.V_POSITION    = ucV_Max_Margin; Set_V_Position(); }   RTDCodeW(ADC_DEFAULT);     Result  = Min_Noise_Margin();  if (0x00 == (Result & 0x80)) {    Result      = Auto_Phase_Do(Data[0]);     }  if (0x00 != (Result & 0x80)) {  Set_Phase(stMUD.PHASE); } else { Save_MUD(ucMode_Curr); }   SetADC_GainOffset();   if (Curr_PosV != stMUD.V_POSITION) { stMUD.V_POSITION    = Curr_PosV; Set_V_Position(); }  bAutoInProgress = 0;  return Result; }   unsigned char Auto_Phase_Do(unsigned char NM) { unsigned char idata ucDetect, ucPhase, ucResult; unsigned long idata ulTemp0, ulTemp1, ulTemp2;    if (0x00 != Measure_PositionN(NM))    return 0xff;   Data[0]     = 6; Data[1]     = 0; Data[2]     = 0x75; Data[3]     = (unsigned char)(usH_Start + (10 - 3) - 2); Data[4]     = (unsigned char)(usH_End + (10 - 3 + 1) + 1); Data[5]     = ((unsigned char)((usH_Start + (10 - 3) - 2) >> 4) & 0x70) | ((unsigned char)((usH_End + (10 - 3 + 1) + 1) >> 8) & 0x0f); Data[6]     = 0; RTDWrite(Data);  RTDSetByte(0x7E, 0x30);  ulTemp0     = 0; ucDetect    = 0x7b; do { ucResult    = 0x01; ucPhase     = 0x01; do { RTDSetByte(0x7D, ucPhase); RTDSetByte(0x7F, ucDetect);  Wait_Finish(); if (0x00 != Data[0])   return Data[0];  Read_Auto_Info(1); if (ulTemp0 < ((unsigned long *)Data)[1]) { ulTemp0     = ((unsigned long *)Data)[1]; ucResult    = ucPhase;  if (0x8000 < ulTemp0)   break; }  if (0x01 == ucPhase) ucPhase = 0x00; else if (0x00 == ucPhase) ucPhase = 0x02; else break; } while (1);  if (0 != ulTemp0 || 0x7b != ucDetect)   break;  ucDetect    = 0x77; } while (1);   if (0 == ulTemp0)   return 0xf8;   RTDSetByte(0x7D, NM | ucResult);    NM = 100; #line 1593 "Code\Lcd_auto.c" /1                                                         #line 1650 "Code\Lcd_auto.c" /0  RTDSetByte(0x7E, NM);    Set_Phase(0x78); Delay_Xms(1);  RTDSetByte(0x7F, 0x77);  Wait_Finish(); if (0x00 != Data[0])   return Data[0];  Read_Auto_Info(1);  ulTemp1     = ((unsigned long *)Data)[1];    ulTemp2     = ulTemp1; ulTemp0     = 0; RTDSetByte(0x9e,0x05);     Wait_For_IVS(); RTDSetByte(0x7F,0x77);    Wait_For_IVS(); for(ucDetect = 0;ucDetect < 16; ucDetect++) {  Wait_For_IVS(); Read_Auto_Info(3);   if(ulTemp0 < ((unsigned long *)Data)[3]) { ulTemp0   = ((unsigned long *)Data)[3] & 0xffffff00;   ulTemp1   = ulTemp2;                                   ucResult  = ucDetect << 3;                             } ulTemp2 = ((unsigned long*)Data)[3] & 0xffffff00;  } Wait_Finish(); if (0x00 != Data[0])   return Data[0];  RTDSetByte(0x9e,0x00);     #line 1709 "Code\Lcd_auto.c" /1                                                      #line 1763 "Code\Lcd_auto.c" /0  ucPhase = ucResult == 0x00 ? 0x7c : (ucResult - 0x04 ); ulTemp2 = 0; ucDetect = 2;   Set_Phase(ucPhase);   Delay_Xms(1);  RTDSetByte(0x7F, 0x77);  Wait_Finish(); if (0x00 != Data[0])   return Data[0]; Read_Auto_Info(1); ulTemp2 = ((unsigned long*)Data)[1];      ((unsigned long*)Data)[0]  = ulTemp1 + ulTemp2 + ulTemp0  -((ulTemp1 > ulTemp2 ? ulTemp1 - ulTemp2 : ulTemp2 - ulTemp1)/2) -((ulTemp2 > ulTemp0 ? ulTemp2 - ulTemp0 : ulTemp0 - ulTemp2)/2);  ulTemp1 = ((unsigned long*)Data)[0]; ucPhase = ucResult;  ucResult = ucResult == 0x00 ? 0x7c : ucResult - 0x04;  do   { ucPhase = (ucPhase == 0x7c) ? 0x00 : ucPhase + 0x04; Set_Phase(ucPhase); Delay_Xms(1);  RTDSetByte(0x7F, 0x77);  Wait_Finish(); if (0x00 != Data[0])   return Data[0];  Read_Auto_Info(3);  ((unsigned long *)Data)[0]   = ulTemp2 + ulTemp0 + ((unsigned long *)Data)[3] - ((ulTemp0 > ulTemp2 ? ulTemp0 - ulTemp2 : ulTemp2 - ulTemp0) / 2) - ((ulTemp0 > ((unsigned long *)Data)[3] ? ulTemp0 - ((unsigned long *)Data)[3] : ((unsigned long *)Data)[3] - ulTemp0) / 2);  if(((unsigned long*)Data)[0] > ulTemp1) { ulTemp1 = ((unsigned long*)Data)[0]; ucResult = (ucPhase == 0x00) ? 0x7c : ucPhase - 0x04; } ucDetect -= 1;  ulTemp2 = ulTemp0; ulTemp0 = ((unsigned long *)Data)[3];  }while(ucDetect);   #line 1820 "Code\Lcd_auto.c" /1                                                                                                                                                           #line 1975 "Code\Lcd_auto.c" /0  stMUD.PHASE = ucResult; Set_Phase(stMUD.PHASE);    return 0x00; }  unsigned char Auto_Config(void) { unsigned char   Result, Noise, Curr_PosH, Curr_PosV, Curr_Clock, Curr_Phase;  unsigned char ucTemp1; unsigned int usTemp;   bAutoInProgress = 1;  Curr_PosH   = stMUD.H_POSITION;       Curr_PosV   = stMUD.V_POSITION;       Curr_Clock  = stMUD.CLOCK;            Curr_Phase  = stMUD.PHASE;             if (ucV_Max_Margin < stMUD.V_POSITION) { stMUD.V_POSITION    = ucV_Max_Margin - 1; Set_V_Position(); }            stMUD.H_POSITION = 128;      if(stMUD.CLOCK > 128) ucTemp1 = 128; else ucTemp1 = stMUD.CLOCK;   ucH_Min_Margin = 128 - (64 - (ucTemp1 >> 1));   usIPH_ACT_STA   = CAP_WIN[ucMode_Curr][1];  if(ucMode_Curr < 23) Data[0] = 2; else if(ucMode_Curr < 44) Data[0] = 5; else Data[0] = 3;     usIPH_ACT_STA = CAP_WIN[ucMode_Curr][1] + Data[0] - 6 - (64 - (ucTemp1 >> 1));  usTemp = usIPH_ACT_STA;  Set_H_Position();  RTDSetByte(0x01, 0x00);    RTDSetByte(0x1F, 0x00);            Result  = Min_Noise_Margin();    Noise   = Data[0];      if (0x00 == (Result & 0x80)) {    stMUD.CLOCK = (stMUD.CLOCK) & 0xfc;    if (stMUD.CLOCK != Curr_Clock)  Set_Clock();     Result  = Auto_Clock_Do(Noise);   if (0x00 != (Result & 0x80)) { if (stMUD.CLOCK != Curr_Clock) {  stMUD.H_POSITION    = Curr_PosH; stMUD.CLOCK         = Curr_Clock;  Set_Clock(); Set_H_Position(); } } else { stMUD.H_POSITION    = usH_Start + 128 + 64 - usIPH_ACT_STA - (stMUD.CLOCK >> 1);  if (ucH_Max_Margin < stMUD.H_POSITION) stMUD.H_POSITION    = ucH_Max_Margin; else if (ucH_Min_Margin > stMUD.H_POSITION) stMUD.H_POSITION    = ucH_Min_Margin;  Set_H_Position(); } }   if (0x00 == (Result & 0x80)) {    Result      = Auto_Phase_Do(Noise);  if (0x00 != (Result & 0x80)) {  stMUD.PHASE = Curr_Phase; Set_Phase(stMUD.PHASE);  if (0xf8 == Result)      Result  = 0x00; } }   if (0x00 == (Result & 0x80))     {       Result  = Auto_Position_Do(Noise);   } else { stMUD.V_POSITION    = Curr_PosV; Set_V_Position(); }          if(ucH_Min_Margin == (128 - (64 - (ucTemp1 >> 1)))) { if(usTemp != usIPH_ACT_STA) {      stMUD.H_POSITION = stMUD.H_POSITION - (usTemp - usIPH_ACT_STA); usIPH_ACT_STA = usTemp - 50 + (64 - (ucTemp1 >> 1)); Data[3] = 0x80 | (78 - stMUD.H_POSITION);	      } else { usIPH_ACT_STA   = usIPH_ACT_STA - 50 + (64 - (ucTemp1 >> 1)); Data[3] = 0; }   Data[0] = 4; Data[1] = 0xAE; Data[2] = (ucMode_Curr - 1);              if(0x80 < stMUD.H_POSITION) { if(stMUD.H_POSITION - 0x80 < 10) { usIPH_ACT_STA += (stMUD.H_POSITION - 0x80); Data[3] += (stMUD.H_POSITION - 0x80); stMUD.H_POSITION = 0x80;                             }  } else if(0x80 > stMUD.H_POSITION) { if(0x80 - stMUD.H_POSITION < 10) { usIPH_ACT_STA -= (0x80 - stMUD.H_POSITION);  Data[3] = (0x80 - stMUD.H_POSITION ) | 0x80; stMUD.H_POSITION = 0x80;  } }  I2CWrite(Data); Delay_Xms(0x10);  ucH_Min_Margin  = 128 - 50;    Set_H_Position();  } Set_Phase(stMUD.PHASE); if (0x00 == (Result & 0x80))   Save_MUD(ucMode_Curr);  RTDSetByte(0x01, 0x00);    RTDSetByte(0x1F, 0x00);          bAutoInProgress = 0; Set_Phase(stMUD.PHASE);  return Result; }  unsigned char Auto_Balance(void) { unsigned char Result, Curr_PosV;  bAutoInProgress = 1;  Curr_PosV   = stMUD.V_POSITION;        if (ucV_Max_Margin < stMUD.V_POSITION) { stMUD.V_POSITION    = ucV_Max_Margin; Set_V_Position(); }   Result  = Tune_Balance();   if (Curr_PosV != stMUD.V_POSITION) { stMUD.V_POSITION    = Curr_PosV; Set_V_Position(); }  if (0x00 != Result) {  Load_GUD2(); SetADC_GainOffset(); } else { stGUD0.CONTRAST         = 50; stGUD0.RTD_R_CONTRAST   = 50; stGUD0.RTD_G_CONTRAST   = 50; stGUD0.RTD_B_CONTRAST   = 50; stGUD0.RTD_R_BRIGHT     = 50; stGUD0.RTD_G_BRIGHT     = 50; stGUD0.RTD_B_BRIGHT     = 50; Set_Bright_Contrast();   SetADC_Gain();   Save_GUD0();  Save_GUD2(); }  bAutoInProgress = 0;  return Result; }  unsigned char Tune_Balance(void) { unsigned char   Color, Count, Result, Margin, FineTune, Offset_Stop,ucTemp = 0;  FineTune    = 0;   ucTemp = stGUD0.CONTRAST; stGUD0.CONTRAST = 50; SetADC_Gain();   RTDCodeW(ADC_DEFAULT);   if (0x00 != Measure_PositionN(0x40))   return 0xff;  if (0x00 != Measure_Color(0x01, 0x20))      return 0xff; if (0x60 > Data[0])     return 0xff;  Margin  = Data[0];  if (0x00 != Measure_Color(0x02, 0x20))    return 0xff; if (0x60 > Data[0])     return 0xff;  Margin  = Margin > Data[0] ? Data[0] : Margin;  if (0x00 != Measure_Color(0x04, 0x20))     return 0xff; if (0x60 > Data[0])     return 0xff;  Margin  = Margin > Data[0] ? Data[0] : Margin;  Margin  = (Margin - 0x20) & 0xfc;   if (0x00 != Measure_PositionN(Margin))   return 0xff;   #line 2354 "Code\Lcd_auto.c" /1  #line 2356 "Code\Lcd_auto.c" /0 SetADC_GainOffset();   Offset_Stop = 0; Color   = 0x04; do { Count   = 0x30;  do { #line 2368 "Code\Lcd_auto.c" /1                                                                         #line 2441 "Code\Lcd_auto.c" /0       if (0x00 != Measure_Color(Color, 0x20))   return 0xff; Margin  = Data[0];  if (0xf2 < Margin) { Result  = Margin - 0xf2;   if (Change_ADC_Gain(Color, Result, 0))                { if (Change_ADC_Offset(Color, 4, 0))     break;    } } else if (0xf2 > Margin) { Result  = 0xf2 - Margin;   if (Change_ADC_Gain(Color, Result, 1))                { if (Change_ADC_Offset(Color, 4, 1))     break;    } }  Result  = Margin;      if (0x00 != Measure_Color(Color, 0x00))   return 0xff; Margin  = Data[0];  if (0x0a < Margin) { Change_ADC_Offset(Color, 0x08, 0);            } else if (0x02 < Margin) { C

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -