?? gz_honda.asm
字號:
;PORT DEFINITION=============================================================;
;CPU PIN DEFINITION-----------------------------------
LED_D4 EQU 0B5H ;P3.5
LED_D3 EQU 0B4H ;P3.4
LED_D2 EQU 0B3H ;P3.3
LED_D1 EQU 0B2H ;P3.2
;
DBUF1 EQU 4FH ;01
DBUF2 EQU 4EH ;01
DBUF3 EQU 4DH ;01
DBUF4 EQU 4CH ;01
DCOUNT EQU 4BH ;01
COMTIME EQU 4AH
SYSTEMNUM EQU 49H
;
DPH0 EQU 4FH
DPL0 EQU 4EH
VER_1 EQU 4DH
;
SEND_BUF EQU 08H
HO_EGRBUF1 EQU 24H
HO_EGRBUF2 EQU 36H
INFO_END EQU 48H
DTC_INFO EQU 09H
;
;OBD-ISO
RXD EQU 0B0H ;P3.0
TXD EQU 0B1H ;P3.1
;
;CONSTANT DEFINITION----------------------------------
TH_1MS EQU 250
TL_1MS EQU 000
TH_20MS EQU 136 ;196
TL_20MS EQU 000
B9600 EQU 0FBH
;ORG 0000H===================================================================;
ORG 0000H
SYSTEM_JUMP: AJMP START
ORG 0003H
AJMP INT0_INT
ORG 000BH
AJMP T0_INT
ORG 0013H
AJMP INT1_INT
ORG 001BH
AJMP T1_INT
ORG 0023H
AJMP SIO_INT
;ORG 0050H===================================================================;
ORG 0050H
START: MOV SP,#50H
MOV IE,#00H
MOV PSW,#00H
MOV TMOD,#21H
ACALL SET_COMM_BAUD
;
MOV COMTIME,#3
START_1: ACALL DIS_AFACE
MOV SYSTEMNUM,#1
;
START_2: ACALL GZ_READ
;
ACALL DISP_DTC
CLR C
MOV A,SYSTEMNUM
SUBB A,#4
JNC START_3
INC SYSTEMNUM
AJMP START_2
;
START_3: DJNZ COMTIME,START_1
;
ACALL GZ_CLRCODE
AJMP START
;
SET_COMM_BAUD: MOV PCON,#00H
MOV TCON,#00H
MOV TH1,#B9600
MOV TL1,#B9600
SETB TR1
MOV SCON,#50H
MOV A,SBUF
MOV A,SBUF
RET
;[DISPLAY PROGRAMME:]======================================
DISP_DTC: ACALL DIS_SYSNUM
;
MOV R0,#SEND_BUF
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
ACALL DIS_START
ACALL AFACE_DELAY
MOV DBUF1,#15H
MOV DBUF2,#01H
MOV DBUF3,#18H
MOV DBUF4,#18H
MOV R5,#5
DIS_SYSNUM11: ACALL AFACE_DELAY ;
DJNZ R5,DIS_SYSNUM11
ACALL DIS_STOP
ACALL AFACE_DELAY
RET
DIS_SYSNUM2: CJNE A,#2,DIS_SYSNUM3
ACALL DIS_START
ACALL AFACE_DELAY
MOV DBUF1,#15H
MOV DBUF2,#02H
MOV DBUF3,#18H
MOV DBUF4,#18H
MOV R5,#5
DIS_SYSNUM21: ACALL AFACE_DELAY ;
DJNZ R5,DIS_SYSNUM21
ACALL DIS_STOP
ACALL AFACE_DELAY
RET
DIS_SYSNUM3: CJNE A,#3,DIS_SYSNUM4
ACALL DIS_START
ACALL AFACE_DELAY
MOV DBUF1,#15H
MOV DBUF2,#03H
MOV DBUF3,#18H
MOV DBUF4,#18H
MOV R5,#5
DIS_SYSNUM31: ACALL AFACE_DELAY ;
DJNZ R5,DIS_SYSNUM31
ACALL DIS_STOP
ACALL AFACE_DELAY
RET
DIS_SYSNUM4: ACALL DIS_START
ACALL AFACE_DELAY
MOV DBUF1,#15H
MOV DBUF2,#04H
MOV DBUF3,#18H
MOV DBUF4,#18H
MOV R5,#5
DIS_SYSNUM41: ACALL AFACE_DELAY ;
DJNZ R5,DIS_SYSNUM41
ACALL DIS_STOP
ACALL AFACE_DELAY
RET
;
DIS_START: MOV DCOUNT,#1
MOV TH0,#TH_1MS
MOV TL0,#TL_1MS
SETB TR0
SETB ET0
SETB EA
ACALL DIS_CLRDATA
RET
DIS_STOP: ACALL DIS_CLRDATA
MOV R4,#10
ACALL DELAY_10MS
CLR TR0
CLR EA
CLR ET0
RET
DIS_CLRDATA: MOV DBUF1,#20H
MOV DBUF2,#20H
MOV DBUF3,#20H
MOV DBUF4,#20H
RET
DIS_CODEOK: ACALL DIS_START
MOV DBUF1,#16H
MOV DBUF2,#16H
MOV DBUF3,#16H
MOV DBUF4,#16H
MOV R4,#200
ACALL DELAY_10MS
MOV R4,#200
ACALL DELAY_10MS
ACALL DIS_STOP
MOV R4,#250
ACALL DELAY_10MS
MOV R4,#250
ACALL DELAY_10MS
RET
DIS_ERROR: ACALL DIS_START
MOV DBUF1,#0EH
MOV R4,#250
ACALL DELAY_10MS
MOV R4,#250
ACALL DELAY_10MS
ACALL DIS_STOP
MOV R4,#250
ACALL DELAY_10MS
RET
DIS_CODECOD: PUSH 00H
PUSH 06H
PUSH 07H
;
ACALL DIS_START
MOV R0,#SEND_BUF
ACALL READ_R0_ACC
MOV R7,A
MOV R6,#3
DIS_COD00:PUSH 07H
PUSH 00H
DIS_COD01:ACALL READ_R0_ACC
MOV B,#16
DIV AB
MOV DBUF1,A
MOV DBUF2,B
ACALL READ_R0_ACC
MOV B,#16
DIV AB
MOV DBUF3,A
MOV DBUF4,B
MOV R4,#200
ACALL DELAY_10MS
DJNZ R7,DIS_COD01
ACALL DIS_CLRDATA
MOV R4,#250
ACALL DELAY_10MS
POP 00H
POP 07H
DJNZ R6,DIS_COD00
ACALL DIS_STOP
MOV R4,#250
ACALL DELAY_10MS
;
POP 07H
POP 06H
POP 00H
RET
DELAY_1MS: PUSH 00H
MOV R0,#255
DJNZ R0,$
MOV R0,#255
DJNZ R0,$
MOV R0,#255
DJNZ R0,$
POP 00H
DJNZ R4,DELAY_1MS
RET
DELAY_10MS: PUSH 04H
MOV R4,#10
ACALL DELAY_1MS
POP 04H
DJNZ R4,DELAY_10MS
RET
READ_R0_ACC: MOV A,@R0
INC R0
RET
SAVE_R1_ACC: MOV @R1,A
INC R1
RET
DIS_AFACE: ACALL DIS_START
ACALL AFACE_DELAY ;' '
;
MOV DBUF1,#20H
MOV DBUF2,#20H
MOV DBUF3,#20H
MOV DBUF4,#10H
ACALL AFACE_DELAY ;' L'
;
MOV DBUF1,#20H
MOV DBUF2,#20H
MOV DBUF3,#10H
MOV DBUF4,#11H
ACALL AFACE_DELAY ;' LA'
;
MOV DBUF1,#20H
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,#20H
ACALL AFACE_DELAY ;'NCH '
;
MOV DBUF1,#14H
MOV DBUF2,#15H
MOV DBUF3,#20H
MOV DBUF4,#20H
ACALL AFACE_DELAY ;'CH '
;
MOV DBUF1,#15H
MOV DBUF2,#20H
MOV DBUF3,#20H
MOV DBUF4,#20H
ACALL AFACE_DELAY ;'H '
;
ACALL DIS_STOP
ACALL AFACE_DELAY ;' '
RET
;
AFACE_DELAY:MOV R4,#30
ACALL DELAY_10MS
RET
INT0_INT:
INT1_INT:
T1_INT:
SIO_INT: RETI
T0_INT: PUSH ACC
PUSH B
PUSH PSW
PUSH DPH
PUSH DPL
;
MOV TH0,#TH_1MS
MOV TL0,#TL_1MS
INC DCOUNT
MOV A,DCOUNT
DT01:CJNE A,#1,DT02
MOV A,DBUF1
CLR LED_D1
SETB LED_D2
SETB LED_D3
SETB LED_D4
AJMP DT0DIS
DT02:CJNE A,#2,DT03
MOV A,DBUF2
SETB LED_D1
CLR LED_D2
SETB LED_D3
SETB LED_D4
AJMP DT0DIS
DT03:CJNE A,#3,DT04
MOV A,DBUF3
SETB LED_D1
SETB LED_D2
CLR LED_D3
SETB LED_D4
AJMP DT0DIS
DT04:MOV DCOUNT,#0
MOV A,DBUF4
SETB LED_D1
SETB LED_D2
SETB LED_D3
CLR LED_D4
AJMP DT0DIS
DT0DIS:MOV DPTR,#LED_DCHARACTER
MOVC A,@A+DPTR
MOV P1,A
;
POP DPL
POP DPH
POP PSW
POP B
POP ACC
RETI
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
;============================================
del_same_code: MOV R5,#1
MOV R4,#1
dsc_0: MOV R0,#SEND_BUF
MOV A,@R0
JNZ dsc_1
RET
dsc_1: CJNE A,#1,dsc_2
RET
dsc_2: CJNE A,#0FFH,dsc_3
RET
dsc_3: MOV R7,A
CLR C
RLC A
INC ACC
ADD A,R0
MOV R6,A
;
MOV A,R4
CLR C
SUBB A,R7
JC dsc_4
RET
;
dsc_4: MOV A,R7
CLR C
SUBB A,R4
MOV R7,A
;
MOV A,R4
MOV R5,A
ACALL dsc_GETADD
MOV A,@R0
INC R0
MOV R2,A
MOV A,@R0
INC R0
MOV R3,A
;
INC R5
dsc_5: ACALL dsc_GETADD
MOV A,@R0
INC R0
MOV B,A
MOV A,R2
CJNE A,B,dsc_7
MOV A,@R0
MOV B,A
MOV A,R3
CJNE A,B,dsc_7
DEC R0
MOV A,R0
INC A
INC A
MOV R1,A
dsc_6: MOV A,@R1
INC R1
MOV @R0,A
INC R0
MOV A,@R1
INC R1
MOV @R0,A
INC R0
MOV A,R1
CLR C
SUBB A,R6
JC dsc_6
MOV R0,#SEND_BUF
MOV A,@R0
DEC A
MOV @R0,A
AJMP dsc_0
dsc_7: INC R5
DJNZ R7,dsc_5
MOV R0,#SEND_BUF
MOV A,@R0
MOV B,A
INC R4
MOV A,R4
CLR C
SUBB A,B
JC dsc_8
RET
;
dsc_8: AJMP dsc_0
;
dsc_GETADD: MOV r0,#send_buf
MOV A,R5
DEC A
CLR C
RLC A
INC ACC
ADD A,R0
MOV R0,A
RET
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -