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

📄 sh_gm.asm

📁 读取上海通用车系故障码的51程序.凯越车不适用
💻 ASM
📖 第 1 页 / 共 3 页
字号:
;-------------------------------------------------------------------------
;OBS.ASM         OBD2 (SUB PROG. FOR OBD2-89C2051/24M)
;2000.11.7
;-------------------------------------------------------------------------
                TH_10MS         EQU     177
                TL_10MS         EQU     224
                ;
                VPW_HI          EQU     0AFH    ;0F5H
                VPW_LO          EQU     0EFH    ;0FDH
                VPW_IN          EQU     P1.7    ;P1.4
                ;
;-------------------------------------------------------------------------
                ;cpu pin definition-----------------------------------
                LED_D1          EQU     P3.5    ;0B5H            ;P3.5
                LED_D2          EQU     P3.4    ;0B4H            ;P3.4
                LED_D3          EQU     P3.3    ;0B3H            ;P3.3
                LED_D4          EQU     P3.2    ;0B2H            ;P3.2
                ;
                ;ram definition---------------------------------------
                SEND_BUF        EQU     08h
                TEST_CODE       EQU     08H
                info_end        EQU     56H
                dtc_info        EQU     09H
                ;
                DBUF1           EQU     6eH     ;01
                DBUF2           EQU     6dH     ;01
                DBUF3           EQU     6cH     ;01
                DBUF4           EQU     6bH     ;01
                DCOUNT          EQU     6aH     ;01
                ;
                COMTIME         EQU     69H
                systemnum       EQU     68h
                gm_num          EQU     67h
                dph0            EQU     6eh
                dpl0            EQU     6dh
                ver_1           EQU     6ch
                ver_2           EQU     6bh
                ver_3           EQU     6ah

                ORG 0000H

;[MAIN PROGRAMME:VPW MODE ]======================================
START:          MOV SP,#6FH
                MOV IE,#00H
                MOV PSW,#00H
                MOV P1,#VPW_LO
                MOV PCON,#80H
                MOV TMOD,#21H
                MOV TCON,#00H
                MOV SCON,#50H
                ;
                MOV COMTIME,#3
                ;
START_1:        ACALL DIS_AFACE
                MOV systemnum,#1
                ;
start_2:        ACALL gm_read
                ;
                ACALL disp_dtc
                CLR c
                MOV a,systemnum
                SUBB a,#3
                JNC start_3
                INC systemnum
                AJMP start_2
                ;
start_3:        DJNZ COMTIME,start_1
                ;
                ACALL gm_CLRCODE
                AJMP START
                ;
;[display PROGRAMME:]======================================
disp_dtc:       ACALL dis_sysnum
                ;
                MOV R0,#TEST_CODE
                MOV A,@R0
                JNZ disp_dtc_1
                ACALL DIS_CODEOK
                RET
disp_dtc_1:     CJNE a,#0ffh,disp_dtc_2
                ACALL DIS_ERROR
                RET
disp_dtc_2:     ACALL DIS_CODECOD
                RET
                ;
dis_sysnum:     MOV a,systemnum
                CJNE a,#1,dis_sysnum2
                MOV DBUF1,#15H
                MOV DBUF2,#01H
                MOV DBUF3,#18H
                MOV DBUF4,#18H
                MOV R5,#5
DIS_sysnum1:    ACALL AFACE_DELAY        ;
                DJNZ R5,DIS_sysnum1
                RET
dis_sysnum2:    CJNE a,#2,dis_sysnum3
                MOV DBUF1,#15H
                MOV DBUF2,#02H
                MOV DBUF3,#18H
                MOV DBUF4,#18H
                MOV R5,#5
DIS_sysnum21:   ACALL AFACE_DELAY        ;
                DJNZ R5,DIS_sysnum21
                RET
dis_sysnum3:    MOV DBUF1,#15H
                MOV DBUF2,#03H
                MOV DBUF3,#18H
                MOV DBUF4,#18H
                MOV R5,#5
DIS_sysnum31:   ACALL AFACE_DELAY        ;
                DJNZ R5,DIS_sysnum31
                RET
                ;
DIS_CODEOK:     MOV DBUF1,#16H
                MOV DBUF2,#16H
                MOV DBUF3,#16H
                MOV DBUF4,#16H
                MOV R5,#20
DIS_OK01:       ACALL AFACE_DELAY        ;
                DJNZ R5,DIS_OK01
                RET

DIS_ERROR:      MOV DBUF1,#0EH
                MOV DBUF2,#18H
                MOV DBUF3,#18H
                MOV DBUF4,#18H
                MOV R5,#20
DIS_ERR01:      ACALL AFACE_DELAY        ;
                DJNZ R5,DIS_ERR01
                RET

DIS_CODECOD:    MOV R6,#3
      DIS_COD00:MOV R0,#TEST_CODE
                MOV A,@R0
                INC R0
                MOV R7,A
                JZ  DIS_COD_END
      DIS_COD01:MOV A,@R0
                INC R0
                MOV B,#16
                DIV AB
                MOV DBUF1,A
                MOV DBUF2,B
                MOV A,@R0
                INC R0
                MOV B,#16
                DIV AB
                MOV DBUF3,A
                MOV DBUF4,B
                MOV R4,#5
      DIS_COD02:ACALL AFACE_DELAY        ;
                DJNZ R4,DIS_COD02
                DJNZ R7,DIS_COD01
                MOV R4,#100
                ACALL DELAY_10MS
                DJNZ R6,DIS_COD00
    DIS_COD_END:MOV R4,#100
                ACALL DELAY_10MS
                ;
                RET

;[display subPROGRAMME:]======================================
DELAY_1MS:      ;for 24MHz
                PUSH 00H        ;2
                PUSH 01H        ;2
                MOV R1,#4       ;1
   DELAY_1MS_00:MOV R0,#248     ;1
                DJNZ R0,$       ;2*246=492
                DJNZ R1,DELAY_1MS_00 ;2
                POP 01H         ;2
                POP 00H         ;2
                DJNZ R4,DELAY_1MS
                RET

DELAY_10MS:     PUSH 04H
                MOV R4,#10
                ACALL DELAY_1MS
                POP 04H
                DJNZ R4,DELAY_10MS
                RET

DIS_AFACE:      MOV DBUF1,#18H
                MOV DBUF2,#18H
                MOV DBUF3,#18H
                MOV DBUF4,#10H
                ACALL AFACE_DELAY        ;'   L'
                ;
                MOV DBUF1,#18H
                MOV DBUF2,#18H
                MOV DBUF3,#10H
                MOV DBUF4,#11H
                ACALL AFACE_DELAY        ;'  LA'
                ;
                MOV DBUF1,#18H
                MOV DBUF2,#10H
                MOV DBUF3,#11H
                MOV DBUF4,#12H
                ACALL AFACE_DELAY        ;' LAU'
                ;
                MOV DBUF1,#10H
                MOV DBUF2,#11H
                MOV DBUF3,#12H
                MOV DBUF4,#13H
                ACALL AFACE_DELAY        ;'LAUN'
                ;
                MOV DBUF1,#11H
                MOV DBUF2,#12H
                MOV DBUF3,#13H
                MOV DBUF4,#14H
                ACALL AFACE_DELAY        ;'AUNC'
                ;
                MOV DBUF1,#12H
                MOV DBUF2,#13H
                MOV DBUF3,#14H
                MOV DBUF4,#15H
                ACALL AFACE_DELAY        ;'UNCH'
                ;
                MOV DBUF1,#13H
                MOV DBUF2,#14H
                MOV DBUF3,#15H
                MOV DBUF4,#18H
                ACALL AFACE_DELAY        ;'NCH '
                ;
                MOV DBUF1,#14H
                MOV DBUF2,#15H
                MOV DBUF3,#18H
                MOV DBUF4,#18H
                ACALL AFACE_DELAY        ;'CH  '
                ;
                MOV DBUF1,#15H
                MOV DBUF2,#18H
                MOV DBUF3,#18H
                MOV DBUF4,#18H
                ACALL AFACE_DELAY        ;'H   '
                ;
                RET
                ;

AFACE_DELAY:    PUSH 00H
                PUSH 04H
                PUSH ACC
                MOV R2,#100
                MOV DCOUNT,#0
     AF_DELAY01:
                INC DCOUNT
                MOV A,DCOUNT
                SETB LED_D1
                SETB LED_D2
                SETB LED_D3
                SETB LED_D4

           DT01:CJNE A,#1,DT02
                MOV A,DBUF1
                ACALL DIS_NUMBER
                CLR  LED_D1
                AJMP DT0DIS
           DT02:CJNE A,#2,DT03
                MOV A,DBUF2
                ACALL DIS_NUMBER
                CLR LED_D2
                AJMP DT0DIS
           DT03:CJNE A,#3,DT04
                MOV A,DBUF3
                ACALL DIS_NUMBER
                CLR  LED_D3
                AJMP DT0DIS
           DT04:MOV DCOUNT,#0
                MOV A,DBUF4
                ACALL DIS_NUMBER
                CLR  LED_D4
                AJMP DT0DIS
         DT0DIS:MOV R4,#4
                ACALL DELAY_1MS
                DJNZ R2,AF_DELAY01
                SETB LED_D1
                SETB LED_D2
                SETB LED_D3
                SETB LED_D4
                POP ACC
                POP 04H
                POP 00H
                RET

DIS_NUMBER:     PUSH 00H           ;显示数字传送
                MOV DPTR,#LED_DCHARACTER
                MOVC A,@A+DPTR
                MOV B,A
                MOV R0,#8
  SENDNUMBER_01:MOV A,B
                CLR C
                RLC A
                MOV B,A
                MOV P1.1,C
                ACALL DELAY_74164
                CLR P1.0
                ACALL DELAY_74164
                SETB P1.0
                ACALL DELAY_74164
                DJNZ R0,SENDNUMBER_01
                SETB P1.1
                CLR P1.0
                POP 00H
                RET

DELAY_74164:    PUSH 00H       
                MOV R0,#5      
                DJNZ R0,$      
                POP 00H         
                RET            

LED_DCHARACTER: ;  00-0  01-1  02-2  03-3  04-4  05-5  06-6  07-7
                DB 002H, 09EH, 024H, 00CH, 098H, 048H, 040H, 01EH
                ;
                ;  08-8  09-9  0A-A  0B-B  0C-C  0D-D  0E-E  0F-F
                DB 000H, 008H, 010H, 0C0H, 062H, 084H, 060H, 070H
                ;
                ;  10-L  11-A  12-U  13-N  14-C  15-H  16--  17-=
                DB 0E2H, 010H, 082H, 012H, 062H, 090H, 0FCH, 0ECH
                ;
                ;  18-*  19-*  1A-*  1B-*  1C-*  1D-*  1E-*  1F-* 
                DB 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH
                ;
                ;  20-*  21-*  22-*  23-*  24-*  25-*  26-*  27-*
                DB 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH

;==============================================
gm_SENDread:    ACALL VPW_SEND_ONLY
gm_READ_ONLY:   MOV ver_1,#3
gm_sendread1:   ACALL VPW_READ_ONLY



;MOV 08h,#3

;MOV 09h,#08h
;MOV 0Ah,#6ch
;MOV 0Bh,#0f1h
;MOV 0Ch,#10h
;MOV 0Dh,#59h
;MOV 0Eh,#00h
;MOV 0Fh,#00h
;MOV 10h,#02h
;MOV 11h,#57h

;MOV 12h,#08h
;MOV 13h,#6ch
;MOV 14h,#0f1h
;MOV 15h,#58h
;MOV 16h,#59h
;MOV 17h,#20h
;MOV 18h,#00h
;MOV 19h,#02h
;MOV 1Ah,#0eeh

;MOV 1Bh,#08h
;MOV 1Ch,#6ch
;MOV 1Dh,#0f1h
;MOV 1Eh,#58h
;MOV 1Fh,#59h
;MOV 20h,#20h
;MOV 21h,#00h
;MOV 22h,#02h
;MOV 23h,#0eeh

;MOV 24h,#08h
;MOV 25h,#6ch
;MOV 26h,#0f1h
;MOV 27h,#10h
;MOV 28h,#59h
;MOV 29h,#00h
;MOV 2Ah,#00h
;MOV 2Bh,#02h
;MOV 2Ch,#0eeh
;CLR c
                JNC gm_sendread2
                RET
                ;
gm_sendread2:   ACALL gm_index
                JC gm_sendread3
                RET
                ;
gm_sendread3:   djnz ver_1,gm_sendread1
                SETB c
                RET

VPW_SEND_ONLY:  ;MOV P1,#VPW_LO
                PUSH B
                MOV R1,08H              
                MOV R7,#0
                MOV B,#09H
VPW_OSEND_STA:  MOV R0,B
VPW_OSENDS0:    MOV R4,#30
VPW_OSENDS1:    JB VPW_IN,VPW_OSENDS0    ;18
                JB VPW_IN,VPW_OSENDS0    ;
                JB VPW_IN,VPW_OSENDS0    ;
                JB VPW_IN,VPW_OSENDS0    ;
                JB VPW_IN,VPW_OSENDS0    ;
                JB VPW_IN,VPW_OSENDS0    ;
                JB VPW_IN,VPW_OSENDS0    ;
                JB VPW_IN,VPW_OSENDS0    ;
                JB VPW_IN,VPW_OSENDS0    ;
                ;NOP 
                ;NOP 
                ;NOP 
                ;NOP 
                ;NOP 
                ;NOP 
                ;NOP 
                ;NOP 
                ;NOP 
                ;NOP 
                ;NOP 
                ;NOP 
                ;NOP 
                ;NOP 
                ;NOP 

⌨️ 快捷键说明

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