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

📄 gz_honda.asm

📁 51汇编语言,可以读取广州本田汽车的故障码
💻 ASM
📖 第 1 页 / 共 2 页
字号:
;PORT DEFINITION=============================================================;

                ;CPU PIN DEFINITION-----------------------------------
                LED_D4          EQU     0B5H            ;P3.5
                LED_D3          EQU     0B4H            ;P3.4
                LED_D2          EQU     0B3H            ;P3.3
                LED_D1          EQU     0B2H            ;P3.2
                ;
                DBUF1           EQU     4FH     ;01
                DBUF2           EQU     4EH     ;01
                DBUF3           EQU     4DH     ;01
                DBUF4           EQU     4CH     ;01
                DCOUNT          EQU     4BH     ;01
                COMTIME         EQU     4AH
                SYSTEMNUM       EQU     49H
                ;
                DPH0            EQU     4FH
                DPL0            EQU     4EH
                VER_1           EQU     4DH
                ;
                SEND_BUF        EQU     08H
                HO_EGRBUF1      EQU     24H
                HO_EGRBUF2      EQU     36H

                INFO_END        EQU     48H
                DTC_INFO        EQU     09H
                ;
                ;OBD-ISO
                RXD             EQU     0B0H            ;P3.0
                TXD             EQU     0B1H            ;P3.1
                ;
                ;CONSTANT DEFINITION----------------------------------

                TH_1MS          EQU     250
                TL_1MS          EQU     000
                TH_20MS         EQU     136     ;196
                TL_20MS         EQU     000
                B9600           EQU     0FBH




;ORG 0000H===================================================================;

                ORG 0000H


SYSTEM_JUMP:    AJMP START
                ORG 0003H
                AJMP INT0_INT
                ORG 000BH
                AJMP T0_INT
                ORG 0013H
                AJMP INT1_INT
                ORG 001BH
                AJMP T1_INT
                ORG 0023H
                AJMP SIO_INT

;ORG 0050H===================================================================;

                ORG 0050H

START:          MOV SP,#50H
                MOV IE,#00H
                MOV PSW,#00H
                MOV TMOD,#21H
                ACALL SET_COMM_BAUD
                ;
                MOV COMTIME,#3
START_1:        ACALL DIS_AFACE
                MOV SYSTEMNUM,#1
                ;
START_2:        ACALL GZ_READ
                ;
                ACALL DISP_DTC
                CLR C
                MOV A,SYSTEMNUM
                SUBB A,#4
                JNC START_3
                INC SYSTEMNUM
                AJMP START_2
                ;
START_3:        DJNZ COMTIME,START_1
                ;
                ACALL GZ_CLRCODE
                AJMP START
                ;
SET_COMM_BAUD:  MOV PCON,#00H
                MOV TCON,#00H
                MOV TH1,#B9600
                MOV TL1,#B9600
                SETB TR1
                MOV SCON,#50H
                MOV A,SBUF
                MOV A,SBUF
                RET

;[DISPLAY PROGRAMME:]======================================
DISP_DTC:       ACALL DIS_SYSNUM
                ;
                MOV R0,#SEND_BUF
                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
                ACALL DIS_START
                ACALL AFACE_DELAY
                MOV DBUF1,#15H
                MOV DBUF2,#01H
                MOV DBUF3,#18H
                MOV DBUF4,#18H
                MOV R5,#5
DIS_SYSNUM11:   ACALL AFACE_DELAY        ;
                DJNZ R5,DIS_SYSNUM11
                ACALL DIS_STOP
                ACALL AFACE_DELAY
                RET
DIS_SYSNUM2:    CJNE A,#2,DIS_SYSNUM3
                ACALL DIS_START
                ACALL AFACE_DELAY
                MOV DBUF1,#15H
                MOV DBUF2,#02H
                MOV DBUF3,#18H
                MOV DBUF4,#18H
                MOV R5,#5
DIS_SYSNUM21:   ACALL AFACE_DELAY        ;
                DJNZ R5,DIS_SYSNUM21
                ACALL DIS_STOP
                ACALL AFACE_DELAY
                RET
DIS_SYSNUM3:    CJNE A,#3,DIS_SYSNUM4
                ACALL DIS_START
                ACALL AFACE_DELAY
                MOV DBUF1,#15H
                MOV DBUF2,#03H
                MOV DBUF3,#18H
                MOV DBUF4,#18H
                MOV R5,#5
DIS_SYSNUM31:   ACALL AFACE_DELAY        ;
                DJNZ R5,DIS_SYSNUM31
                ACALL DIS_STOP
                ACALL AFACE_DELAY
                RET
DIS_SYSNUM4:    ACALL DIS_START
                ACALL AFACE_DELAY
                MOV DBUF1,#15H
                MOV DBUF2,#04H
                MOV DBUF3,#18H
                MOV DBUF4,#18H
                MOV R5,#5
DIS_SYSNUM41:   ACALL AFACE_DELAY        ;
                DJNZ R5,DIS_SYSNUM41
                ACALL DIS_STOP
                ACALL AFACE_DELAY
                RET
                ;
DIS_START:      MOV DCOUNT,#1
                MOV TH0,#TH_1MS
                MOV TL0,#TL_1MS
                SETB TR0
                SETB ET0
                SETB EA
                ACALL DIS_CLRDATA
                RET

DIS_STOP:       ACALL DIS_CLRDATA
                MOV R4,#10
                ACALL DELAY_10MS
                CLR TR0
                CLR EA
                CLR ET0                
                RET

DIS_CLRDATA:    MOV DBUF1,#20H
                MOV DBUF2,#20H
                MOV DBUF3,#20H
                MOV DBUF4,#20H
                RET

DIS_CODEOK:     ACALL DIS_START
                MOV DBUF1,#16H
                MOV DBUF2,#16H
                MOV DBUF3,#16H
                MOV DBUF4,#16H
                MOV R4,#200
                ACALL DELAY_10MS
                MOV R4,#200
                ACALL DELAY_10MS
                ACALL DIS_STOP
                MOV R4,#250
                ACALL DELAY_10MS
                MOV R4,#250
                ACALL DELAY_10MS
                RET

DIS_ERROR:      ACALL DIS_START
                MOV DBUF1,#0EH
                MOV R4,#250
                ACALL DELAY_10MS
                MOV R4,#250
                ACALL DELAY_10MS
                ACALL DIS_STOP
                MOV R4,#250
                ACALL DELAY_10MS
                RET

DIS_CODECOD:    PUSH 00H
                PUSH 06H
                PUSH 07H
                ;
                ACALL DIS_START
                MOV R0,#SEND_BUF
                ACALL READ_R0_ACC
                MOV R7,A
                MOV R6,#3
      DIS_COD00:PUSH 07H
                PUSH 00H
      DIS_COD01:ACALL READ_R0_ACC
                MOV B,#16
                DIV AB
                MOV DBUF1,A
                MOV DBUF2,B
                ACALL READ_R0_ACC
                MOV B,#16
                DIV AB
                MOV DBUF3,A
                MOV DBUF4,B
                MOV R4,#200
                ACALL DELAY_10MS
                DJNZ R7,DIS_COD01
                ACALL DIS_CLRDATA
                MOV R4,#250
                ACALL DELAY_10MS
                POP 00H
                POP 07H
                DJNZ R6,DIS_COD00
                ACALL DIS_STOP
                MOV R4,#250
                ACALL DELAY_10MS
                ;
                POP 07H
                POP 06H
                POP 00H
                RET

DELAY_1MS:      PUSH 00H
                MOV R0,#255
                DJNZ R0,$
                MOV R0,#255
                DJNZ R0,$
                MOV R0,#255
                DJNZ R0,$
                POP 00H
                DJNZ R4,DELAY_1MS
                RET

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

READ_R0_ACC:    MOV A,@R0
                INC R0
                RET
SAVE_R1_ACC:    MOV @R1,A
                INC R1
                RET

DIS_AFACE:      ACALL DIS_START
                ACALL AFACE_DELAY        ;'    '
                ;
                MOV DBUF1,#20H
                MOV DBUF2,#20H
                MOV DBUF3,#20H
                MOV DBUF4,#10H
                ACALL AFACE_DELAY        ;'   L'
                ;
                MOV DBUF1,#20H
                MOV DBUF2,#20H
                MOV DBUF3,#10H
                MOV DBUF4,#11H
                ACALL AFACE_DELAY        ;'  LA'
                ;
                MOV DBUF1,#20H
                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,#20H
                ACALL AFACE_DELAY        ;'NCH '
                ;
                MOV DBUF1,#14H
                MOV DBUF2,#15H
                MOV DBUF3,#20H
                MOV DBUF4,#20H
                ACALL AFACE_DELAY        ;'CH  '
                ;
                MOV DBUF1,#15H
                MOV DBUF2,#20H
                MOV DBUF3,#20H
                MOV DBUF4,#20H
                ACALL AFACE_DELAY        ;'H   '
                ;
                ACALL DIS_STOP
                ACALL AFACE_DELAY        ;'    '
                RET
                ;
    AFACE_DELAY:MOV R4,#30
                ACALL DELAY_10MS
                RET



INT0_INT:
INT1_INT:
T1_INT:
SIO_INT:        RETI

T0_INT:         PUSH ACC
                PUSH B
                PUSH PSW
                PUSH DPH
                PUSH DPL
                ;
                MOV TH0,#TH_1MS
                MOV TL0,#TL_1MS
                INC DCOUNT
                MOV A,DCOUNT
           DT01:CJNE A,#1,DT02
                MOV A,DBUF1
                CLR  LED_D1
                SETB LED_D2
                SETB LED_D3
                SETB LED_D4
                AJMP DT0DIS
           DT02:CJNE A,#2,DT03
                MOV A,DBUF2
                SETB LED_D1
                CLR  LED_D2
                SETB LED_D3
                SETB LED_D4
                AJMP DT0DIS
           DT03:CJNE A,#3,DT04
                MOV A,DBUF3
                SETB LED_D1
                SETB LED_D2
                CLR  LED_D3
                SETB LED_D4
                AJMP DT0DIS
           DT04:MOV DCOUNT,#0
                MOV A,DBUF4
                SETB LED_D1
                SETB LED_D2
                SETB LED_D3
                CLR  LED_D4
                AJMP DT0DIS
         DT0DIS:MOV DPTR,#LED_DCHARACTER
                MOVC A,@A+DPTR
                MOV P1,A
                ;
                POP DPL
                POP DPH
                POP PSW
                POP B
                POP ACC
                RETI

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

;============================================
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

⌨️ 快捷键说明

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