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

📄 sh_gm.asm

📁 读取上海通用车系故障码的51程序.凯越车不适用
💻 ASM
📖 第 1 页 / 共 3 页
字号:
                ;NOP 
                ;NOP 
                ;NOP 
                DJNZ R4,VPW_OSENDS1      ;2
                ;
                MOV P1,#VPW_HI          ;2
                MOV R4,#195             ;391-HI(200)
                DJNZ R4,$               ;
                NOP                     ;1
VPW_OSEND000:   MOV A,@R0
                INC R0
                MOV R7,A        ;1      ;2
VPW_OSEND00:    MOV A,@R0               ;1
                INC R0                  ;1
                MOV R6,#4               ;1
VPW_OSEND01:    MOV P1,#VPW_LO          ;2
                MOV R4,#4               ;9
                DJNZ R4,$               ;
                RLC A                   ;1
                JNC VPW_OSEND02          ;2
                MOV R4,#31              ;125
VPW_OSEND1:     ;JB VPW_IN,VPW_OSEND_STA  ;
                NOP
                NOP
                DJNZ R4,VPW_OSEND1       ;
VPW_OSEND02:    MOV R4,#28              ;113
VPW_OSEND2:     ;JB VPW_IN,VPW_OSEND_STA  ;
                NOP
                NOP
                DJNZ R4,VPW_OSEND2       ;
                MOV P1,#VPW_HI          ;2
                RLC A                   ;1
                JC VPW_OSEND03           ;2
                MOV R4,#64              ;129
                DJNZ R4,$               ;
VPW_OSEND03:    MOV R4,#60              ;121
                DJNZ R4,$               ;
                DJNZ R6,VPW_OSEND01      ;2
                DJNZ R7,VPW_OSEND00      ;2
                DJNZ R1,VPW_OSEND04
                LJMP VPW_OSEND05
VPW_OSEND04:    MOV P1,#VPW_LO
                MOV R0,B
                MOV A,@R0
                INC A
                ADD A,B
                MOV B,A
                LJMP VPW_OSEND_STA
VPW_OSEND05:    MOV P1,#VPW_LO          ;3
                MOV R4,#200             ;401
                DJNZ R4,$               ;
                ;
                POP B
                RET
 
VPW_READ_ONLY:
VPW_OREAD_STA:  MOV 08H,#0
                MOV R1,#09H
                MOV R7,#0
VPW_OREADM2:    MOV R0,#0AH             ;1
VPW_OREADSS:    MOV R3,#20              ;1
VPW_OREADS0:    CLR TR0                 ;1
                CLR TF0                 ;1
                MOV TH0,#TH_10MS        ;2
                MOV TL0,#TL_10MS        ;2
                SETB TR0                ;1
VPW_OREADS1:    JB TF0,VPW_OREADS2       ;2
                MOV R4,#17              ;1
VPW_OREAD1:     JNB VPW_IN,VPW_OREADS1   ;18
                JNB VPW_IN,VPW_OREADS1   ;
                JNB VPW_IN,VPW_OREADS1   ;
                JNB VPW_IN,VPW_OREADS1   ;
                JNB VPW_IN,VPW_OREADS1   ;
                JNB VPW_IN,VPW_OREADS1   ;
                JNB VPW_IN,VPW_OREADS1   ;
                JNB VPW_IN,VPW_OREADS1   ;
                JNB VPW_IN,VPW_OREADS1   ;
                DJNZ R4,VPW_OREAD1       ;2
                AJMP VPW_OREAD00         ;2
VPW_OREADS2:    DJNZ R3,VPW_OREADS0      ;2
                CLR TR0                 ;1
                CLR TF0                 ;1
                AJMP VPW_OREADEND        ;2
VPW_OREAD00:    CLR TR0                 ;1
                CLR TF0                 ;1
     		JB VPW_IN,$             ;2
                ;
                MOV R5,#20
                DJNZ R5,$
                ;
VPW_OREADCL0:	MOV R6,#4               ;1
VPW_OREADCL1:	MOV R4,#7
                DJNZ R4,$
		;+++++++++++++++++++++++++
VPW_OREADCL2:	CLR C                   ;1      以下重复的为滤波作用
VPW_OREADCL40:	MOV R4,#5              ;1
VPW_OREADCL4:	JB VPW_IN,VPW_OREADCL41    ;2
                DJNZ R4,VPW_OREADCL4      ;2
                AJMP VPW_OREADCL50
VPW_OREADCL41:  MOV R5,#18
                DJNZ R5,$
                JNB VPW_IN,VPW_OREADCL5
                RLC A                   ;1
                AJMP VPW_OREADCH
                ;                
VPW_OREADCL50:	MOV R4,#9              ;1
VPW_OREADCL5:	JB VPW_IN,VPW_OREADCL51    ;2
                DJNZ R4,VPW_OREADCL5      ;2
                AJMP VPW_OREADCL60
VPW_OREADCL51:  MOV R5,#18
                DJNZ R5,$
                JNB VPW_IN,VPW_OREADCL6
                RLC A                   ;1
                AJMP VPW_OREADCH
                ;
VPW_OREADCL60:  MOV R4,#9              ;1
VPW_OREADCL6:	JB VPW_IN,VPW_OREADCL61    ;2
                DJNZ R4,VPW_OREADCL6      ;2
                AJMP VPW_OREADCL70
VPW_OREADCL61:  MOV R5,#18
                DJNZ R5,$
                JNB VPW_IN,VPW_OREADCL7
                RLC A                   ;1
                AJMP VPW_OREADCH
                ;
VPW_OREADCL70:	MOV R4,#9              ;1
VPW_OREADCL7:	JB VPW_IN,VPW_OREADCL71    ;2
                DJNZ R4,VPW_OREADCL7      ;2
                SETB C
                AJMP VPW_OREADCLA0
VPW_OREADCL71:  MOV R5,#18
                DJNZ R5,$
                JNB VPW_IN,VPW_OREADCLA
                RLC A                   ;1
                AJMP VPW_OREADCH
                ;
VPW_OREADCLA0:	MOV R4,#9              ;1
VPW_OREADCLA:	JB VPW_IN,VPW_OREADCLA1    ;2
                DJNZ R4,VPW_OREADCLA      ;2
                SETB C
                AJMP VPW_OREADCLB0
                ;
VPW_OREADCLA1:	SETB C
                MOV R5,#18
                DJNZ R5,$
                JNB VPW_IN,VPW_OREADCLB
                RLC A                   ;1
                AJMP VPW_OREADCH
                ;
VPW_OREADCLB0:	MOV R4,#9              ;1
VPW_OREADCLB:	JB VPW_IN,VPW_OREADCLB1    ;2
                DJNZ R4,VPW_OREADCLB      ;2
                AJMP VPW_OREADCLC0
                ;
VPW_OREADCLB1:  MOV R5,#18
                DJNZ R5,$
                JNB VPW_IN,VPW_OREADCLC0
                RLC A                   ;1
                AJMP VPW_OREADCH
                ;
VPW_OREADCLC0:	MOV R4,#50             ;1
VPW_OREADCLC:	JB VPW_IN,VPW_OREADCLC1    ;2
                DJNZ R4,VPW_OREADCLC      ;2
                AJMP VPW_OREADNXT        ;2
                ;
VPW_OREADCLC1:  MOV R5,#18
                DJNZ R5,$
                JNB VPW_IN,VPW_OREADCLC
                RLC A                   ;1
                AJMP VPW_OREADCH
                ;
VPW_OREADCH:    SETB C                  ;1
VPW_OREADCH40:	MOV R4,#9              ;1
VPW_OREADCH4:	JNB VPW_IN,VPW_OREADCH41    ;2
                DJNZ R4,VPW_OREADCH4      ;2
                AJMP VPW_OREADCH50
                ;
VPW_OREADCH41:  MOV R5,#18
                DJNZ R5,$
                JB VPW_IN,VPW_OREADCH5
                AJMP VPW_OREADCOK
                ;                
VPW_OREADCH50:	MOV R4,#9              ;1
VPW_OREADCH5:	JNB VPW_IN,VPW_OREADCH51    ;2
                DJNZ R4,VPW_OREADCH5      ;2
                AJMP VPW_OREADCH60
                ;
VPW_OREADCH51:  MOV R5,#18
                DJNZ R5,$
                JB VPW_IN,VPW_OREADCH6
                AJMP VPW_OREADCOK
                ;
VPW_OREADCH60:  MOV R4,#9              ;1
VPW_OREADCH6:	JNB VPW_IN,VPW_OREADCH61    ;2
                DJNZ R4,VPW_OREADCH6      ;2
                AJMP VPW_OREADCH70
                ;
VPW_OREADCH61:  MOV R5,#18
                DJNZ R5,$
                JB VPW_IN,VPW_OREADCH7
                AJMP VPW_OREADCOK
                ;
VPW_OREADCH70:	MOV R4,#9              ;1
VPW_OREADCH7:	JNB VPW_IN,VPW_OREADCH71    ;2
                DJNZ R4,VPW_OREADCH7      ;2
                CLR C
                AJMP VPW_OREADCHA0
                ;
VPW_OREADCH71:  MOV R5,#18
                DJNZ R5,$
                JB VPW_IN,VPW_OREADCHA
                AJMP VPW_OREADCOK
                ;
VPW_OREADCHA0:	MOV R4,#9              ;1
VPW_OREADCHA:	JNB VPW_IN,VPW_OREADCHA1    ;2
                DJNZ R4,VPW_OREADCHA      ;2
                CLR C
                AJMP VPW_OREADCHB
                ;
VPW_OREADCHA1:	CLR C
                MOV R5,#18
                DJNZ R5,$
                JB VPW_IN,VPW_OREADCHB
                AJMP VPW_OREADCOK
                ;
VPW_OREADCHB:	JB VPW_IN,$		;2
                MOV R5,#18
                DJNZ R5,$
                JB VPW_IN,VPW_OREADCHB
                AJMP VPW_OREADCOK
                ;
VPW_OREADCOK:	RLC A                   ;1
                DJNZ R6,VPW_OREADCTRAN      ;2
                PUSH ACC	;2
                MOV A,R0	;1
                CLR C		;1
                SUBB A,#info_end        ;58H	;1
                JNC VPW_OREADERR1;2
                POP ACC		;2
                MOV @R0,A               ;1
                INC R0                  ;1
                INC R7                  ;1
                MOV R6,#4               ;1
                AJMP VPW_OREADCL2         ;2
                ;
VPW_OREADCTRAN:	AJMP VPW_OREADCL1
VPW_OREADERR1:  POP ACC
                LJMP VPW_OREADEND
                ;
VPW_OREADNXT:	MOV A,R6
    		CJNE A,#4,VPW_OREADERR2
		;
    		INC 08H
                MOV A,R7
                MOV @R1,A
		MOV A,R0
                MOV R1,A
                INC R0
                MOV R7,#0               
                AJMP VPW_OREADSS
                ;                       
VPW_OREADEND:   MOV A,08H               
                JZ VPW_OREADERR
                CLR C
                MOV A,#0
                RET
VPW_OREADERR:   MOV 08H,#01H            
                MOV 09H,#01H            
                MOV 0AH,#07H
                SETB C
                MOV A,#0
                RET
VPW_OREADERR2:	MOV 08H,#01H            
                MOV 09H,#01H            
                MOV 0AH,#0FFH
                SETB C
                MOV A,#0AAH
		RET

gm_index:       MOV a,ver_2
                CJNE a,#0aah,gm_index0
                CLR c
                RET
                ;
gm_index0:      MOV r0,#send_buf
                MOV A,@r0
                CJNE a,#0,gm_index1
                SETB c
                RET
                ;
gm_index1:      MOV R6,A
                MOV R2,#1
gm_index2:      MOV r0,#send_buf+1
                ACALL SHGM_LOCT
                INC r0
                INC r0
                INC r0
                MOV A,@r0
                CJNE a,ver_2,gm_index3
                INC r0
                MOV A,@r0
                CJNE a,ver_3,gm_index3
                AJMP gm_index4
                ;
gm_index3:      ACALL gm_delinfo
                AJMP gm_index0
                ;
gm_index4:      INC R2
                DJNZ R6,gm_index2
                CLR c
                RET

SHGM_LOCT:      PUSH 02H
SHGM_LOCT_1:    DJNZ R2,SHGM_LOCT_2
                AJMP SHGM_LOCT_END
SHGM_LOCT_2:    MOV A,@r0
                INC A
                ADD A,r0
                MOV r0,a
                AJMP SHGM_LOCT_1
SHGM_LOCT_END:  POP 02H
                RET

gm_delinfo:     MOV r0,#send_buf
                MOV A,@r0
                MOV R6,A
gm_delinfo1:    MOV r0,#send_buf+1
                ACALL SHGM_LOCT
                MOV a,r0
                MOV r1,a
                INC r2
                MOV r0,#send_buf+1
                ACALL SHGM_LOCT
                ;
gm_delinfo2:    MOV a,r0
                CLR c
                SUBB a,#info_end        ;58h
                JNC gm_delinfo3
                MOV a,@r0
                INC r0
                MOV @r1,a
                INC r1
                AJMP gm_delinfo2
                ;
gm_delinfo3:    MOV a,r6
                MOV r0,#send_buf
                dec a
                MOV @r0,a
                RET
;============================================================================;
SHGM_engCOMM1:  
SHGM_engclCOMM1:DB  05H, 6CH, 10H,0F1H, 20H, 64h
SHGM_engCOMM2:  DB  08H, 6CH, 10H,0F1H, 19H,0DAH,0FFH, 00H, 3fh
SHGM_engclCOMM2:DB  06H, 6CH, 10H,0F1H, 10H, 00H, 1ah
SHGM_engclCOMM3:DB  05H, 6CH, 10H,0F1H, 14H, 5ah

SHGM_absCOMM1:  
SHGM_absclCOMM1:DB  07H, 6CH, 28H,0F1H, 2AH, 01H, 50H,0c9h
SHGM_absCOMM2:  DB  08H, 6CH, 28H,0F1H, 19H, 02H,0FFH, 00H,0bdh
SHGM_absCOMM3:  DB  08H, 6CH, 28H,0F1H, 19H, 10H,0FFH, 00H,0a6h
;SHGM_absCOMM4:  DB  07H, 6CH, 28H,0F1H, 2AH, 01H, 14H,0aeh
SHGM_absclCOMM2:DB  07H, 6CH, 28H,0F1H, 2AH, 01H, 14H,0aeh
SHGM_absclCOMM3:DB  05H,0ACH, 28H,0F1H, 20H,0e1h
SHGM_absclCOMM4:DB  05H,0ACH, 28H,0F0H, 14H, 93h

SHGM_srsCOMM1:  
SHGM_srsclCOMM1:DB  0cH, 6CH, 80H,0F1H, 2AH, 01H, 19H,0FFH,0FFH,0FFH,0FFH,0FFH, 7dh
SHGM_srsCOMM2:  
SHGM_srsclCOMM2:DB  05H, 6CH, 58H,0F1H, 20H, 08h
SHGM_srsCOMM3:  DB  08H, 6CH, 58H,0F1H, 19H, 02H,0FFH, 00H,0d1h
SHGM_srsCOMM4:  DB  08H, 6CH, 58H,0F1H, 19H, 10H,0FFH, 00H,0cah
SHGM_srsclCOMM3:DB  05H, 6CH, 58H,0F1H, 14H, 36h

gm_trans:       MOV R0,#SEND_BUF
                MOV a,#1
                MOV @R0,A
                INC r0
                CLR A
                MOVC A,@A+DPTR
                MOV @R0,A
                MOV R1,A
                SETB C
                JZ gm_trans2
gm_trans1:      INC DPTR
                INC R0
                CLR A
                MOVC A,@A+DPTR
                MOV @R0,A
                DJNZ R1,gm_trans1
                CLR C
gm_trans2:      RET

gm_selread:     MOV dph0,dph
                MOV dpl0,dpl
gm_selread1:    PUSH 01h
                MOV dph,dph0
                MOV dpl,dpl0
                ACALL gm_trans
                ACALL gm_SENDread
                JNC gm_selread2
                POP 01h
                DJNZ R1,gm_selread1
                SETB c
                RET
                ;
gm_selread2:    POP 01h
                RET

gm_CLRCODE:     MOV dptr,#SHGM_engclCOMM1
                MOV ver_2,#10h
                MOV ver_3,#60h
                MOV r1,#2
                ACALL gm_selread
                ;
                MOV dptr,#SHGM_engclCOMM2
                MOV ver_2,#10h

⌨️ 快捷键说明

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