📄 sh_gm.asm
字号:
;-------------------------------------------------------------------------
;OBS.ASM OBD2 (SUB PROG. FOR OBD2-89C2051/24M)
;2000.11.7
;-------------------------------------------------------------------------
TH_10MS EQU 177
TL_10MS EQU 224
;
VPW_HI EQU 0AFH ;0F5H
VPW_LO EQU 0EFH ;0FDH
VPW_IN EQU P1.7 ;P1.4
;
;-------------------------------------------------------------------------
;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
;
;ram definition---------------------------------------
SEND_BUF EQU 08h
TEST_CODE EQU 08H
info_end EQU 56H
dtc_info EQU 09H
;
DBUF1 EQU 6eH ;01
DBUF2 EQU 6dH ;01
DBUF3 EQU 6cH ;01
DBUF4 EQU 6bH ;01
DCOUNT EQU 6aH ;01
;
COMTIME EQU 69H
systemnum EQU 68h
gm_num EQU 67h
dph0 EQU 6eh
dpl0 EQU 6dh
ver_1 EQU 6ch
ver_2 EQU 6bh
ver_3 EQU 6ah
ORG 0000H
;[MAIN PROGRAMME:VPW MODE ]======================================
START: MOV SP,#6FH
MOV IE,#00H
MOV PSW,#00H
MOV P1,#VPW_LO
MOV PCON,#80H
MOV TMOD,#21H
MOV TCON,#00H
MOV SCON,#50H
;
MOV COMTIME,#3
;
START_1: ACALL DIS_AFACE
MOV systemnum,#1
;
start_2: ACALL gm_read
;
ACALL disp_dtc
CLR c
MOV a,systemnum
SUBB a,#3
JNC start_3
INC systemnum
AJMP start_2
;
start_3: DJNZ COMTIME,start_1
;
ACALL gm_CLRCODE
AJMP START
;
;[display PROGRAMME:]======================================
disp_dtc: ACALL dis_sysnum
;
MOV R0,#TEST_CODE
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
MOV DBUF1,#15H
MOV DBUF2,#01H
MOV DBUF3,#18H
MOV DBUF4,#18H
MOV R5,#5
DIS_sysnum1: ACALL AFACE_DELAY ;
DJNZ R5,DIS_sysnum1
RET
dis_sysnum2: CJNE a,#2,dis_sysnum3
MOV DBUF1,#15H
MOV DBUF2,#02H
MOV DBUF3,#18H
MOV DBUF4,#18H
MOV R5,#5
DIS_sysnum21: ACALL AFACE_DELAY ;
DJNZ R5,DIS_sysnum21
RET
dis_sysnum3: MOV DBUF1,#15H
MOV DBUF2,#03H
MOV DBUF3,#18H
MOV DBUF4,#18H
MOV R5,#5
DIS_sysnum31: ACALL AFACE_DELAY ;
DJNZ R5,DIS_sysnum31
RET
;
DIS_CODEOK: MOV DBUF1,#16H
MOV DBUF2,#16H
MOV DBUF3,#16H
MOV DBUF4,#16H
MOV R5,#20
DIS_OK01: ACALL AFACE_DELAY ;
DJNZ R5,DIS_OK01
RET
DIS_ERROR: MOV DBUF1,#0EH
MOV DBUF2,#18H
MOV DBUF3,#18H
MOV DBUF4,#18H
MOV R5,#20
DIS_ERR01: ACALL 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:ACALL AFACE_DELAY ;
DJNZ R4,DIS_COD02
DJNZ R7,DIS_COD01
MOV R4,#100
ACALL DELAY_10MS
DJNZ R6,DIS_COD00
DIS_COD_END:MOV R4,#100
ACALL DELAY_10MS
;
RET
;[display subPROGRAMME:]======================================
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
ACALL DELAY_1MS
POP 04H
DJNZ R4,DELAY_10MS
RET
DIS_AFACE: MOV DBUF1,#18H
MOV DBUF2,#18H
MOV DBUF3,#18H
MOV DBUF4,#10H
ACALL AFACE_DELAY ;' L'
;
MOV DBUF1,#18H
MOV DBUF2,#18H
MOV DBUF3,#10H
MOV DBUF4,#11H
ACALL AFACE_DELAY ;' LA'
;
MOV DBUF1,#18H
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,#18H
ACALL AFACE_DELAY ;'NCH '
;
MOV DBUF1,#14H
MOV DBUF2,#15H
MOV DBUF3,#18H
MOV DBUF4,#18H
ACALL AFACE_DELAY ;'CH '
;
MOV DBUF1,#15H
MOV DBUF2,#18H
MOV DBUF3,#18H
MOV DBUF4,#18H
ACALL AFACE_DELAY ;'H '
;
RET
;
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
ACALL DIS_NUMBER
CLR LED_D1
AJMP DT0DIS
DT02:CJNE A,#2,DT03
MOV A,DBUF2
ACALL DIS_NUMBER
CLR LED_D2
AJMP DT0DIS
DT03:CJNE A,#3,DT04
MOV A,DBUF3
ACALL DIS_NUMBER
CLR LED_D3
AJMP DT0DIS
DT04:MOV DCOUNT,#0
MOV A,DBUF4
ACALL DIS_NUMBER
CLR LED_D4
AJMP DT0DIS
DT0DIS:MOV R4,#4
ACALL 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
ACALL DELAY_74164
CLR P1.0
ACALL DELAY_74164
SETB P1.0
ACALL 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
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
;==============================================
gm_SENDread: ACALL VPW_SEND_ONLY
gm_READ_ONLY: MOV ver_1,#3
gm_sendread1: ACALL VPW_READ_ONLY
;MOV 08h,#3
;MOV 09h,#08h
;MOV 0Ah,#6ch
;MOV 0Bh,#0f1h
;MOV 0Ch,#10h
;MOV 0Dh,#59h
;MOV 0Eh,#00h
;MOV 0Fh,#00h
;MOV 10h,#02h
;MOV 11h,#57h
;MOV 12h,#08h
;MOV 13h,#6ch
;MOV 14h,#0f1h
;MOV 15h,#58h
;MOV 16h,#59h
;MOV 17h,#20h
;MOV 18h,#00h
;MOV 19h,#02h
;MOV 1Ah,#0eeh
;MOV 1Bh,#08h
;MOV 1Ch,#6ch
;MOV 1Dh,#0f1h
;MOV 1Eh,#58h
;MOV 1Fh,#59h
;MOV 20h,#20h
;MOV 21h,#00h
;MOV 22h,#02h
;MOV 23h,#0eeh
;MOV 24h,#08h
;MOV 25h,#6ch
;MOV 26h,#0f1h
;MOV 27h,#10h
;MOV 28h,#59h
;MOV 29h,#00h
;MOV 2Ah,#00h
;MOV 2Bh,#02h
;MOV 2Ch,#0eeh
;CLR c
JNC gm_sendread2
RET
;
gm_sendread2: ACALL gm_index
JC gm_sendread3
RET
;
gm_sendread3: djnz ver_1,gm_sendread1
SETB c
RET
VPW_SEND_ONLY: ;MOV P1,#VPW_LO
PUSH B
MOV R1,08H
MOV R7,#0
MOV B,#09H
VPW_OSEND_STA: MOV R0,B
VPW_OSENDS0: MOV R4,#30
VPW_OSENDS1: JB VPW_IN,VPW_OSENDS0 ;18
JB VPW_IN,VPW_OSENDS0 ;
JB VPW_IN,VPW_OSENDS0 ;
JB VPW_IN,VPW_OSENDS0 ;
JB VPW_IN,VPW_OSENDS0 ;
JB VPW_IN,VPW_OSENDS0 ;
JB VPW_IN,VPW_OSENDS0 ;
JB VPW_IN,VPW_OSENDS0 ;
JB VPW_IN,VPW_OSENDS0 ;
;NOP
;NOP
;NOP
;NOP
;NOP
;NOP
;NOP
;NOP
;NOP
;NOP
;NOP
;NOP
;NOP
;NOP
;NOP
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -