📄 gobd2.asm
字号:
AJMP PWM_READEND ;2
PWM_READ09:MOV A,R0 ;1
MOV R1,A ;1
INC R0 ;1
MOV R7,#0 ;1
;AJMP PWM_READS1 ;2
;
PWM_READEND:MOV A,14H
JZ PWM_READERR
CLR C
RET
PWM_READERR:MOV 14H,#01H
MOV 15H,#01H
MOV 16H,#04H
SETB C
RET
;J1850-VPW===================================================================;
VPW_COM: MOV DPTR,#OB_VPW_START
LCALL TRANS_TOBUF
LCALL VPW_SEND_READ
JC VPW_COM_END
;
MOV DPTR,#OB_VPW_NCODE
LCALL TRANS_TOBUF
lcall VPW_SEND_READ
JC VPW_COM_END
VPW_COM_02:MOV DPTR,#OB_VPW_RCODE
LCALL TRANS_TOBUF
LCALL VPW_SEND_READ
JC VPW_COM_END01
LCALL READ_CODE
CLR C
RET
VPW_COM_END01:LCALL SET_OK
CLR C
VPW_COM_END:RET
VPW_CLRCODE: MOV DPTR,#OB_VPW_CLRCODE
LCALL TRANS_TOBUF
LCALL VPW_SEND_READ
RET
VPW1_COM: MOV DPTR,#OB_VPW_START
INC DPTR
LCALL TRANS_TOBUF
lcall VPW_SEND_READ
JC VPW1_COM_END
MOV DPTR,#OB_VPW_NCODE
INC DPTR
LCALL TRANS_TOBUF
lcall VPW_SEND_READ
JC VPW1_COM_END
VPW1_COM_02:MOV DPTR,#OB_VPW_RCODE
INC DPTR
LCALL TRANS_TOBUF
LCALL VPW_SEND_READ
JC VPW1_COM_END01
LCALL READ_CODE
CLR C
RET
VPW1_COM_END01:LCALL SET_OK
CLR C
VPW1_COM_END:RET
VPW1_CLRCODE: MOV DPTR,#OB_VPW_CLRCODE
INC DPTR
LCALL TRANS_TOBUF
LCALL VPW_SEND_READ
RET
VPW_SEND_READ: MOV R2,#10
;
;
;send part------------------------------
;
VPW_SEND_STA:MOV 14H,#0
MOV R1,#15H
MOV R7,#0
VPW_SENDS0:MOV R4,#30
VPW_SENDS1:JB VPW_IN,VPW_SENDS0 ;18
JB VPW_IN,VPW_SENDS0 ;
JB VPW_IN,VPW_SENDS0 ;
JB VPW_IN,VPW_SENDS0 ;
JB VPW_IN,VPW_SENDS0 ;
JB VPW_IN,VPW_SENDS0 ;
JB VPW_IN,VPW_SENDS0 ;
JB VPW_IN,VPW_SENDS0 ;
JB VPW_IN,VPW_SENDS0 ;
DJNZ R4,VPW_SENDS1 ;2
;
MOV P1,#VPW_HI ;2
MOV R4,#195 ;391-HI(200)
DJNZ R4,$ ;
NOP ;1
MOV R0,#09H ;1
MOV R7,08H ;2
VPW_SEND00:MOV A,@R0 ;1
INC R0 ;1
MOV R6,#4 ;1
VPW_SEND01:MOV P1,#VPW_LO ;2
MOV R4,#4 ;9
DJNZ R4,$ ;
RLC A ;1
JNC VPW_SEND02 ;2
MOV R4,#31 ;125
VPW_SEND1:JB VPW_IN,VPW_SENDS0 ;
DJNZ R4,VPW_SEND1 ;
VPW_SEND02:MOV R4,#28 ;113
VPW_SEND2:JB VPW_IN,VPW_SENDS0 ;
DJNZ R4,VPW_SEND2 ;
MOV P1,#VPW_HI ;2
RLC A ;1
JC VPW_SEND03 ;2
MOV R4,#64 ;129
DJNZ R4,$ ;
VPW_SEND03:MOV R4,#60 ;121
DJNZ R4,$ ;
DJNZ R6,VPW_SEND01 ;2
DJNZ R7,VPW_SEND00 ;2
MOV P1,#VPW_LO ;3
MOV R4,#200 ;401
DJNZ R4,$ ;
;
;
;read part------------------------------
;
VPW_READM2:MOV R0,#16H ;1
MOV R3,#10 ;1
VPW_READS0:CLR TR0 ;1
CLR TF0 ;1
MOV TH0,#TH_30MS ;2
MOV TL0,#TL_30MS ;2
SETB TR0 ;1
VPW_READS1:JB TF0,VPW_READS2 ;2
MOV R4,#17 ;1
VPW_READ1:JNB VPW_IN,VPW_READS1 ;18
JNB VPW_IN,VPW_READS1 ;
JNB VPW_IN,VPW_READS1 ;
JNB VPW_IN,VPW_READS1 ;
JNB VPW_IN,VPW_READS1 ;
JNB VPW_IN,VPW_READS1 ;
JNB VPW_IN,VPW_READS1 ;
JNB VPW_IN,VPW_READS1 ;
JNB VPW_IN,VPW_READS1 ;
DJNZ R4,VPW_READ1 ;2
AJMP VPW_READ00 ;2
VPW_READS2:DJNZ R3,VPW_READS0 ;2
AJMP VPW_READEND ;2
VPW_READ00:JB VPW_IN,$ ;2
;
MOV R6,#4 ;1
VPW_READA1:CLR C ;1
MOV R4,#48 ;1
VPW_READA2:JB VPW_IN,VPW_READA3 ;2
DJNZ R4,VPW_READA2 ;2
SETB C ;1
JNB VPW_IN,$ ;2
VPW_READA3:RLC A ;1
SETB C ;1
MOV R4,#48 ;1
VPW_READA4:JNB VPW_IN,VPW_READA5 ;2
DJNZ R4,VPW_READA4 ;2
CLR C ;1
JB VPW_IN,$ ;2
VPW_READA5:RLC A ;1
DJNZ R6,VPW_READA1 ;2
CJNE A,#48H,VPW_REREAD ;2
MOV @R0,A ;1
INC R0 ;1
INC R7 ;1
MOV R6,#4 ;1
VPW_READB1:CLR C ;1
MOV R4,#48 ;1
VPW_READB2:JB VPW_IN,VPW_READB3 ;2
DJNZ R4,VPW_READB2 ;2
SETB C ;1
JNB VPW_IN,$ ;2
VPW_READB3:RLC A ;1
SETB C ;1
MOV R4,#48 ;1
VPW_READB4:JNB VPW_IN,VPW_READB5 ;2
DJNZ R4,VPW_READB4 ;2
CLR C ;1
JB VPW_IN,$ ;2
VPW_READB5:RLC A ;1
DJNZ R6,VPW_READB1 ;2
CJNE A,#6BH,VPW_REREAD ;2
MOV @R0,A ;1
INC R0 ;1
INC R7 ;1
;
VPW_READC0:MOV R6,#4 ;1
VPW_READC1:CLR C ;1
MOV R4,#48 ;1
VPW_READC2:JB VPW_IN,VPW_READC4 ;2
DJNZ R4,VPW_READC2 ;2
SETB C ;1
MOV R4,#100 ;1
VPW_READC3:JB VPW_IN,VPW_READC4 ;2
DJNZ R4,VPW_READC3 ;2
AJMP VPW_READNXT ;2
VPW_READC4:RLC A ;1
SETB C ;1
MOV R4,#48 ;1
VPW_READC5:JNB VPW_IN,VPW_READC6 ;2
DJNZ R4,VPW_READC5 ;2
CLR C ;1
JB VPW_IN,$ ;2
VPW_READC6:RLC A ;1
DJNZ R6,VPW_READC1 ;2
MOV @R0,A ;1
INC R0 ;1
INC R7 ;1
AJMP VPW_READC0 ;2
;
VPW_REREAD:MOV A,14H
JZ VPW_READR1
AJMP VPW_READEND
VPW_READR1:DEC R2
MOV A,R2
JZ VPW_READEND
AJMP VPW_SEND_STA
;
VPW_READNXT:INC 14H
MOV A,R7
MOV @R1,A
MOV A,14H
CJNE A,#8,VPW_READNX
AJMP VPW_READEND
VPW_READNX:MOV A,R0
MOV R1,A
INC R0
MOV R7,#0
AJMP VPW_READS1
;
VPW_READEND:MOV A,14H
JZ VPW_READERR
CLR C
RET
VPW_READERR:MOV 14H,#01H
MOV 15H,#01H
MOV 16H,#07H
SETB C
RET
;ISO-9141-2==================================================================;
ISO_COM: LCALL ISO_COM_STAR
JC ISO_COM_END
;
MOV DPTR,#OB_ISO_NCODE
LCALL TRANS_TOBUF
LCALL ISO_SEND_READ
JC ISO_COM_END
;
ISO_COM_02:MOV DPTR,#OB_ISO_RCODE
LCALL TRANS_TOBUF
LCALL ISO_SEND_READ
JC ISO_COM_END01
LCALL READ_CODE
CLR C
RET
ISO_COM_END01:LCALL SET_OK
CLR C
ISO_COM_END:RET
ISO_CLRCODE: MOV DPTR,#OB_ISO_CLRCODE
LCALL TRANS_TOBUF
LCALL ISO_SEND_READ
RET
ISO_COM_STAR: MOV R4,#50
LCALL DELAY_10MS
;
MOV A,#33H
LCALL SENDDATA_5BPS
NOP
NOP
LCALL SET_BAUD_10400
MOV R3,#250
LCALL READDAT_WAIT
JC ISO_COMERR
CJNE A,#55H,ISO_COMERR
MOV R3,#20
LCALL READDAT_WAIT ;receive KW1
JC ISO_COMERR
MOV R3,#20
LCALL READDAT_WAIT ;receive KW2
JC ISO_COMERR
MOV R4,#30
LCALL DELAY_1MS
CPL A
LCALL SEND_ACC
MOV R3,#250
LCALL READDAT_WAIT
CJNE A,#0CCH,ISO_COMERR
CLR C
RET
ISO_COMERR:SETB C
RET
SENDDATA_5BPS: SETB K_SWITCH
SETB L_SWITCH
MOV R4,#200 ;200ms低电平
CLR TXD
LCALL DELAY_1MS
MOV R0,#8
SEND_5BPS_00:RRC A ;1
MOV TXD,C ;1
MOV R4,#200 ;1
LCALL DELAY_1MS ;2
DJNZ R0,SEND_5BPS_00 ;2
SETB TXD ;200ms高电平
MOV R4,#200
LCALL DELAY_1MS
CLR L_SWITCH
RET
SEND_ACC: CLR REN
CLR TI
MOV SBUF,A
JNB TI,$
CLR TI
RET
READDAT_WAIT: SETB REN
CLR RI
CLR TR0
CLR TF0
MOV TH0,#TH_1MS
MOV TL0,#TL_1MS
SETB TR0
RDWAIT0:JB RI,RDWAIT1
JNB TF0,RDWAIT0
DJNZ R3,READDAT_WAIT
CLR TR0
CLR TF0
SETB C
RET
RDWAIT1:CLR RI
CLR TR0
CLR TF0
MOV A,SBUF
CLR C
RET
ISO_READDATA: MOV R0,#READ_BUF+2
MOV R7,#0 ;C=1,失败 ;C=0,成功
MOV R3,#250
lcall READDAT_WAIT
JNC ISO_RD0A_1
MOV R3,#250
lcall READDAT_WAIT
JC ISO_RD01_1
ISO_RD0A_1:MOV @R0,A
INC R0
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -