📄 lcd_yb.asm.bak
字号:
NAME MOTORBIKE LCD
;==============================================
TIME_F EQU 0FE80H
;==============================================
MAOHAO EQU TIME_F.0
VOL_FLAG EQU TIME_F.1
VL_F EQU TIME_F.2
ZE_FLAG EQU TIME_F.3
ZE_UP EQU TIME_F.4
TEP_FLAG EQU TIME_F.5
SD_FLAG EQU TIME_F.6
AD_FLAG EQU TIME_F.7
;==============================================
TIMEA EQU 0FE81H
TIME10MS EQU 0FE82H
TIME500MS EQU 0FE83H
VOL_CNT EQU 0FE84H
VOL_TEMP EQU 0FE85H
VOL_BUF EQU 0FE86H
RAM1 EQU 0FE87H
RAM2 EQU 0FE88H
RAM3 EQU 0FE89H
RAM4 EQU 0FE8AH
RAM5 EQU 0FE8BH
RAM6 EQU 0FE8CH
RAM7 EQU 0FE8DH
RAM8 EQU 0FE8EH
RAM9 EQU 0FE8FH
RAM10 EQU 0FE90H
RAM11 EQU 0FE91H
RAM12 EQU 0FE92H
RAM13 EQU 0FE93H
RAM14 EQU 0FE94H
RAM15 EQU 0FE95H
RAM16 EQU 0FE96H
TEMP EQU 0FE97H
SEND_CNT EQU 0FE98H
VOL_C1 EQU 0FE99H ;电压十位数
VOL_C2 EQU 0FE9AH ;电压个位数
VOL_C3 EQU 0FE9BH ;电压小数
SYS_S EQU 0FE9CH
SYS_M EQU 0FE9DH
SYS_H EQU 0FE9EH
SYS_MG EQU 0FE9FH
SYS_MS EQU 0FEA0H
SYS_HG EQU 0FEA1H
SYS_HS EQU 0FEA2H
COM_BUF EQU 0FEA3H
TEP_BUF EQU 0FEA4H
TEP_TEMP EQU 0FEA5H
TEP_CNT EQU 0FEA6H
SD_BUF EQU 0FEA7H
SD_TEMP EQU 0FEA8H
SD_CNT EQU 0FEA9H
LC_RAM0 EQU 0FEAAH
LC_RAM1 EQU 0FEABH
LC_CRAM0 EQU 0FEACH
LC_CRAM1 EQU 0FEADH
LC_CT0 EQU 0FEAEH
LC_CT1 EQU 0FEAFH
LC_XS0 EQU 0FEB0H
LC_XS1 EQU 0FEB1H
LC_XS2 EQU 0FEB2H
LC_XS3 EQU 0FEB3H
LC_S EQU 0FEB4H
FLAGA EQU 0FEB5H
AD_BUF EQU 0FEB6H
AD_TEMP EQU 0FEB7H
AD_CNT EQU 0FEB8H
AD_ADJUST EQU 0FEB9H
FLAGB EQU 0FEBAH
;=====================================
SD_F EQU FLAGA.1
RA263 EQU FLAGA.2
RA283 EQU FLAGA.3
AD_F EQU FLAGA.4
;======================================
SD_TBUF EQU 0FEC0H
TIMEB EQU 0FEC1H
SD_S EQU 0FEC2H
;==============================================
WR_1621 EQU P3.2
DA_1621 EQU P4.0
CS_1621 EQU P4.3
;==============================================
ORG 0000H
DW MAIN
ORG 000CH
DW MAIN
ORG 000EH
DW ISR_INTTM000
ORG 0040H
?INIT_CPU: DW INIT_CPU
?REST_RAM: DW REST_RAM
?INIT_PORT: DW INIT_PORT
?INIT_TM00: DW INIT_TM00
ORG 0080H
DB 94H ;option byte
DB 0A7H ;protect byte
ORG 0082H
MAIN: MOVW AX,#0FEF6H
MOVW SP,AX
DI
CALLT [?INIT_CPU]
MOV A,RESF
BF A.4,$RST_RAM
BR $INIT_P
RST_RAM: CALLT [?REST_RAM]
INIT_P: CALLT [?INIT_PORT]
CALLT [?INIT_TM00]
MOV RAM1,#0FFH
MOV RAM2,#0FFH
MOV RAM3,#0FFH
MOV RAM4,#0FFH
MOV RAM5,#0FFH
MOV RAM6,#0FFH
MOV RAM7,#0FFH
MOV RAM8,#0FFH
MOV RAM9,#0FFH
MOV RAM10,#0FFH
MOV RAM11,#0FFH
MOV RAM12,#0FFH
MOV RAM13,#0FFH
MOV RAM14,#0FFH
MOV RAM15,#0FFH
MOV RAM16,#0FFH
CALL !DISPLAY_LCD
CALL !DEL500mS
CALL !DISPLAY_LCD
CALL !DEL500mS
CALL !DISPLAY_LCD
CALL !DEL500mS
CALL !DEL500mS
CALL !DEL500mS
EI
MOV TIMEA,#1
MOV TIMEB,#1
MOV RAM10,#0AFH
MOV RAM11,#0AFH
MOV RAM12,#0AFH
MOV RAM13,#0AFH
MOV RAM14,#0F5H
MOV RAM15,#0F5H
; CALL !DISPLAY_LCD
MOV RAM7,#1
CALL !DISPLAY_LCD
MAIN_A: CALL !TIME_SUB
CALL !VOL_TEST
CALL !TEMP_TEST
CALL !AD_TEST
CALL !SD_TEST
CALL !DISPLAY
CALL !LC_TEST
BR !MAIN_A
;===============================================
ISR_INTTM000:PUSH AX
CLR1 TMIF000
MOV A,TIMEA
ROL A,1
BF A.6,$OUT_TM000
MOV A,#1
OUT_TM000: MOV TIMEA,A
INC TIME10MS
CMP TIME10MS,#10
BC $OUT_TM000A
MOV TIME10MS,#0 ;10MS
BF SD_F,$TIME_LAB0
INC SD_S
CMP SD_S,#30
BC $TIME_LAB
MOV SD_S,#0
MOV A,TIMEB
ROL A,1
MOV TIMEB,A
BF A.6,$TIME_LAB
TIME_LAB0: MOV TIMEB,#1
MOV SD_S,#0
TIME_LAB: INC TIME500MS
CMP TIME500MS,#50
BC $OUT_TM000A
MOV TIME500MS,#0
INC SYS_S
XOR TIME_F,#01H ;冒号的闪烁
INC LC_S
CMP LC_S,#20
BC $OUT_TM000A
SET1 FLAGA.0
MOV LC_S,#0
OUT_TM000A:
POP AX
RETI
;================================================
INIT_CPU: MOV WDTM,#6CH ;16.384MS
MOV WDTE,#0ACH
MOV PCC,#00H ;set fx to 8M
MOV PPCC,#00H
MOV LSRCM,#01H
MOV IF0,#00H
MOV MK0,#0FFH
RET
;==================================================
REST_RAM: MOVW HL,#0FE80H
MOV B,#110
MOV A,#0
REST_RAM1: MOV [HL],A
INCW HL
DBNZ B,$REST_RAM1
RET
;==================================================
INIT_PORT: MOV P2,#0
MOV PMC2,#0FH
MOV PM2,#0FFH
CLR1 PM3.2
CLR1 P3.2
MOV PM4,#0
MOV P4,#09H
RET
;==================================================
INIT_TM00: MOV TMC00,#0
MOV TOC00,#0
MOV CRC00,#0
MOV PRM00,#0
MOVW AX,#8000-1
MOVW CR000,AX
MOV TMC00,#0CH
CLR1 TMMK000
CLR1 TMIF000
RET
;==================================================
TIME_OUTB: BR !TIME_OUT
TIME_SUB: BF TIMEA.0,$TIME_OUTB
BT FLAGB.0,$TIME_OUTB
MOV WDTE,#0ACH
MOV FLAGB,#1
CMP SYS_S,#120
BC $TIME_OUTA
MOV SYS_S,#0
MOV A,SYS_M
INC A
MOV SYS_M,A
CMP A,#60
BC $TIME_OUTA
MOV SYS_M,#0
MOV A,SYS_H
INC A
MOV SYS_H,A
CMP A,#19
BC $TIME_OUTA
MOV SYS_H,#19
TIME_OUTA:
BF TIMEB.0,$DD_LAB0
CLR1 RA283
CLR1 RA263
CLR1 RAM9.3
CLR1 RAM9.2
CLR1 RAM9.1
SET1 RAM9.0
DD_LAB0: BF TIMEB.1,$DD_LAB1
SET1 RAM9.1
DD_LAB1: BF TIMEB.2,$DD_LAB2
SET1 RAM9.2
DD_LAB2: BF TIMEB.3,$DD_LAB3
SET1 RAM9.3
DD_LAB3: BF TIMEB.4,$DD_LAB4
SET1 RA283
DD_LAB4: BF TIMEB.5,$DD_LAB5
SET1 RA263
DD_LAB5: MOV A,SYS_M
CALL !BCD_COV
MOV SYS_MG,A
CALL !TAB_A
MOV RAM1,A ;分钟的个位
MOV A,B
MOV SYS_MS,A
CALL !TAB_A
MOV RAM2,A ;分钟的十位
MOV A,SYS_H
CALL !BCD_COV
MOV SYS_HG,A
CALL !TAB_A
MOV RAM3,A ;小时的个位
MOV A,B
MOV SYS_HS,A
CMP A,#0
BZ $TIME_OUT
SET1 RAM3.0 ;小时的十位
TIME_OUT: RET
;==================================================
TAB_A: MOVW HL,#TAB_A0
ADD A,L
MOV L,A
BNC $TAB_ALAB
INC H
TAB_ALAB: MOV A,[HL]
RET
;======================================================
TAB_A0: DB 0FAH,60H,0D6H,0F4H,6CH,0BCH,0BEH,0E0H,0FEH,0FCH ;0EEH
; 0 1 2 3 4 5 6 7 8 9 A
;==================================================
TAB_B: MOVW HL,#TAB_B0
ADD A,L
MOV L,A
BNC $TAB_BLAB
INC H
TAB_BLAB: MOV A,[HL]
RET
TAB_B0: DB 0AFH,06H,06DH,04FH,0C6H,0CBH,0EBH,00EH,0EFH,0CFH ;0EEH
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -