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

📄 gobd2.asm

📁 51程序,可以用于读取支持OBDii协议的汽车的读取故障码
💻 ASM
📖 第 1 页 / 共 3 页
字号:
                INC R7
                ;
     ISO_RD00_1:MOV R3,#70
                lcall READDAT_WAIT
                JC ISO_RD01_1
                MOV @R0,A
                INC R7
                INC R0
                DJNZ R6,ISO_RD00_1
               ;
     ISO_RD01_1:MOV R0,#READ_BUF+1
                MOV A,R7
                MOV @R0,A
                JNZ ISO_RD02_1
                MOV READ_BUF,#1
                SETB C
                RET
                ;
     ISO_RD02_1:CLR C
                MOV READ_BUF,#1
                RET

ISO_SEND_READ:  ;SEND--------------------
                MOV R0,#SEND_BUF
                MOV A,@R0
                JZ ISO_SEND_END
                MOV R5,A
    ISO_SEND_00:INC R0
                MOV A,@R0
                LCALL SEND_ACC
                MOV R4,#04
                LCALL DELAY_1MS
                DJNZ R5,ISO_SEND_00
   ISO_SEND_END:
		;READ-------------------
                MOV R6,#35
                LCALL ISO_READDATA
                RET



;USEFUL SUBROUTINE===========================================================;
CLR_BUF:        MOV R0,#08H     ;SEND_BUF
                MOV R1,#50
                CLR A
      CLR_BUF01:MOV @R0,A
                INC R0
                DJNZ R1,CLR_BUF01

TRANS_TOBUF:    MOV R0,#SEND_BUF
                CLR A
                MOVC A,@A+DPTR
                MOV @R0,A
                MOV R1,A
                SETB C
                JZ TRANSBUF2
      TRANSBUF1:INC DPTR
                INC R0
                CLR A
                MOVC A,@A+DPTR
                MOV @R0,A
                DJNZ R1,TRANSBUF1
                CLR C
      TRANSBUF2:RET


READ_CODE:      MOV R7,#0
                MOV R0,#READ_BUF+1
                MOV R1,#TEST_CODE+1
                MOV R4,#3
         OB_F10:INC R0          ;
                INC R0
                INC R0
                INC R0
                INC R0          ;dptr=trouble code
                MOV R3,#3
         OB_F11:MOV A,@R0       ;
                INC R0
                MOV R5,A
                MOV A,@R0       ;
                INC R0
                MOV R6,A
                MOV A,R5
                JNZ OB_F12
                MOV A,R6
                JNZ OB_F12
                LJMP OB_F13
         OB_F12:MOV A,R5
                MOV @R1,A       ;
                INC R1
                MOV A,R6
                MOV @R1,A       ;
                INC R1
                INC R7
         OB_F13:DJNZ R3,OB_F11
                DJNZ R4,OB_F10
                MOV R1,#TEST_CODE
                MOV A,R7
                MOV @R1,A
         OB_F14:RET

SET_OK:         CLR A
                MOV TEST_CODE,A
                RET


SET_BAUD_10400: MOV PCON,#00H
                MOV TCON,#00H
                MOV TH1,#B10400
                MOV TL1,#B10400
                SETB TR1
                MOV SCON,#50H
                MOV A,SBUF
                MOV A,SBUF
                RET




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
                LCALL DELAY_1MS
                POP 04H
                DJNZ R4,DELAY_10MS
                RET



DIS_CODE:       MOV R0,#TEST_CODE
                MOV A,@R0
                JNZ OB_RCDCOD
                LCALL DIS_CODEOK
                RET
      OB_RCDCOD:LCALL DIS_CODECOD
                RET


DIS_CODEOK:     MOV DBUF1,#16H
                MOV DBUF2,#16H
                MOV DBUF3,#16H
                MOV DBUF4,#16H
                MOV R5,#50
       DIS_OK01:lcall AFACE_DELAY        ;
                DJNZ R5,DIS_OK01
                RET


DIS_ERROR:      MOV DBUF1,#0EH
                MOV DBUF2,#18H
                MOV DBUF3,#18H
                MOV DBUF4,#18H
                MOV R5,#50
      DIS_ERR01:lcall 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:LCALL AFACE_DELAY        ;
                DJNZ R4,DIS_COD02
                DJNZ R7,DIS_COD01
                MOV R4,#100
                LCALL DELAY_10MS
                DJNZ R6,DIS_COD00
    DIS_COD_END:MOV R4,#100
                LCALL DELAY_10MS
                ;
                RET


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



INT0_INT:
INT1_INT:
T1_INT:
SIO_INT:
T0_INT:         RETI


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
                lcall DIS_NUMBER
                CLR  LED_D1
                LJMP DT0DIS
           DT02:CJNE A,#2,DT03
                MOV A,DBUF2
                lcall DIS_NUMBER
                CLR LED_D2
                LJMP DT0DIS
           DT03:CJNE A,#3,DT04
                MOV A,DBUF3
                lcall DIS_NUMBER
                CLR  LED_D3
                LJMP DT0DIS
           DT04:MOV DCOUNT,#0
                MOV A,DBUF4
                lcall DIS_NUMBER
                CLR  LED_D4
                LJMP DT0DIS
         DT0DIS:MOV R4,#4
                LCALL 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
                lcall DELAY_74164
                CLR P1.0
                lcall DELAY_74164
                SETB P1.0
                lcall 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

OB_PWM_START:   DB 06H,61H,6AH,0F1H,01H,00H,0AH
OB_PWM_NCODE:   DB 06H,61H,6AH,0F1H,01H,01H,17H
OB_PWM_RCODE:   DB 05H,61H,6AH,0F1H,03H,0CCH
OB_PWM_CLRCODE: DB 05H,61H,6AH,0F1H,04H,9FH

OB_VPW_START:   DB 07, 06H,68H,6AH,0F1H,01H,00H,17H
OB_VPW_NCODE:   DB 07, 06H,68H,6AH,0F1H,01H,01H,0AH
OB_VPW_RCODE:   DB 06, 05H,68H,6AH,0F1H,03H,0CDH
OB_VPW_CLRCODE: DB 06, 05H,68H,6AH,0F1H,04H,9EH

OB_ISO_START:   DB 07, 06H,68H,6AH,0F1H,01H,00H,0C4H
OB_ISO_NCODE:   DB 07, 06H,68H,6AH,0F1H,01H,01H,0C5H
OB_ISO_RCODE:   DB 06, 05H,68H,6AH,0F1H,03H,0C6H
OB_ISO_CLRCODE: DB 06, 05H,68H,6AH,0F1H,04H,0C7H

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, 0B2H, 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
                 END

⌨️ 快捷键说明

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