📄 gobd2.asm
字号:
;============================================================================;
;[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 + -