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

📄 gz_honda.asm

📁 51汇编语言,可以读取广州本田汽车的故障码
💻 ASM
📖 第 1 页 / 共 2 页
字号:
                ;
HO_EG_CODECOMM1:        DB      05H, 20H, 05H, 40H, 10H, 8BH
HO_EG_CODECOMM2:        DB      05H, 20H, 05H, 50H, 10H, 7BH
HO_EG_CLEACOMM1:        DB      04H, 21H, 04H, 01H,0DAH
HO_AT_CODECOMM1:        DB      05H, 40H, 05H, 10H, 10H, 9BH
HO_AT_CLEACOMM1:        DB      04H, 41H, 04H, 01H,0BAH
HO_ABS_CODECOMM1:       DB      05H,0A0H, 05H, 00H, 10H, 4BH
HO_ABS_CLEACOMM1:       DB      04H,0A1H, 04H, 01H, 5AH
HO_SRS_CODECOMM1:       DB      05H, 60H, 05H, 20H, 10H, 6BH
HO_SRS_CODECOMM2:       DB      05H, 60H, 05H, 00H, 0EH, 8DH
HO_SRS_CLEACOMM1:       DB      04H, 61H, 04H, 01H, 9AH
HO_SRS_CLEACOMM2:       DB      04H, 61H, 04H, 11H, 8AH
HO_SRS_SYSINFOCOMM:     DB      05H, 60H, 05H, 70H, 0CH, 1FH

GZ_TRANS:       MOV R0,#SEND_BUF
                CLR A
                MOVC A,@A+DPTR
                INC DPTR
                MOV R1,A
                SETB C
                JZ GZ_TRANS2
GZ_TRANS1:      CLR A
                MOVC A,@A+DPTR
                MOV @R0,A
                INC DPTR
                INC R0
                DJNZ R1,GZ_TRANS1
                CLR C
GZ_TRANS2:      RET

HO_FTRAN:       PUSH B
                MOV R0,#SEND_BUF
                ACALL READ_R0_ACC
                ACALL SAVE_R1_ACC
                ACALL READ_R0_ACC
                ACALL SAVE_R1_ACC
                DEC A
                DEC A
                MOV B,A
HO_FTRAN1:      ACALL READ_R0_ACC
                ACALL SAVE_R1_ACC
                MOV a,r1
                CLR c
                SUBB a,#INFO_END
                JNC HO_FTRAN2
                DJNZ  B,HO_FTRAN1
HO_FTRAN2:      POP B
                RET
                ;
HO_SENDREAD:    MOV DPH0,DPH
                MOV DPL0,DPL
HO_SENDREAD1:   PUSH 01H
                MOV DPH,DPH0
                MOV DPL,DPL0
                ACALL GZ_TRANS
                ACALL HO_SENDFRAME
                MOV R0,#SEND_BUF
                ACALL HO_READFRAME
                JNC HO_SENDREAD2
                POP 01H
                DJNZ R1,HO_SENDREAD1
                SETB C
                RET
                ;
HO_SENDREAD2:   POP 01H
                RET

;===============
HO_SENDFRAME:   PUSH    01H
                ;
                MOV R0,#SEND_BUF
                MOV A,@R0
                INC R0
                ACALL HO_SENDBYTE
                MOV A,@R0
                INC R0
                MOV R1,A
                ACALL HO_SENDBYTE
                MOV A,R1
                DEC A
                DEC A
                MOV R1,A
      HO_SENFR0:MOV A,@R0
                INC R0
                ACALL HO_SENDBYTE
                DJNZ R1,HO_SENFR0
                ;
                POP     01H
                RET
                ;
HO_READFRAME:   PUSH    01H
                ;
                ACALL   HO_READBYTE
                JC      HO_RECFRE
                ACALL   HO_READBYTE
                JC      HO_RECFRE
                SUBB    A,#02H
                MOV     R1,A
      HO_RECFR0:ACALL   HO_READBYTE
                JC      HO_RECFRE
                DJNZ    R1,HO_RECFR0
                MOV     R4,#10
                ACALL   DELAY_1MS
                CLR     C
                AJMP    HO_RECFRE
                ;
      HO_RECFRE:POP     01H
                RET

HO_READBYTE:    ACALL   HO_READDATA
                JC      HO_RBYTEER
                MOV    @R0,A
                INC    R0
                CLR     C
                RET
     HO_RBYTEER:SETB    C
                RET

HO_SENDBYTE:    CLR REN
                CLR TI
                MOV SBUF,A
                JNB TI,$
                CLR TI
                RET
                ;
HO_READDATA:    PUSH    03H
                SETB    REN
                CLR     RI
                MOV     R3,#50
        HO_RDD0:CLR     TR0
                CLR     TF0
                MOV     TH0,#TH_20MS
                MOV     TL0,#TL_20MS
                SETB    TR0
        HO_RDD1:JB      RI,HO_RDD2
                JNB     TF0,HO_RDD1
                DJNZ    R3,HO_RDD0
                CLR     TR0
                CLR     TF0
                CLR     RI
                SETB    C
                POP     03H
                RET
        HO_RDD2:MOV     A,SBUF
                CLR     TR0
                CLR     TF0
                CLR     RI
                CLR     C
                POP     03H
                RET

GZ_CLRCODE:     MOV DPTR,#HO_EG_CLEACOMM1
                MOV R1,#4
                ACALL HO_SENDREAD
                ;
                MOV DPTR,#HO_AT_CLEACOMM1
                MOV R1,#4
                ACALL HO_SENDREAD
                ;
GZ_CLRCODE_1:   MOV DPTR,#HO_ABS_CLEACOMM1
                MOV R1,#4       ;1
                ACALL HO_SENDREAD
                MOV R0,#SEND_BUF+2
                MOV A,@R0
                CJNE A,#31H,GZ_CLRCODE_2
                ;AJMP GZ_CLRCODE_1
                ;
GZ_CLRCODE_2:   MOV R1,#4
GZ_CLRCODE_3:   PUSH 01H
                MOV DPTR,#HO_SRS_CLEACOMM1
                MOV R1,#1
                ACALL HO_SENDREAD
                ;
                MOV DPTR,#HO_SRS_CLEACOMM2
                MOV R1,#1
                ACALL HO_SENDREAD
                POP 01H
                DJNZ R1,GZ_CLRCODE_3
                RET

;=========================================
;=========================================
;=========================================
GZ_READ:        MOV A,SYSTEMNUM
                CJNE A,#1,GZ_READ_1
                MOV DPTR,#HO_EG_CODECOMM1
                MOV R1,#2
                ACALL HO_SENDREAD
                JNC HO_EGRD1
                AJMP GZ_SAVE
                ;
HO_EGRD1:       MOV R1,#HO_EGRBUF1
                ACALL HO_FTRAN
                MOV DPTR,#HO_EG_CODECOMM2
                MOV R1,#2
                ACALL HO_SENDREAD
                JNC HO_EGRD2
                AJMP GZ_SAVE
                ;
HO_EGRD2:       MOV R1,#HO_EGRBUF2
                ACALL HO_FTRAN
                CLR C
                AJMP GZ_SAVE
                ;
GZ_READ_1:      CJNE A,#2,GZ_READ_2
                MOV DPTR,#HO_AT_CODECOMM1
                MOV R1,#2
                ACALL HO_SENDREAD
                AJMP GZ_SAVE
                ;
GZ_READ_2:      CJNE A,#3,GZ_READ_3
                MOV DPTR,#HO_ABS_CODECOMM1
                MOV R1,#2
                ACALL HO_SENDREAD
                AJMP GZ_SAVE
                ;
GZ_READ_3:      MOV DPTR,#HO_SRS_SYSINFOCOMM
                MOV R1,#2
                ACALL HO_SENDREAD
                JNC HO_SRSRD000
                AJMP GZ_SAVE
                ;
HO_SRSRD000:    MOV DPTR,#HO_SRS_CODECOMM1
                MOV R1,#2
                ACALL HO_SENDREAD
                JNC HO_SRSRD001
                AJMP GZ_SAVE
                ;
HO_SRSRD001:    MOV R0,#SEND_BUF+17
                MOV A,@R0
                CJNE A,#0AAH,HO_SRSRD002
                AJMP HO_SRSRD003

HO_SRSRD002:    SETB C
                AJMP GZ_SAVE
                ;
HO_SRSRD003:    MOV DPTR,#HO_SRS_SYSINFOCOMM
                MOV R1,#2
                ACALL HO_SENDREAD
                JNC HO_SRSRD01
                AJMP GZ_SAVE
                ;
HO_SRSRD01:     MOV DPTR,#HO_SRS_CODECOMM2
                MOV R1,#2
                ACALL HO_SENDREAD
                AJMP GZ_SAVE
                ;
GZ_SAVE:        JNC GZ_SAVE_0
                MOV R0,#SEND_BUF
                MOV a,#0ffh
                MOV @R0,A
                AJMP GZ_SAVE_end
                ;
GZ_SAVE_0:      MOV A,SYSTEMNUM
                CJNE A,#1,GZ_SAVE_1
                ACALL gz_eggetcode
                AJMP GZ_SAVE_end
                ;
GZ_SAVE_1:      CJNE A,#2,GZ_SAVE_2
                ACALL gz_atgetcode
                AJMP GZ_SAVE_end
                ;
GZ_SAVE_2:      CJNE A,#3,GZ_SAVE_3
                ACALL gz_absgetcode
                AJMP GZ_SAVE_end
                ;
GZ_SAVE_3:      ACALL gz_srsgetcode
GZ_SAVE_end:    ACALL del_same_code
                RET

gz_eggetcode:   MOV R0,#HO_EGRBUF1+2
                MOV R1,#DTC_INFO
                MOV R7,#0
                MOV R6,#0
                MOV R4,#16
HO_EGDIAGA00:   PUSH 04h
                ACALL READ_R0_ACC
                JZ HO_EGDIAGA01
                MOV R5,A
                MOV R3,#0
		MOV R2,#8
HO_EGDGA1:      MOV A,R5
		RRC A
		MOV R5,A
                JNC HO_EGDGA2
                MOV A,R6
                CLR C
                RLC A
                MOV R4,A
                MOV A,R3
                MOV B,#4
                DIV AB
                ADD A,R4
		ACALL SAVE_R1_ACC
                MOV A,B
                INC A
		ACALL SAVE_R1_ACC
		INC R7
                MOV A,R7
                CLR C
                SUBB A,#14
                JC HO_EGDGA2
                POP 04h
                LJMP HO_EGDIAGEND
                ;
HO_EGDGA2:      INC R3
                DJNZ R2,HO_EGDGA1
HO_EGDIAGA01:   INC R6
                POP 04h
                DJNZ R4,HO_EGDIAGA00
                ;
                MOV R0,#HO_EGRBUF2+2
                MOV R6,#0
                MOV R4,#16
HO_EGDIAGB00:   PUSH 04h
                ACALL READ_R0_ACC
                JZ HO_EGDIAGB01
                MOV R5,A
                MOV R3,#0
		MOV R2,#8
HO_EGDGB1:      MOV A,R5
		RRC A
		MOV R5,A
                JNC HO_EGDGB2
                MOV A,R6
                CLR C
                RLC A
                MOV R4,A
                MOV A,R3
                MOV B,#4
                DIV AB
                ADD A,R4
                ADD A,#32
		ACALL SAVE_R1_ACC
                MOV A,B
                INC A
		ACALL SAVE_R1_ACC
		INC R7
                MOV A,R7
                CLR C
                SUBB A,#14
                JC HO_EGDGB2
                POP 04h
                LJMP HO_EGDIAGEND
                ;
HO_EGDGB2:      INC R3
                DJNZ R2,HO_EGDGB1
HO_EGDIAGB01:   INC R6
                POP 04h
                DJNZ R4,HO_EGDIAGB00
                ;
HO_EGDIAGEND:   MOV A,R7
                MOV R0,#SEND_BUF
                MOV @r0,a
                RET

gz_atgetcode:   MOV R0,#SEND_BUF+6
                MOV R1,#DTC_INFO+18
                MOV R7,#0
                MOV R6,#0
                MOV R4,#12
HO_ATDIAG00:    PUSH 04h
                ACALL READ_R0_ACC
                JZ HO_ATDIAG01
                MOV R5,A
                MOV R3,#0
		MOV R2,#8
HO_ATDG1:       MOV A,R5
		RRC A
		MOV R5,A
                JNC HO_ATDG2
                MOV A,R6
                CLR C
                RLC A
                MOV R4,A
                MOV A,R3
                MOV B,#4
                DIV AB
                ADD A,R4
		ACALL SAVE_R1_ACC
                MOV A,B
                INC A
		ACALL SAVE_R1_ACC
		INC R7
                MOV A,R7
                CLR C
                SUBB A,#19
                JC HO_ATDG2
                POP 04h
                LJMP HO_ATDIAGEND
                ;
HO_ATDG2:       INC R3
                DJNZ R2,HO_ATDG1
HO_ATDIAG01:    INC R6
                POP 04h
                DJNZ R4,HO_ATDIAG00
                ;
HO_ATDIAGEND:   MOV A,R7
                MOV R0,#SEND_BUF
                MOV @r0,a
                JNZ HO_AtDIAGEND_0
                RET
HO_AtDIAGEND_0: MOV R1,#DTC_INFO
                MOV R0,#DTC_INFO+18
HO_AtDIAGEND_1: ACALL READ_R0_ACC
                ACALL SAVE_R1_ACC
                ACALL READ_R0_ACC
                ACALL SAVE_R1_ACC
                DJNZ R7,HO_AtDIAGEND_1
                RET

gz_absgetcode:  MOV R0,#SEND_BUF+2
                MOV R1,#DTC_INFO+18
                MOV R7,#0
                MOV R6,#1
                MOV R4,#8
   HO_ABSDIAG00:ACALL READ_R0_ACC
                INC R6
                JZ HO_ABSDIAG01
                MOV R5,A
                MOV R3,#1
		MOV R2,#8
      HO_ABSDG1:MOV A,R5
		RRC A
		MOV R5,A
                JNC HO_ABSDG2
                MOV A,R6
                MOV B,#5
                MUL AB
                MOV B,R3
                ADD A,B
		ACALL SAVE_R1_ACC
                MOV A,#1
		ACALL SAVE_R1_ACC
		INC R7
                MOV A,R7
                CLR C
                SUBB A,#19
                JC HO_ABSDG2
                AJMP HO_ABSDIAGEND
                ;
      HO_ABSDG2:INC R3
                DJNZ R2,HO_ABSDG1
   HO_ABSDIAG01:ACALL READ_R0_ACC
                INC R6
                DJNZ R4,HO_ABSDIAG00
                ;
HO_ABSDIAGEND:  MOV A,R7
                MOV R0,#SEND_BUF
                MOV @r0,a
                JNZ HO_ABSDIAGEND_0
                RET
HO_ABSDIAGEND_0:MOV R1,#DTC_INFO
                MOV R0,#DTC_INFO+18
HO_ABSDIAGEND_1:ACALL READ_R0_ACC
                ACALL SAVE_R1_ACC
                ACALL READ_R0_ACC
                ACALL SAVE_R1_ACC
                DJNZ R7,HO_ABSDIAGEND_1
                RET

gz_srsgetcode:  MOV R0,#SEND_BUF+10
                MOV A,@r0
                MOV r2,A
                MOV R0,#SEND_BUF+12
                MOV A,@r0
                MOV r3,A
                MOV R0,#SEND_BUF+14
                MOV A,@r0
                MOV r4,A
                CJNE A,#0,HO_SRSRD2
                MOV A,r3
                CJNE A,#0,HO_SRSRD2
                MOV A,r2
                CJNE A,#0,HO_SRSRD2
                MOV R0,#SEND_BUF
                MOV a,#0
                MOV @r0,a
                RET
                ;
HO_SRSRD2:      MOV R0,#SEND_BUF+10
                MOV R1,#DTC_INFO
                MOV R7,#0
                MOV R6,#3
   HO_SRSDIAG00:ACALL READ_R0_ACC
                JZ HO_SRSDIAG01
                MOV B,A
                SWAP A
                ANL A,#0FH
                ACALL SAVE_R1_ACC
                MOV A,B
                ANL A,#0FH
                ACALL SAVE_R1_ACC
                INC R7
                MOV A,R7
                CLR C
                SUBB A,#19
                JC HO_SRSDIAG01
                LJMP HO_SRSDIAGEND
                ;
   HO_SRSDIAG01:ACALL READ_R0_ACC
                DJNZ R6,HO_SRSDIAG00
                ;
HO_SRSDIAGEND:  MOV A,R7
                MOV R0,#SEND_BUF
                MOV @r0,a
                RET

                END

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -