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

📄 gobd2.asm

📁 51程序,可以用于读取支持OBDii协议的汽车的读取故障码
💻 ASM
📖 第 1 页 / 共 3 页
字号:
;============================================================================;
;[SYS.]:CREADER GENERAL OBD2 V10                                             ;
;[SUPPORT HARDWARE]:CREADER-OBD2 V10 (89C2051----24MHZ)                      ;
;[NAME]:WEALD HUANG                                         LAUNCH R&D CENTER;
;[DATE]:2000-10-25                                                           ;
;[FILE]:C:\CREADER\SW\V10\OBD2\OBD2.ASM                                      ;
;============================================================================;
;PORT DEFINITION=============================================================;
                ;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
                ;
                ;OBD-ISO
                ;RXD             EQU     0B0H            ;P3.0
                ;TXD             EQU     0B1H            ;P3.1
                K_SWITCH        EQU     P3.7
                L_SWITCH        EQU     P1.2
                ;
                ;OBD-PWM
                PWM_HI          EQU     0F4H            ;11110100       P1.3
                PWM_LO          EQU     0ECH            ;11101100       P1.4
                PWM_IN          EQU     P1.5
                PWM_DATA_TH     EQU     255
                PWM_DATA_TL     EQU     237
                ;
                ;OBD-VPW
                VPW_HI          EQU     0ACH            ;11011100?
                VPW_LO          EQU     0ECH            ;11101100?
                VPW_IN          EQU     P1.7


                ;ram definition---------------------------------------
                SEND_BUF        EQU     08H     ;
                READ_BUF        EQU     14H     ;
                TEST_CODE       EQU     40H
                ;
                DBUF1           EQU     6EH     ;01
                DBUF2           EQU     6DH     ;01
                DBUF3           EQU     6CH     ;01
                DBUF4           EQU     6BH     ;01
                DCOUNT          EQU     6AH     ;01
                ;
                COMTIME         EQU     69H


                ;constant definition----------------------------------
                B10400          EQU     0FAH
                TH_1MS          EQU     248
                TL_1MS          EQU     48
                TH_30MS         EQU     21
                TL_30MS         EQU     160





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

                ORG 0000H

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

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

                ORG 0050H

START:          MOV SP,#6FH
                MOV IE,#00H
                MOV PSW,#00H
                MOV P1,#PWM_LO
                MOV TMOD,#21H           ;T1模式2, 8位自动装载,计波特率; T0模式1, 16位
                MOV TCON,#00H
                MOV COMTIME,#5
      START_COM:LCALL CLR_BUF
                ;
                LCALL DIS_AFACE
                ;
     OBD2_MODE1:;LCALL DIS_MODE1         ;J1850_PWM
                LCALL PWM_COM
                ;
                JC OBD2_MODE2
                DJNZ COMTIME,OBD_MODE1_S0
                LCALL PWM_CLRCODE
                AJMP START
   OBD_MODE1_S0:LCALL DIS_CODE
                AJMP START_COM
                ;

     OBD2_MODE2:LCALL VPW_COM     	;J1850_VPW  (?)
                JC OBD2_MODE21
                DJNZ COMTIME,OBD_MODE2_S0
                LCALL VPW_CLRCODE
                AJMP START
   OBD_MODE2_S0:LCALL DIS_CODE
                AJMP START_COM
                ;

    OBD2_MODE21:LCALL VPW1_COM    ;J1850_VPW
                JC OBD2_MODE3
                DJNZ COMTIME,OBD_MODE21_S0
                LCALL VPW1_CLRCODE
                AJMP START
  OBD_MODE21_S0:LCALL DIS_CODE
                AJMP START_COM


     OBD2_MODE3:;LCALL DIS_MODE3         ;ISO_9141
                LCALL ISO_COM
                JC OBD2_MODE4
                DJNZ COMTIME,OBD_MODE3_S0
                LCALL ISO_CLRCODE
                AJMP START
   OBD_MODE3_S0:LCALL DIS_CODE
                AJMP START_COM
                ;
     OBD2_MODE4:LCALL DIS_ERROR
                AJMP START


;J1850-PWM===================================================================;
PWM_COM:        MOV DPTR,#OB_PWM_START
                LCALL TRANS_TOBUF
                lcall PWM_SEND_READ
                JC PWM_COM_END

     PWM_COM_01:MOV DPTR,#OB_PWM_NCODE
                LCALL TRANS_TOBUF
                lcall PWM_SEND_READ
                JC PWM_COM_END
                ;
     PWM_COM_02:MOV DPTR,#OB_PWM_RCODE
                LCALL TRANS_TOBUF
                lcall PWM_SEND_READ
                JC PWM_COM_END01
                LCALL READ_CODE
                CLR C
                RET
  PWM_COM_END01:LCALL SET_OK
                CLR C
    PWM_COM_END:RET


PWM_CLRCODE:    MOV DPTR,#OB_PWM_CLRCODE
                LCALL TRANS_TOBUF
                LCALL PWM_SEND_READ
                RET


PWM_SEND_READ:  MOV R2,#10
                ;
                ;
                ;send part------------------------------
                ;
   PWM_SEND_STA:MOV 14H,#0
                MOV R1,#15H
                MOV R7,#0
     PWM_SENDS0:MOV R4,#6
     PWM_SENDS1:JB PWM_IN,PWM_SENDS0    ;32
                JB PWM_IN,PWM_SENDS0    ;
                JB PWM_IN,PWM_SENDS0    ;
                JB PWM_IN,PWM_SENDS0    ;
                JB PWM_IN,PWM_SENDS0    ;
                JB PWM_IN,PWM_SENDS0    ;
                JB PWM_IN,PWM_SENDS0    ;
                JB PWM_IN,PWM_SENDS0    ;
                JB PWM_IN,PWM_SENDS0    ;
                JB PWM_IN,PWM_SENDS0    ;
                JB PWM_IN,PWM_SENDS0    ;
                JB PWM_IN,PWM_SENDS0    ;
                JB PWM_IN,PWM_SENDS0    ;
                JB PWM_IN,PWM_SENDS0    ;
                JB PWM_IN,PWM_SENDS0    ;
                DJNZ R4,PWM_SENDS1      ;
                MOV P1,#PWM_HI          ;2
                MOV R4,#30              ;61-HI(32)
                DJNZ R4,$               ;
                MOV P1,#PWM_LO          ;2
                MOV R4,#11              ;23-LO(16)
                DJNZ R4,$               ;
                MOV R0,#09H             ;1
                MOV R7,08H              ;2
     PWM_SEND00:MOV A,@R0               ;1
                INC R0                  ;1
                MOV R6,#8               ;1
     PWM_SEND01:RLC A                   ;1
                MOV P1,#PWM_HI          ;2
                JC PWM_SEND02           ;2--HI(8/16)
                MOV R4,#7               ;15
                DJNZ R4,$               ;
                NOP                     ;1
     PWM_SEND02:MOV R4,#5               ;11
                DJNZ R4,$               ;
                NOP                     ;1
                MOV P1,#PWM_LO          ;2
                NOP                     ;5--LO(16/8)
                NOP                     ;
                NOP                     ;
                NOP                     ;
                NOP                     ;
                JNC PWM_SEND03          ;2
                JB PWM_IN,PWM_SENDS0    ;16
                JB PWM_IN,PWM_SENDS0    ;
                JB PWM_IN,PWM_SENDS0    ;
                JB PWM_IN,PWM_SENDS0    ;
                JB PWM_IN,PWM_SENDS0    ;
                JB PWM_IN,PWM_SENDS0    ;
                JB PWM_IN,PWM_SENDS0    ;
                JB PWM_IN,PWM_SENDS0    ;
     PWM_SEND03:DJNZ R6,PWM_SEND04      ;2
                DJNZ R7,PWM_SEND00      ;2
                AJMP PWM_SEND05         ;2
     PWM_SEND04:NOP                     ;2
                NOP                     ;2
                AJMP PWM_SEND01         ;2
     PWM_SEND05:MOV R4,#25              ;51
                DJNZ R4,$               ;
                ;
                ;
                ;read part------------------------------
                ;
                MOV R0,#16H             ;2
                MOV R3,#4               ;2                    ;#3
     PWM_READS0:CLR TR0                 ;2
                CLR TF0                 ;2
                MOV TH0,#TH_30MS        ;2
                MOV TL0,#TL_30MS        ;2
                SETB TR0                ;1
     PWM_READS1:JB TF0,PWM_READS2       ;2
                JNB PWM_IN,PWM_READS1   ;48
                JNB PWM_IN,PWM_READS1   ;
                JNB PWM_IN,PWM_READS1   ;
                JNB PWM_IN,PWM_READS1   ;
                JNB PWM_IN,PWM_READS1   ;
                JNB PWM_IN,PWM_READS1   ;
                JNB PWM_IN,PWM_READS1   ;
                JNB PWM_IN,PWM_READS1   ;
                JNB PWM_IN,PWM_READS1   ;
                JNB PWM_IN,PWM_READS1   ;
                JNB PWM_IN,PWM_READS1   ;
                JNB PWM_IN,PWM_READS1   ;
                JNB PWM_IN,PWM_READS1   ;
                JNB PWM_IN,PWM_READS1   ;
                JNB PWM_IN,PWM_READS1   ;
                JNB PWM_IN,PWM_READS1   ;
                JNB PWM_IN,PWM_READS1   ;
                JNB PWM_IN,PWM_READS1   ;
                JNB PWM_IN,PWM_READS1   ;
                JNB PWM_IN,PWM_READS1   ;
                JNB PWM_IN,PWM_READS1   ;
                JNB PWM_IN,PWM_READS1   ;
                JNB PWM_IN,PWM_READS1   ;
                JNB PWM_IN,PWM_READS1   ;
                AJMP PWM_READ00         ;2
     PWM_READS2:DJNZ R3,PWM_READS0      ;2
                AJMP PWM_READEND        ;2
                ;
     PWM_READ00:MOV R6,#8               ;1
     PWM_READ01:JB PWM_IN,$             ;2
                JNB PWM_IN,$            ;2
                MOV R4,#9               ;19
                DJNZ R4,$               ;
                NOP                     ;1
                MOV C,PWM_IN            ;1
                RLC A                   ;1
                DJNZ R6,PWM_READ01      ;2
                CPL A                   ;1
                CJNE A,#41H,PWM_READ06  ;2
                MOV @R0,A               ;1
                INC R0                  ;1
                INC R7                  ;1
                MOV R6,#8               ;1
     PWM_READ02:JB PWM_IN,$             ;2
                JNB PWM_IN,$            ;2
                MOV R4,#9               ;19
                DJNZ R4,$               ;
                NOP                     ;1
                MOV C,PWM_IN            ;1
                RLC A                   ;1
                DJNZ R6,PWM_READ02      ;2
                CPL A                   ;1
                CJNE A,#6BH,PWM_READ06  ;2
                MOV @R0,A               ;1
                INC R0                  ;1
                INC R7                  ;1
                ;
     PWM_READ03:MOV R6,#8               ;1
     PWM_READ04:JB PWM_IN,$             ;2
                NOP                     ;1
                JB PWM_IN,PWM_READ05    ;42
                JB PWM_IN,PWM_READ05    ;
                JB PWM_IN,PWM_READ05    ;
                JB PWM_IN,PWM_READ05    ;
                JB PWM_IN,PWM_READ05    ;
                JB PWM_IN,PWM_READ05    ;
                JB PWM_IN,PWM_READ05    ;
                JB PWM_IN,PWM_READ05    ;
                JB PWM_IN,PWM_READ05    ;
                JB PWM_IN,PWM_READ05    ;
                JB PWM_IN,PWM_READ05    ;
                JB PWM_IN,PWM_READ05    ;
                JB PWM_IN,PWM_READ05    ;
                JB PWM_IN,PWM_READ05    ;
                JB PWM_IN,PWM_READ05    ;
                JB PWM_IN,PWM_READ05    ;
                JB PWM_IN,PWM_READ05    ;
                JB PWM_IN,PWM_READ05    ;
                JB PWM_IN,PWM_READ05    ;
                JB PWM_IN,PWM_READ05    ;
                JB PWM_IN,PWM_READ05    ;
                AJMP PWM_READ08         ;2
     PWM_READ05:MOV R4,#9               ;21
                DJNZ R4,$               ;
                NOP                     ;1
                MOV C,PWM_IN            ;1
                RLC A                   ;1
                DJNZ R6,PWM_READ04      ;2
                CPL A                   ;1
                MOV @R0,A               ;1
                INC R0                  ;1
                INC R7                  ;1
                AJMP PWM_READ03         ;2
                ;
     PWM_READ06:MOV A,14H
                JZ PWM_READ07
                AJMP PWM_READEND
     PWM_READ07:DEC R2
                MOV A,R2
                JZ PWM_READEND
                AJMP PWM_SEND_STA
                ;
     PWM_READ08:MOV A,#0F1H             ;1
                MOV R6,#8               ;1
     PWM_READB1:RLC A                   ;1
                MOV P1,#PWM_HI          ;2
                JC PWM_READB2           ;2
                MOV R4,#7               ;15
                DJNZ R4,$               ;
                NOP                     ;1
     PWM_READB2:MOV R4,#5               ;11
                DJNZ R4,$               ;
                NOP                     ;1
                MOV P1,#PWM_LO          ;2
                JNC PWM_READB3          ;2
                MOV R4,#7               ;15
                DJNZ R4,$               ;
                NOP                     ;1
     PWM_READB3:MOV R4,#4               ;9
                DJNZ R4,$               ;
                DJNZ R6,PWM_READB1      ;2
                MOV R4,#17              ;35
                DJNZ R4,$               ;
                NOP                     ;
                ;
                INC 14H                 ;1
                MOV A,R7                ;1
                MOV @R1,A               ;1
                MOV A,14H               ;1
                CJNE A,#8,PWM_READ09    ;2

⌨️ 快捷键说明

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