📄 read_7135.asm
字号:
CLR EM5
CALL TD_300MS
CALL JS
CALL RUN
CALL JS
CALL COMPARE_p_1
mov a, vol1_ok
cjne a, #0ffh, FAIL_JMP4_4
MOV A,H_L_FLG
CJNE A,#00H,GO_HIGH_5_4
CALL DISP_STEP_5
JMP GO_CHECK_5_4
GO_HIGH_5_4: CALL DISP_STEP_13 ;;;;5 ;;13
GO_CHECK_5_4:
SETB EM6
CALL TD_300MS
CALL JS
CALL LIGHT_STATE
MOV A,LIGHT_FLG
CJNE A,#00H,FAIL_JMP4_4
CLR EM6
CALL TD_300MS
CALL JS
CALL RUN
CALL COMPARE_p_1
mov a, vol1_ok
cjne a, #0ffh, FAIL_JMP4_4
MOV A,H_L_FLG
CJNE A,#00H,GO_HIGH_6_4
CALL DISP_STEP_6
JMP GO_CHECK_6_4
FAIL_JMP4_4: JMP FAIL
GO_HIGH_6_4: CALL DISP_STEP_14 ;;;;6 ;;14
GO_CHECK_6_4:
SETB EM7
CALL TD_300MS
CALL JS
CALL LIGHT_STATE
MOV A,LIGHT_FLG
CJNE A,#00H,FAIL_JMP4_4
CLR EM7
CALL TD_300MS
CALL JS
CALL RUN
CALL COMPARE_p_1
mov a, vol1_ok
cjne a, #0ffh, FAIL_JMP4_4
MOV A,H_L_FLG
CJNE A,#00H,GO_HIGH_7_4
CALL DISP_STEP_7
JMP GO_CHECK_7_4
GO_HIGH_7_4: CALL DISP_STEP_15 ;;;;7 ;;15
GO_CHECK_7_4:
SETB EM8
CALL TD_300MS
CALL JS
CALL LIGHT_STATE
MOV A,LIGHT_FLG
CJNE A,#00H,FAIL_JMP4_4
CLR EM8
CALL TD_300MS
CALL JS
CALL RUN
CALL COMPARE_p_1
mov a, vol1_ok
cjne a, #0ffh, FAIL_JMP4_4
MOV A,H_L_FLG
CJNE A,#00H,GO_HIGH_8_4
CALL DISP_STEP_8
MOV DATAL_L,#0d4H
MOV DATAL_H,#03H
MOV DATAH_L,#88H
MOV DATAH_H,#04H
JMP GO_CHECK_8_4 ;;;;8 ;;16
GO_HIGH_8_4: CALL DISP_STEP_16
MOV DATAL_L,#92H
MOV DATAL_H,#04H
MOV DATAH_L,#0baH
MOV DATAH_H,#04H
GO_CHECK_8_4:
SETB EM1
CALL TD_500MS
CALL TD_400MS
CALL JS
CALL LIGHT_STATE
MOV A,LIGHT_FLG
CJNE A,#00H,FAIL_JMP3_4
CALL JS
CALL RUN
CALL COMPARE_p
mov a, vol1_ok
cjne a, #0ffh, FAIL_JMP3_4
CLR EM1
CALL TD_300MS
CALL JS
CALL STOP_STATE
MOV A,STOP_FLG
CJNE A,#0FFH,FAIL_JMP3_4
MOV A,H_L_FLG
CJNE A,#00H,HI_END_3_4
SETB EM10
CALL TD_200MS
MOV H_L_FLG,#0FFH
JMP HI_LOOP4
FAIL_JMP3_4: JMP FAIL
HI_END_3_4:
CALL PASS
JMP MAIN1
;#####################################################
PASS:
MOV P0,#00H
SETB PASS_LED
CLR FAIL_LED
CLR POWER
CLR EM10
CALL TD_500MS
CLR EM9
RET
;#####################################################
FAIL:
MOV P0,#00H
SETB FAIL_LED
CLR PASS_LED
CLR POWER
CLR EM10
SETB BUZZER
CALL TD_500MS
CLR EM9
CALL TD_50MS
CLR BUZZER
JMP MAIN1
;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
EM1_ON:
SETB EM1
CALL TD_300MS
CLR EM1
RET
;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
EM2_ON:
SETB EM2
CALL TD_300MS
CLR EM2
RET
;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
EM3_ON:
SETB EM3
CALL TD_300MS
CLR EM3
RET
;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
EM4_ON:
SETB EM4
CALL TD_300MS
CLR EM4
RET
;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
EM5_ON:
SETB EM5
CALL TD_300MS
CLR EM5
RET
;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
EM6_ON:
SETB EM6
CALL TD_300MS
CLR EM6
RET
;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
EM7_ON:
SETB EM7
CALL TD_300MS
CLR EM7
RET
;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
EM8_ON:
SETB EM8
CALL TD_300MS
CLR EM8
RET
;###########################################
JS: MOV A,SINGLE_FLG
CJNE A,#0FFH,GO_OUT
BUTTON:
JB START,$
CALL TD_200MS
JNB START,$
GO_OUT: RET
;-----------------------------------------
READ_BCD:
MOV BCD_RAM,#00H
CALL TD_100MS
MOV A,P1
CPL A
ANL A,#0F0H
SWAP A
MOV BCD_RAM,A
RET
;-----------------------------------
DISP_STEP:
SETB DISP_CLK
NOP
NOP
CLR DISP_CLK
NOP
NOP
RET
;-----------------------------------
DISP_ZERO:
SETB DISP_RES
NOP
NOP
CLR DISP_RES
NOP
NOP
RET
;*************************************************
STOP_STATE:
MOV STOP_FLG,#00H
MOV R3,#32H
STOP_LOOP:
JNB PERIOD,STOP_END
CALL TD_2MS
DJNZ R3,STOP_LOOP
MOV STOP_FLG,#0FFH
RET
STOP_END:
MOV STOP_FLG,#00H
RET
;*************************************************
LIGHT_STATE:
MOV LIGHT_FLG,#00H
MOV R3,#64H
LIGHT_LOOP:
JNB PERIOD,LIGHT_END
CALL TD_2MS
DJNZ R3,LIGHT_LOOP
MOV LIGHT_FLG,#0FFH
RET
LIGHT_END:
MOV LIGHT_FLG,#00H
RET
;*************************************************
compare_p:
mov vol1_ok,#00h
clr c
mov a,v1_hex0
subb a,datal_l ;low bit
mov a,v1_hex1
subb a,datal_h
jc exit_com
mov a,datah_l ;high bit
subb a,v1_hex0
mov a,datah_h
subb a,v1_hex1
jc exit_com
mov vol1_ok,#0ffh
exit_com: mov datam_l,v1_hex0
mov datam_h,v1_hex1
ret
;*************************************************
compare_p_1:
MOV OP_0,DATAM_L
MOV OP_1,DATAM_H
MOV ADD_0,#14H ;;;LATESE > LAST + 2.0V
MOV ADD_1,#00H
CALL ADD16_16BIT
MOV DATAM_L,OP_0
MOV DATAM_H,OP_1
mov vol1_ok,#00h
clr c
mov a,v1_hex0
subb a,datam_l ;low bit
mov a,v1_hex1
subb a,datam_h
jc exit_com
mov vol1_ok,#0ffh
exit_com: mov datam_l,v1_hex0
mov datam_h,v1_hex1
ret
;------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
run:
mov v1_hex1,#00h
mov v1_hex0,#00h
call read_vol1
mov r0,#v1_bcd1
call bcd_hex_2
mov v1_hex1,@r0
inc r0
mov v1_hex0,@r0
MOV A,SINGLE_FLG
CJNE A,#0FFH,GO_BACK
call display_total_voltage
GO_BACK: ret
;------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
read_vol1:
mov d5_ram1,#00h
mov d4_ram1,#00h
mov d3_ram1,#00h
mov d2_ram1,#00h
d5_c4:
mov a,p3
jnb acc.7,d5_c4 ;d4
mov a,p3
anl a,#0fh
mov d5_ram1,a
; call BUTTON
; call display_voltage
d4_c4:
mov a,p3
jnb acc.6,d4_c4 ;d3
mov a,p3
anl a,#0fh
mov d4_ram1,a
; call BUTTON
; call display_voltage
d3_c4:
mov a,p3
jnb acc.5,d3_c4 ;d2
mov a,p3
anl a,#0fh
mov d3_ram1,a
; call BUTTON
; call display_voltage
d2_c4:
mov a,p3
jnb acc.4,d2_c4 ;d1
mov a,p3
anl a,#0fh
mov d2_ram1,a
; call BUTTON
; call display_voltage
; CALL BUTTON
mov v1_bcd1,#00h
mov v1_bcd0,#00h
mov a,d5_ram1
swap a
orl a,d4_ram1
mov v1_bcd1,a ;vol1_bcd_h
mov a,d3_ram1
swap a
orl a,d2_ram1
mov v1_bcd0,a ;vol1_bcd_l
ret
;------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
bcd_hex_2:
inc r0
mov a,@r0
call bcd_hex_1
mov @r0,a
dec r0
mov a,@r0
call bcd_hex_1
mov b,#100
mul ab
inc r0
add a,@r0
mov @r0,a
clr a
addc a,b
dec r0
mov @r0,a
ret
;------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
bcd_hex_1:
mov b,#10h
div ab
mov r3,b
mov b,#10
mul ab
add a,r3
ret
;-------------------------------------------------------------------------------------------------
display_total_voltage:
call DISP_ZERO
mov dptr, #0000h
clr a
clock_loop:
inc dptr
mov r2, dpl
mov r3, dph
call DISP_STEP
mov a, r2
cjne a, v1_hex0, clock_loop
mov a, r3
cjne a, v1_hex1, clock_loop
ret
;------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
display_voltage:
call DISP_ZERO
jz cov1
cov: call DISP_STEP
djnz acc, cov
cov1: ret
;----------------------------------------------------------------------------------------------
DISP_STEP_1: CALL DISP_ZERO
MOV A,#01H
GO_DISP_1: CALL DISP_STEP
DJNZ ACC,GO_DISP_1
RET
;----------------------------------------------------------------------------------------------
DISP_STEP_2: CALL DISP_ZERO
MOV A,#02H
GO_DISP_2: CALL DISP_STEP
DJNZ ACC,GO_DISP_2
RET
;----------------------------------------------------------------------------------------------
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -