📄 adc.src
字号:
XCH A,R0
XRL A,R0
MOV A,hTotal+01H
SWAP A
ANL A,#0FH
ORL A,R0
ANL A,#0F0H
MOV R0,#buff+01H
MOV @R0,A
; RegDataOut(0xB4, buff, 2);
; SOURCE LINE # 146
MOV R7,#0B4H
MOV R3,#00H
MOV R2,#HIGH (buff)
MOV R1,#LOW (buff)
MOV ?_RegDataOut?BYTE+04H,#00H
MOV ?_RegDataOut?BYTE+05H,#02H
LCALL _RegDataOut
;
; gain = readColor(SELECTG);
; SOURCE LINE # 148
MOV R7,#02H
LCALL _readColor
MOV gain?041,R7
;
; if ((eepData.gainG > 0x40) && (gain < 0x10))
; SOURCE LINE # 150
MOV R0,#eepData+04H
MOV A,@R0
SETB C
SUBB A,#040H
JC ?C0043
MOV A,gain?041
CLR C
SUBB A,#010H
JC ?_adcGainTune?g_fail
; goto g_fail;
; SOURCE LINE # 151
?C0043:
;
; if (gain > GAIN_MAX) eepData.gainG-=3;
; SOURCE LINE # 153
MOV A,gain?041
SETB C
SUBB A,#0FEH
JC ?C0044
MOV R0,#eepData+04H
DEC @R0
DEC @R0
DEC @R0
SJMP ?C0045
?C0044:
; else if (gain < GAIN_MIN-6) eepData.gainG+=3;
; SOURCE LINE # 154
MOV A,gain?041
CLR C
SUBB A,#0F2H
JNC ?C0046
MOV R0,#eepData+04H
INC @R0
INC @R0
INC @R0
SJMP ?C0045
?C0046:
; else if (gain < GAIN_MIN) eepData.gainG++;
; SOURCE LINE # 155
MOV A,gain?041
CLR C
SUBB A,#0F8H
JNC ?_adcGainTune?b_tune
MOV R0,#eepData+04H
INC @R0
; else break;
; SOURCE LINE # 156
?C0045:
; RegByteOut(0x15,eepData.gainG);
; SOURCE LINE # 157
MOV R7,#015H
MOV R0,#eepData+04H
MOV A,@R0
MOV R5,A
LCALL _RegByteOut
;
; }
; SOURCE LINE # 159
LJMP ?C0029
; #if (DEBUGMSG>=3)
; printf("\n ---------------> gainG = %02x,clampG = %2x\n", (unsigned int)eepData.gainG,(unsigned int)eepData.clampG);
; #endif
;
; }
; SOURCE LINE # 164
; goto b_tune;
; SOURCE LINE # 165
;
; g_fail:
; SOURCE LINE # 167
?_adcGainTune?g_fail:
; eepDataIn(EEPDATASTART+(&eepData.clampG-&eepData),(unsigned char *)&eepData.clampG, 1);
; SOURCE LINE # 168
MOV R7,#LOW (eepData)
CLR C
MOV A,#LOW (eepData+01H)
SUBB A,#LOW (eepData)
MOV R7,A
MOV A,#HIGH (eepData+01H)
SUBB A,#HIGH (eepData)
XCH A,R7
ADD A,#04H
XCH A,R7
ADDC A,#00H
MOV R6,A
MOV R3,#00H
MOV R2,#HIGH (eepData+01H)
MOV R1,#LOW (eepData+01H)
MOV ?_eepDataIn?BYTE+05H,#00H
MOV ?_eepDataIn?BYTE+06H,#01H
LCALL _eepDataIn
; eepDataIn(EEPDATASTART+(&eepData.gainG-&eepData),(unsigned char *)&eepData.gainG, 1);
; SOURCE LINE # 169
MOV R7,#LOW (eepData)
CLR C
MOV A,#LOW (eepData+04H)
SUBB A,#LOW (eepData)
MOV R7,A
MOV A,#HIGH (eepData+04H)
SUBB A,#HIGH (eepData)
XCH A,R7
ADD A,#04H
XCH A,R7
ADDC A,#00H
MOV R6,A
MOV R3,#00H
MOV R2,#HIGH (eepData+04H)
MOV R1,#LOW (eepData+04H)
MOV ?_eepDataIn?BYTE+05H,#00H
MOV ?_eepDataIn?BYTE+06H,#01H
LCALL _eepDataIn
; RegByteOut(0x14,eepData.clampG);
; SOURCE LINE # 170
MOV R7,#014H
MOV R0,#eepData+01H
MOV A,@R0
MOV R5,A
LCALL _RegByteOut
; RegByteOut(0x15,eepData.gainG);
; SOURCE LINE # 171
MOV R7,#015H
MOV R0,#eepData+04H
MOV A,@R0
MOV R5,A
LCALL _RegByteOut
; CalibSuccess = 0;
; SOURCE LINE # 172
CLR CalibSuccess
; #if (DEBUGMSG>=3)
; printf("\n G --> FAIL ");
; #endif
;
;
; b_tune:
; SOURCE LINE # 178
?_adcGainTune?b_tune:
; if (colorsel & SELECTB)
; SOURCE LINE # 179
MOV A,colorsel?040
JB ACC.2,$ + 6H
LJMP ?_adcGainTune?rgb_end
; {
; SOURCE LINE # 180
?C0052:
;
; while(1)
; SOURCE LINE # 182
; {
; SOURCE LINE # 183
; if (RegByteIn(0x01) & 0x01) return;
; SOURCE LINE # 184
MOV R7,#01H
LCALL _RegByteIn
MOV A,R7
JNB ACC.0,$ + 6H
LJMP ?C0002
?C0054:
;
; buff[0] = HCALSTART+10; // Cal H End [7:0]
; SOURCE LINE # 186
MOV R0,#buff
MOV @R0,#01EH
; buff[1] = ((HCALSTART>>8)&0x0F); // Cal H Start/End [10:8]
; SOURCE LINE # 187
CLR A
INC R0
MOV @R0,A
; RegDataOut(0xB4, buff, 2);
; SOURCE LINE # 188
MOV R7,#0B4H
MOV R3,A
MOV R2,#HIGH (buff)
MOV R1,#LOW (buff)
MOV ?_RegDataOut?BYTE+04H,A
MOV ?_RegDataOut?BYTE+05H,#02H
LCALL _RegDataOut
?C0055:
;
; #if (DEBUGMSG>=3)
; printf("\nclampB -> ");
; #endif
;
; while(1)
; SOURCE LINE # 194
; {
; SOURCE LINE # 195
; if (RegByteIn(0x01) & 0x01) return;
; SOURCE LINE # 196
MOV R7,#01H
LCALL _RegByteIn
MOV A,R7
JNB ACC.0,$ + 6H
LJMP ?C0002
?C0057:
;
; clamp = readColor(SELECTB);
; SOURCE LINE # 198
MOV R7,#04H
LCALL _readColor
MOV clamp?042,R7
; if ((eepData.clampB > 0x80) && (clamp > 0x40))
; SOURCE LINE # 199
MOV R0,#eepData+02H
MOV A,@R0
SETB C
SUBB A,#080H
JC ?C0058
MOV A,clamp?042
SETB C
SUBB A,#040H
JC $ + 5H
LJMP ?_adcGainTune?b_fail
; goto b_fail;
; SOURCE LINE # 200
?C0058:
; if (clamp < CLAMP_MIN) eepData.clampB-=3;
; SOURCE LINE # 201
MOV A,clamp?042
CLR C
SUBB A,#01H
JNC ?C0060
MOV R0,#eepData+02H
DEC @R0
DEC @R0
DEC @R0
SJMP ?C0061
?C0060:
; else if (clamp > CLAMP_MAX+6) eepData.clampB+=3;
; SOURCE LINE # 202
MOV A,clamp?042
SETB C
SUBB A,#08H
JC ?C0062
MOV R0,#eepData+02H
INC @R0
INC @R0
INC @R0
SJMP ?C0061
?C0062:
; else if (clamp > CLAMP_MAX) eepData.clampB++;
; SOURCE LINE # 203
MOV A,clamp?042
SETB C
SUBB A,#02H
JC ?C0056
MOV R0,#eepData+02H
INC @R0
; else break;
; SOURCE LINE # 204
?C0061:
; RegByteOut(0x16,eepData.clampB);
; SOURCE LINE # 205
MOV R7,#016H
MOV R0,#eepData+02H
MOV A,@R0
MOV R5,A
LCALL _RegByteOut
; }
; SOURCE LINE # 206
SJMP ?C0055
?C0056:
; #if (DEBUGMSG>=3)
; printf(" --> %02X\n", (unsigned int)eepData.clampB);
; #endif
;
; buff[0] = hTotal; // Cal H End [7:0]
; SOURCE LINE # 211
MOV R0,#buff
MOV A,hTotal+01H
MOV @R0,A
; buff[1] = ((hTotal>>4)&0xF0)+((HCALSTART>>8)&0x0F);//Cal H Start/End [10:8]
; SOURCE LINE # 212
MOV A,hTotal
SWAP A
MOV R0,A
ANL A,#0F0H
XCH A,R0
XRL A,R0
MOV A,hTotal+01H
SWAP A
ANL A,#0FH
ORL A,R0
ANL A,#0F0H
MOV R0,#buff+01H
MOV @R0,A
; RegDataOut(0xB4, buff, 2);
; SOURCE LINE # 213
MOV R7,#0B4H
MOV R3,#00H
MOV R2,#HIGH (buff)
MOV R1,#LOW (buff)
MOV ?_RegDataOut?BYTE+04H,#00H
MOV ?_RegDataOut?BYTE+05H,#02H
LCALL _RegDataOut
;
; gain = readColor(SELECTB);
; SOURCE LINE # 215
MOV R7,#04H
LCALL _readColor
MOV gain?041,R7
;
; if ((eepData.gainB > 0x40) && (gain < 0x10))
; SOURCE LINE # 217
MOV R0,#eepData+05H
MOV A,@R0
SETB C
SUBB A,#040H
JC ?C0066
MOV A,gain?041
CLR C
SUBB A,#010H
JC ?_adcGainTune?b_fail
; goto b_fail;
; SOURCE LINE # 218
?C0066:
;
; if (gain > GAIN_MAX) eepData.gainB-=3;
; SOURCE LINE # 220
MOV A,gain?041
SETB C
SUBB A,#0FEH
JC ?C0067
MOV R0,#eepData+05H
DEC @R0
DEC @R0
DEC @R0
SJMP ?C0068
?C0067:
; else if (gain < GAIN_MIN-6) eepData.gainB+=3;
; SOURCE LINE # 221
MOV A,gain?041
CLR C
SUBB A,#0F2H
JNC ?C0069
MOV R0,#eepData+05H
INC @R0
INC @R0
INC @R0
SJMP ?C0068
?C0069:
; else if (gain < GAIN_MIN) eepData.gainB++;
; SOURCE LINE # 222
MOV A,gain?041
CLR C
SUBB A,#0F8H
JNC ?_adcGainTune?rgb_end
MOV R0,#eepData+05H
INC @R0
; else break;
; SOURCE LINE # 223
?C0068:
; RegBitOut(0x17,eepData.gainB,0x7f);
; SOURCE LINE # 224
MOV R7,#017H
MOV R0,#eepData+05H
MOV A,@R0
MOV R5,A
MOV R3,#07FH
LCALL _RegBitOut
;
; }
; SOURCE LINE # 226
LJMP ?C0052
; #if (DEBUGMSG>=3)
; printf("\n ---------------> gainB = %02x,clampB = %2x\n", (unsigned int)eepData.gainB,(unsigned int)eepData.clampB);
; #endif
;
; }
; SOURCE LINE # 231
; goto rgb_end;
; SOURCE LINE # 232
;
; b_fail:
; SOURCE LINE # 234
?_adcGainTune?b_fail:
; eepDataIn(EEPDATASTART+(&eepData.clampB-&eepData),(unsigned char *)&eepData.clampB, 1);
; SOURCE LINE # 235
MOV R7,#LOW (eepData)
CLR C
MOV A,#LOW (eepData+02H)
SUBB A,#LOW (eepData)
MOV R7,A
MOV A,#HIGH (eepData+02H)
SUBB A,#HIGH (eepData)
XCH A,R7
ADD A,#04H
XCH A,R7
ADDC A,#00H
MOV R6,A
MOV R3,#00H
MOV R2,#HIGH (eepData+02H)
MOV R1,#LOW (eepData+02H)
MOV ?_eepDataIn?BYTE+05H,#00H
MOV ?_eepDataIn?BYTE+06H,#01H
LCALL _eepDataIn
; eepDataIn(EEPDATASTART+(&eepData.gainB-&eepData),(unsigned char *)&eepData.gainB, 1);
; SOURCE LINE # 236
MOV R7,#LOW (eepData)
CLR C
MOV A,#LOW (eepData+05H)
SUBB A,#LOW (eepData)
MOV R7,A
MOV A,#HIGH (eepData+05H)
SUBB A,#HIGH (eepData)
XCH A,R7
ADD A,#04H
XCH A,R7
ADDC A,#00H
MOV R6,A
MOV R3,#00H
MOV R2,#HIGH (eepData+05H)
MOV R1,#LOW (eepData+05H)
MOV ?_eepDataIn?BYTE+05H,#00H
MOV ?_eepDataIn?BYTE+06H,#01H
LCALL _eepDataIn
; RegByteOut(0x16,eepData.clampB);
; SOURCE LINE # 237
MOV R7,#016H
MOV R0,#eepData+02H
MOV A,@R0
MOV R5,A
LCALL _RegByteOut
; RegBitOut(0x17,eepData.gainB,0x7f);
; SOURCE LINE # 238
MOV R7,#017H
MOV R0,#eepData+05H
MOV A,@R0
MOV R5,A
MOV R3,#07FH
LCALL _RegBitOut
; CalibSuccess = 0;
; SOURCE LINE # 239
CLR CalibSuccess
; #if (DEBUGMSG>=3)
; printf("\n B --> FAIL ");
; #endif
;
; rgb_end:
; SOURCE LINE # 244
?_adcGainTune?rgb_end:
; eepDataOut(EEPDATASTART+(&eepData.clampR-&eepData),(unsigned char *)&eepData.clampR, 6);
; SOURCE LINE # 245
MOV R7,#LOW (eepData)
CLR A
MOV R7,A
XCH A,R7
ADD A,#04H
XCH A,R7
RLC A
MOV R6,A
MOV R3,#00H
MOV R2,#HIGH (eepData)
MOV R1,#LOW (eepData)
MOV ?_eepDataOut?BYTE+05H,#00H
MOV ?_eepDataOut?BYTE+06H,#06H
LCALL _eepDataOut
;
; #if DEBUGMSG
; printf("RClamp=%2X GClamp=%2X BClamp=%2X\n",
; (unsigned int)eepData.clampR,(unsigned int)eepData.clampG,(unsigned int)eepData.clampB);
; printf("RGain=%2X GGain=%2X BGain=%2X\n",
; (unsigned int)eepData.gainR,(unsigned int)eepData.gainG,(unsigned int)eepData.gainB);
; #endif
; }
; SOURCE LINE # 253
?C0002:
RET
; END OF _adcGainTune
; unsigned char readColor(unsigned char colorsel )
RSEG ?PR?_readColor?ADC
USING 0
_readColor:
MOV colorsel?143,R7
; SOURCE LINE # 254
; {
; SOURCE LINE # 255
;
; unsigned char color;
;
; if (colorsel & SELECTR) {
; SOURCE LINE # 259
MOV A,colorsel?143
JNB ACC.0,?C0074
;
; RegByteOut(0xB1, 0x04); // select component R
; SOURCE LINE # 261
MOV R7,#0B1H
MOV R5,#04H
LCALL _RegByteOut
; RegByteOut(0xB2, 0xFF);
; SOURCE LINE # 262
MOV R7,#0B2H
MOV R5,#0FFH
LCALL _RegByteOut
; RegByteOut(0xB0, 0x20); // Enable color calibration
; SOURCE LINE # 263
MOV R7,#0B0H
MOV R5,#020H
LCALL _RegByteOut
; RegByteOut(0x00, 0x00); // Clear the calibration status reg
; SOURCE LINE # 264
CLR A
MOV R7,A
MOV R5,A
LCALL _RegByteOut
; waitCalibReady(0x40);
; SOURCE LINE # 265
MOV R7,#040H
LCALL _waitCalibReady
; color = RegByteIn(0xDB);
; SOURCE LINE # 266
MOV R7,#0DBH
LCALL _RegByteIn
MOV color?144,R7
; }
; SOURCE LINE # 267
?C0074:
;
; if (colorsel & SELECTG) {
; SOURCE LINE # 269
MOV A,colorsel?143
JNB ACC.1,?C0075
;
; RegByteOut(0xB1, 0x02); // select component G
; SOURCE LINE # 271
MOV R7,#0B1H
MOV R5,#02H
LCALL _RegByteOut
; RegByteOut(0xB2, 0xFF);
; SOURCE LINE # 272
MOV R7,#0B2H
MOV R5,#0FFH
LCALL _RegByteOut
; RegByteOut(0xB0, 0x20); // Enable color calibration
; SOURCE LINE # 273
MOV R7,#0B0H
MOV R5,#020H
LCALL _RegByteOut
; RegByteOut(0x00, 0x00); // Clear the calibration status reg
; SOURCE LINE # 274
CLR A
MOV R7,A
MOV R5,A
LCALL _RegByteOut
; waitCalibReady(0x40);
; SOURCE LINE # 275
MOV R7,#040H
LCALL _waitCalibReady
; color = RegByteIn(0xDC);
; SOURCE LINE # 276
MOV R7,#0DCH
LCALL _RegByteIn
MOV color?144,R7
; }
; SOURCE LINE # 277
?C0075:
;
; if (colorsel & SELECTB) {
; SOURCE LINE # 279
MOV A,colorsel?143
JNB ACC.2,?C0076
;
; RegByteOut(0xB1, 0x01); // select component B
; SOURCE LINE # 281
MOV R7,#0B1H
MOV R5,#01H
LCALL _RegByteOut
; RegByteOut(0xB2, 0xFF);
; SOURCE LINE # 282
MOV R7,#0B2H
MOV R5,#0FFH
LCALL _RegByteOut
; RegByteOut(0xB0, 0x20); // Enable color calibration
; SOURCE LINE # 283
MOV R7,#0B0H
MOV R5,#020H
LCALL _RegByteOut
; RegByteOut(0x00, 0x00); // Clear the calibration status reg
; SOURCE LINE # 284
CLR A
MOV R7,A
MOV R5,A
LCALL _RegByteOut
; waitCalibReady(0x40);
; SOURCE LINE # 285
MOV R7,#040H
LCALL _waitCalibReady
; color = RegByteIn(0xDD);
; SOURCE LINE # 286
MOV R7,#0DDH
LCALL _RegByteIn
MOV color?144,R7
; }
; SOURCE LINE # 287
?C0076:
;
; #if (DEBUGMSG>=3)
; printf(" %02X", (unsigned int)color);
; #endif
;
; return color;
; SOURCE LINE # 293
MOV R7,color?144
;
; }
; SOURCE LINE # 295
?C0077:
RET
; END OF _readColor
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -