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

📄 sh_gm.asm

📁 读取上海通用车系故障码的51程序.凯越车不适用
💻 ASM
📖 第 1 页 / 共 3 页
字号:
                MOV ver_3,#7fh
                MOV r1,#2
                ACALL gm_selread
                ;
                MOV dptr,#SHGM_engclCOMM3
                MOV ver_2,#10h
                MOV ver_3,#54h
                MOV r1,#4
                ACALL gm_selread
                ;
                MOV dptr,#SHGM_absclCOMM1
                MOV ver_2,#0aah
                MOV ver_3,#6ah
                MOV r1,#2
                ACALL gm_selread
                ;
                MOV dptr,#SHGM_absclCOMM3
                MOV ver_2,#28h
                MOV ver_3,#60h
                MOV r1,#2
                ACALL gm_selread
                ;
                MOV dptr,#SHGM_absclCOMM4
                MOV ver_2,#28h
                MOV ver_3,#54h
                MOV r1,#4
                ACALL gm_selread
                ;
                MOV dptr,#SHGM_absclCOMM2
                MOV ver_2,#0aah
                MOV ver_3,#6ah
                MOV r1,#2
                ACALL gm_selread
                ;
                MOV dptr,#SHGM_absclCOMM3
                MOV ver_2,#28h
                MOV ver_3,#60h
                MOV r1,#2
                ACALL gm_selread
                ;
                MOV dptr,#SHGM_absclCOMM4
                MOV ver_2,#28h
                MOV ver_3,#54h
                MOV r1,#4
                ACALL gm_selread
                ;
                MOV dptr,#SHGM_srsclCOMM1
                MOV ver_2,#0aah
                MOV ver_3,#6ah
                MOV r1,#2
                ACALL gm_selread
                ;
                MOV dptr,#SHGM_srsclCOMM2
                MOV ver_2,#58h
                MOV ver_3,#60h
                MOV r1,#2
                ACALL gm_selread
                ;
                MOV dptr,#SHGM_srsclCOMM3
                MOV ver_2,#58h
                MOV ver_3,#54h
                MOV r1,#4
                ACALL gm_selread
                RET
                ;
gm_read:        CLR psw.1
                MOV r0,#info_end
                MOV a,#0aah
                MOV @r0,a
                MOV a,systemnum
                CJNE a,#1,gm_read_1
                MOV dptr,#SHGM_engCOMM1
                MOV ver_2,#10h
                MOV ver_3,#60h
                MOV r1,#2
                ACALL gm_selread
                ;
                MOV dptr,#SHGM_engCOMM2
                MOV ver_2,#10h
                MOV ver_3,#59h
                MOV r1,#2
                ACALL gm_selread
                ACALL gm_save
                RET
                ;
gm_read_1:      CJNE a,#2,gm_read_2
                MOV dptr,#SHGM_absCOMM1
                MOV ver_2,#0aah
                MOV ver_3,#6ah
                MOV r1,#2
                ACALL gm_selread
                ;
                MOV dptr,#SHGM_absCOMM2
                MOV ver_2,#28h
                MOV ver_3,#59h
                MOV r1,#2
                ACALL gm_selread
                ACALL gm_save
                JNB psw.1,gm_read_10
                RET
gm_read_10:     ACALL gm_to57h
                MOV dptr,#SHGM_absCOMM3
                MOV ver_2,#28h
                MOV ver_3,#59h
                MOV r1,#2
                ACALL gm_selread
                ACALL gm_save
                RET
                ;
gm_read_2:      MOV dptr,#SHGM_srsCOMM1
                MOV ver_2,#0aah
                MOV ver_3,#6ah
                MOV r1,#2
                ACALL gm_selread
                ;
                MOV dptr,#SHGM_srsCOMM2
                MOV ver_2,#58h
                MOV ver_3,#60h
                MOV r1,#2
                ACALL gm_selread
                ;
                MOV dptr,#SHGM_srsCOMM3
                MOV ver_2,#58h
                MOV ver_3,#59h
                MOV r1,#2
                ACALL gm_selread
                ACALL gm_save
                JNB psw.1,gm_read_20
                RET
gm_read_20:     ACALL gm_to57h
                MOV dptr,#SHGM_srsCOMM4
                MOV ver_2,#58h
                MOV ver_3,#59h
                MOV r1,#2
                ACALL gm_selread
                ACALL gm_save
                RET
                ;
gm_save:        MOV gm_num,#3
gm_save_0:      JNC gm_save_2
                MOV r0,#info_end
                MOV a,@r0
                CJNE a,#0aah,gm_save_00
                MOV a,#0ffh
                MOV @r0,a
                MOV r0,#send_buf
                MOV A,#0ffh
                MOV @r0,a
                RET
gm_save_00:     CJNE a,#0ffh,gm_save_1
                MOV r0,#send_buf
                MOV A,#0ffh
                MOV @r0,a
                RET
                ;
gm_save_1:      MOV r0,#send_buf
                MOV A,#0
                MOV @r0,a
                AJMP gm_save_6
                ;
gm_save_2:      MOV r0,#info_end
                MOV a,@r0
                CJNE a,#0aah,gm_save_3
                MOV a,#0ffh
                MOV @r0,a
gm_save_3:      ACALL gm_getcode
                JB psw.5,gm_save_5
                ACALL gm_to08h
                JB psw.1,gm_save_7
                ACALL gm_to57h
                djnz gm_num,gm_save_4
                AJMP gm_save_7
                ;
gm_save_4:      ACALL gm_READ_ONLY
                AJMP gm_save_0
                ;
gm_save_5:      ;SETB psw.1
gm_save_6:      ACALL gm_to08h
gm_save_7:      ACALL del_same_code
                RET

del_same_code:  MOV R5,#1
                MOV R4,#1
dsc_0:          MOV R0,#SEND_BUF
                MOV A,@R0
                JNZ dsc_1
                RET
dsc_1:          CJNE A,#1,dsc_2
                RET
dsc_2:          CJNE A,#0FFH,dsc_3
                RET
dsc_3:          MOV R7,A
                CLR C
                RLC A
                INC ACC
                ADD A,R0
                MOV R6,A
                ;
                MOV A,R4
                CLR C
                SUBB A,R7
                JC dsc_4
                RET
                ;
dsc_4:          MOV A,R7
                CLR C
                SUBB A,R4
                MOV R7,A
                ;
                MOV A,R4
                MOV R5,A
                ACALL dsc_GETADD
                MOV A,@R0
                INC R0
                MOV R2,A
                MOV A,@R0
                INC R0
                MOV R3,A
                ;
                INC R5
dsc_5:          ACALL dsc_GETADD
                MOV A,@R0
                INC R0
                MOV B,A
                MOV A,R2
                CJNE A,B,dsc_7
                MOV A,@R0
                MOV B,A
                MOV A,R3
                CJNE A,B,dsc_7
                DEC R0
                MOV A,R0
                INC A
                INC A
                MOV R1,A
dsc_6:          MOV A,@R1
                INC R1
                MOV @R0,A
                INC R0
                MOV A,@R1
                INC R1
                MOV @R0,A
                INC R0
                MOV A,R1
                CLR C
                SUBB A,R6
                JC dsc_6
                MOV R0,#SEND_BUF
                MOV A,@R0
                DEC A
                MOV @R0,A
                AJMP dsc_0
dsc_7:          INC R5
                DJNZ R7,dsc_5
                MOV R0,#SEND_BUF
                MOV A,@R0
                MOV B,A
                INC R4
                MOV A,R4
                CLR C
                SUBB A,B
                JC dsc_8
                RET
                ;
dsc_8:          AJMP dsc_0
                ;
dsc_GETADD:     MOV r0,#send_buf
                MOV A,R5
                DEC A
                CLR C
                RLC A
                INC ACC
                ADD A,R0
                MOV R0,A
                RET

gm_getcode:     CLR PSW.5
                MOV r1,#dtc_info
                MOV r0,#send_buf
                MOV a,@r0
                MOV r7,a
                INC r0
                MOV a,r0
                MOV r4,a
                MOV a,@r0
                MOV r6,a
                MOV r5,#0
                ;
gm_getcode1:    MOV a,r6
                CLR c
                SUBB a,#8
                JNC gm_getcode2
                AJMP gm_getcode3
                ;
gm_getcode2:    INC r0
                INC r0
                INC r0
                INC r0
                INC r0
                MOV a,@r0
                INC r0
                MOV R2,A
                MOV a,@r0
                INC r0
                MOV R3,A
                JNZ gm_getcode20
                MOV A,R2
                JNZ gm_getcode20
                SETB PSW.5
                AJMP gm_getcode3
                ;
gm_getcode20:   MOV A,R2
                MOV @r1,a
                INC r1
                MOV A,R3
                MOV @r1,a
                INC r1
                INC r5
                ;
gm_getcode3:    djnz r7,gm_getcode4
                AJMP gm_getcode_end
                ;
gm_getcode4:    MOV a,r4
                INC acc
                ADD a,r6
                MOV r4,a
                MOV r0,a
                MOV a,@r0
                MOV r6,a
                AJMP gm_getcode1
                ;
gm_getcode_end: MOV r0,#send_buf
                MOV a,r5
                MOV @r0,a
                RET

gm_to57h:       MOV r0,#send_buf
                MOV a,@r0
                CJNE a,#0ffh,gm_to57h_1
                AJMP gm_to57h_2
                ;
gm_to57h_1:     CLR c
                SUBB a,#9
                JC gm_to57h_2
                MOV r0,#send_buf
                MOV a,#8
                MOV @r0,a
gm_to57h_2:     MOV r7,#17
                MOV r0,#send_buf
                MOV r1,#info_end
gm_to57h_3:     MOV a,@r0
                INC r0
                MOV @r1,a
                INC r1
                djnz r7,gm_to57h_3
                RET

gm_buff:        
gm_buff_1:      MOV a,@r1
                INC r1
                MOV @r0,a
                INC r0
                djnz r7,gm_buff_1
                RET

gm_to08h:       MOV r0,#send_buf
                MOV a,@r0
                JNZ gm_to08h_2
                MOV r0,#info_end
                MOV a,@r0
                CJNE a,#0ffh,gm_to08h_1
                MOV r0,#send_buf
                MOV a,#0
                MOV @r0,a
                RET
                ;
gm_to08h_1:     MOV r7,#17
                MOV r0,#send_buf
                MOV r1,#info_end
                ACALL gm_buff
                RET
                ;
gm_to08h_2:     MOV r6,a
                CLR c
                SUBB a,#9
                JC gm_to08h_3
                SETB psw.1
gm_to08h_3:     MOV r0,#info_end
                MOV a,@r0
                CJNE a,#0ffh,gm_to08h_4
                RET
gm_to08h_4:     CJNE a,#0,gm_to08h_40
                RET
gm_to08h_40:    MOV r2,a
                CLR C
                RLC A
                MOV R7,A
                ;
                MOV a,r6
                MOV r5,a
                ACALL dsc_GETADD
                INC r0
                INC r0
                MOV r1,#info_end+1
                ACALL gm_buff
                MOV a,r6
                ADD a,r2
                MOV r0,#send_buf
                MOV @r0,a
                CLR c
                SUBB a,#9
                JC gm_to08h_5
                SETB psw.1
gm_to08h_5:     RET

                END

⌨️ 快捷键说明

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