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

📄 read_7135.asm

📁 利用AT89C51 ,可以读取基于IC7135的电压表头的信号.
💻 ASM
📖 第 1 页 / 共 4 页
字号:
                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 + -