MOV @R0,7
INC R5
MOV A,R5
XRL A,#08H
JZ $ + 5H
LJMP L_AutoZero_Loop
RET
F_check_adc: ; Judge key is pressed or released, with hysteresis control
MOV R4,7
LCALL F_Get_ADC10bitResult ; The ADC value returned is [R6 R7]
CLR C
MOV A,#0FFH
SUBB A,R7
MOV R7,A
MOV A,#03H
SUBB A,R6
MOV R6,A
MOV A,R4 ;Save adc[index]
ADD A,ACC
ADD A,#LOW (adc)
MOV R0,A
MOV @R0,6
INC R0
MOV @R0,7
MOV A,R4
ADD A,ACC
ADD A,#LOW (TouchZero+01H)
MOV R1,A
MOV A,R4
ADD A,ACC
ADD A,#LOW (adc)
MOV R0,A
MOV A,@R0
MOV R6,A
INC R0
MOV A,@R0
CLR C
SUBB A,@R1 ;Calculate adc[index] - TouchZero[index]
MOV A,R6
DEC R1
SUBB A,@R1
JNC L_check_adc_1
MOV R7,#00H
RET
L_check_adc_1:
MOV A,R4
ADD A,ACC
ADD A,#LOW (TouchZero+01H)
MOV R1,A
MOV A,R4
ADD A,ACC
ADD A,#LOW (adc+01H)
MOV R0,A
CLR C
MOV A,@R0
SUBB A,@R1
MOV R7,A