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

📄 adc.lst

📁 采用台湾MRT晶捷公司的MRT4方案的液晶电视的程序
💻 LST
📖 第 1 页 / 共 4 页
字号:
C51 COMPILER V6.23a  ADC                                                                   09/10/2004 16:09:05 PAGE 1   


C51 COMPILER V6.23a, COMPILATION OF MODULE ADC
OBJECT MODULE PLACED IN ADC.OBJ
COMPILER INVOKED BY: d:\Keil\C51\BIN\C51.EXE ADC.C OPTIMIZE(6,SIZE) ORDER DEFINE(DEBUGMSG=0,DEBUGTOOL=0) DEBUG OBJECTEXT
                    -END CODE SYMBOLS

stmt level    source

   1          /************************************************
   2           *                                              *
   3           *      ADC.C:  ADC sub-routines                *
   4           *                                              *
   5           ************************************************/
   6          
   7          #include <reg51.h>
   8          #include "mascot.h"
   9          #include "osd.h"
  10          #include "global.h"
  11          
  12          
  13          unsigned char code ChangeLine[3] = "\x0a\x0d";
  14          
  15          #define CLAMP_MAX               0x02
  16          #define CLAMP_MIN               0x01
  17          #define GAIN_MAX                0xFE
  18          #define GAIN_MIN                0xFC  //jordan1218
  19          
  20          //jordan0222    adcGainTune subroutine
  21          void adcGainTune(void)
  22          {
  23   1          unsigned char i, cnt1, cnt2;
  24   1          
  25   1              initCalibration();
  26   1              hvCalibration(OPTIONCENTER);
  27   1      
  28   1              eepData.clampR = eepData.clampG = eepData.clampB = DEF_clamp;
  29   1              eepData.gainR = eepData.gainG = eepData.gainB = DEF_gain;   
  30   1              buff[5] = buff[6] = buff[7] = DEF_clamp;
  31   1              buff[8] = buff[9] = buff[10] = DEF_gain;
  32   1              
  33   1              RegByteOut(TDA_RGAIN, eepData.gainR);
  34   1              RegByteOut(TDA_GGAIN, eepData.gainG);
  35   1              RegByteOut(TDA_BGAIN, eepData.gainB);
  36   1              
  37   1              RegByteOut(TDA_RCLAMP, eepData.clampR);    
  38   1              RegByteOut(TDA_GCLAMP, eepData.clampG);    
  39   1              RegByteOut(TDA_BCLAMP, eepData.clampB);    
  40   1                      
  41   1              for(i=0;i<3;i++)
  42   1              {
  43   2      #if RS232DBG
                              if(fgRS232){ wr_232_str("***** i="); wr_232_dec(i); wr_232_str(ChangeLine);}
              #endif
  46   2      
  47   2                      cnt1 = 30;
  48   2                      while(cnt1>0)
  49   2                      {
  50   3                              cnt1--;
  51   3                              buff[3] = HCALSTART+26;           // Cal H End [7:0]
  52   3                              buff[4] = ((HCALSTART>>8)&0x0F);  // Cal H Start/End [10:8]
  53   3                              RegDataOut(0xB4, buff+3, 2);
  54   3      
C51 COMPILER V6.23a  ADC                                                                   09/10/2004 16:09:05 PAGE 2   

  55   3      #if RS232DBG
                      if(fgRS232)
                              wr_232_str("ADJ clamp -->\x0a\x0d");
              #endif
  59   3                      
  60   3                              if(cnt1>25) cnt2=43; else cnt2=10;
  61   3                              while(cnt2>0)
  62   3                              {
  63   4                                      cnt2--;
  64   4                                      readColor();
  65   4                              
  66   4                                      if ((buff[5+i] > 0x80) && (buff[i] > 0x40))
  67   4                                              goto fail;
  68   4              
  69   4      #if NEW_ADC
  70   4                                      if (buff[i] < CLAMP_MIN)         buff[5+i]+=6;//eepData.clampR G B
  71   4                                      else if (buff[i] > CLAMP_MAX+6)  buff[5+i]-=6;
  72   4                                      else if (buff[i] > CLAMP_MAX)    buff[5+i]-=2;
  73   4                                      else                             break; 
  74   4                                      RegByteOut(0x12+2*i,buff[5+i]<<1);      //set cr12,14,16
  75   4      #else
                                              if (buff[i] < CLAMP_MIN)         buff[5+i]-=4;//eepData.clampR G B
                                              else if (buff[i] > CLAMP_MAX+6)  buff[5+i]+=4;
                                              else if (buff[i] > CLAMP_MAX)    buff[5+i]+=2;
                                              else                             break; 
                                              RegByteOut(0x12+2*i,buff[5+i]); //set cr12,14,16
              #endif
  82   4                              
  83   4      #if RS232DBG
                      if(fgRS232)
                              wr_232_str("==> clp="); wr_232_hex(buff[5+i],1);wr_232_hex(buff[i],1); wr_232_hex(cnt2,1);wr_232_str(Cha
             -ngeLine);
              #endif
  87   4                              }
  88   3                 
  89   3                 
  90   3      #if RS232DBG
                      if(fgRS232)
                      {
                              wr_232_str("==> clamp="); wr_232_hex(buff[5+i],1);wr_232_hex(buff[i],1); wr_232_str(ChangeLine);
                              wr_232_str("ADJ gain -->\x0a\x0d");
                      }
              #endif
  97   3      
  98   3                              buff[3] = hTotal;           // Cal H End [7:0]
  99   3                              buff[4] = ((hTotal>>4)&0xF0)+((HCALSTART>>8)&0x0F);//Cal H Start/End [10:8]
 100   3                              RegDataOut(0xB4, buff+3, 2);    
 101   3                              readColor();
 102   3                              if ((buff[8+i] > 0x40) && (buff[i] < 0x10))
 103   3                              goto fail;
 104   3                              if( (buff[8+i] < 4) || (buff[8+i] > 0x7c)  )    break;
 105   3                              else if (buff[i] > GAIN_MAX)          buff[8+i]-=3;//buff[i] is maximum color value R,G,B 
 106   3                              else if (buff[i] < GAIN_MIN-6)   buff[8+i]+=3;//buff[8+i] is one of eepData.gainR G B
 107   3                              else if (buff[i] < GAIN_MIN)     buff[8+i]++;
 108   3                              else                             break;
 109   3      
 110   3                              RegByteOut(0x13+2*i,buff[8+i]);//set cr 13,15,17
 111   3                    
 112   3      #if RS232DBG
                      if(fgRS232)
                              wr_232_str("==> gain="); wr_232_hex(buff[8+i],1);wr_232_hex(buff[i],1); wr_232_str(ChangeLine);
              #endif
C51 COMPILER V6.23a  ADC                                                                   09/10/2004 16:09:05 PAGE 3   

 116   3      
 117   3                      }
 118   2      #if RS232DBG
                          if(fgRS232){
                              wr_232_str("==> final gain="); wr_232_hex(buff[8+i],1);wr_232_hex(buff[i],1); wr_232_str(C
             -hangeLine);
                          }
              #endif
 123   2      
 124   2              }
 125   1          
 126   1              eepData.clampR = buff[5];
 127   1              eepData.clampG = buff[6];
 128   1              eepData.clampB = buff[7];
 129   1              eepData.gainR = buff[8];
 130   1              eepData.gainG = buff[9];
 131   1              eepData.gainB = buff[10];
 132   1      
 133   1              eepDataOut(EEPDATASTART+(&eepData.clampR-&eepData),(unsigned char *)&eepData.clampR, 6);
 134   1      
 135   1      //      eepData.blacklevel = DEF_blacklevel;
 136   1      //      eepDataOut(EEPDATASTART+(&eepData.blacklevel-&eepData),(unsigned char *)&eepData.blacklevel, 1);       
             -                     
 137   1      
 138   1      #if RS232DBG
                  if(fgRS232){
                      wr_232_str("adcGainTune(E)..\x0a\x0d"); 
                      wr_232_str("gainR="); wr_232_hex(eepData.gainR,1);
                      wr_232_str(" gainG="); wr_232_hex(eepData.gainG,1);
                      wr_232_str(" gainB="); wr_232_hex(eepData.gainB,1);
                      wr_232_str(ChangeLine);
                      wr_232_str("clampR="); wr_232_hex(eepData.clampR,1);
                      wr_232_str(" clampG="); wr_232_hex(eepData.clampG,1);
                      wr_232_str(" clampB="); wr_232_hex(eepData.clampB,1);
                      wr_232_str(ChangeLine);
                  }
              #endif
 151   1      
 152   1          return;
 153   1      
 154   1      fail:
 155   1              eepDataIn(EEPDATASTART+(&eepData.clampR-&eepData),buff+5, 6);
 156   1              RegByteOut(TDA_RGAIN, eepData.gainR);
 157   1              RegByteOut(TDA_GGAIN, eepData.gainG);
 158   1              RegByteOut(TDA_BGAIN, eepData.gainB);
 159   1              
 160   1              RegByteOut(TDA_RCLAMP, eepData.clampR);    
 161   1              RegByteOut(TDA_GCLAMP, eepData.clampG);    
 162   1              RegByteOut(TDA_BCLAMP, eepData.clampB);    
 163   1      //      eepData.blacklevel = DEF_blacklevel;
 164   1      //      eepDataOut(EEPDATASTART+(&eepData.blacklevel-&eepData),(unsigned char *)&eepData.blacklevel, 1);       
             -                     
 165   1              
 166   1      
 167   1      #if RS232DBG
                  if(fgRS232){ wr_232_str("Gain tune fail..\x0a\x0d"); }
              #endif
 170   1                      
 171   1      }       
 172          
 173          
 174          
C51 COMPILER V6.23a  ADC                                                                   09/10/2004 16:09:05 PAGE 4   

 175          void readColor(void)
 176          {       
 177   1              RegByteOut(0xB1, 0x07);     // select component R G b
 178   1              RegByteOut(0xB2, 0xFF);
 179   1              RegByteOut(0xB0, 0x20);     // Enable color calibration
 180   1              RegByteOut(0x00, 0x00);     // Clear the calibration status reg
 181   1              waitCalibReady(0x40);   
 182   1      #if NEW_ADC
 183   1              buff[2] = RegByteIn(0xDB);
 184   1              buff[1] = RegByteIn(0xDC);
 185   1              buff[0] = RegByteIn(0xDD);
 186   1      #else
                      buff[0] = RegByteIn(0xDB);
                      buff[1] = RegByteIn(0xDC);
                      buff[2] = RegByteIn(0xDD);
              #endif
 191   1      }
 192          
 193          
 194          
 195          
 196          #if AUTO_CLAMP
              
              #define clamp_ok        0x80
              #define clamp_Up        0x01
              #define clamp_Dn        0x02
              #define clamp_U_turn    0x04
              #define clamp_more      0x08
              
              // add by jordan0113
              void adcClampTune(void)
              {
                      unsigned char i,j=0;    //, j
                      unsigned char Clamp_buff[3] = {0x00, 0x00, 0x00};
                      
              #if RS232DBG
                      if(fgRS232){ wr_232_str("adcClampTune(B)..\x0a\x0d"); }
              #endif
                      
                      initCalibration();
                      buff[3] = HCALSTART+26;           // Cal H End [7:0]    030121-1 by jordan
                      buff[4] = ((HCALSTART>>8)&0x0F);  // Cal H Start/End [10:8]
                      RegDataOut(0xB4, buff+3, 2);    
                      
                      buff[15] = eepData.clampR;
                      buff[16] = eepData.clampG;
                      buff[17] = eepData.clampB;
                  
                      
                      while(1)
                      {               
              next_loop:
                              if ( modechangeflag ) //by seven 030718
                                      return;
                              /*if ( RegByteIn(0x01) & 0x35 ) 
                              {
                                      modeChangemode = 1;
                                      return;
                              }*/ // by seven
                              
              #if RS232DBG
                      if(fgRS232){ wr_232_str("adcClampTune readColor..\x0a\x0d"); }
C51 COMPILER V6.23a  ADC                                                                   09/10/2004 16:09:05 PAGE 5   

              
                          if(fgRS232){
                              wr_232_str("==> j=");wr_232_hex(j,1);  wr_232_str(ChangeLine);
                         }

⌨️ 快捷键说明

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