📄 adc.lst
字号:
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 + -