📄 lcd_ybaa.asm
字号:
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
;==============================================
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
;==============================================
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]
EI
MOV TIMEA,#1
;MOV RAM5,#0FH
; MOV RAM7,#0D0H
CALL !DISPLAY_LCD
MAIN_A: CALL !TIME_SUB
CALL !VOL_TEST
CALL !TEMP_TEST
CALL !SD_TEST
CALL !DISPLAY
BR !MAIN_A
;===============================================
ISR_INTTM000:PUSH AX
CLR1 TMIF000
MOV A,TIMEA
ROL A,1
BF A.5,$OUT_TM000
MOV A,#1
OUT_TM000: MOV TIMEA,A
INC TIME10MS
CMP TIME10MS,#10
BC $OUT_TM000A
MOV TIME10MS,#0 ;10MS
INC TIME500MS
CMP TIME500MS,#50
BC $OUT_TM000A
MOV TIME500MS,#0
INC SYS_S
XOR TIME_F,#01H ;冒号的闪烁
OUT_TM000A: POP AX
RETI
;================================================
INIT_CPU: MOV WDTM,#70H ;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_SUB: BF TIMEA.0,$TIME_OUT
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: 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
; 0 1 2 3 4 5 6 7 8 9 A
;=================================================
VOL_EXTA: BR !VOL_EXT
VOL_TEST: BF TIMEA.1,$VOL_EXTA
MOV ADM,#9
MOV ADS,#2
NOP
NOP
NOP
NOP
NOP
SET1 ADCS
WAIT_VAD: BF ADIF,$WAIT_VAD
MOV ADM,#0
CLR1 ADIF
MOV A,ADCRH
ADD A,VOL_BUF
RORC A,1
MOV VOL_BUF,A
CMP A,VOL_TEMP
BZ $VOL_RST
BC $VOL_DW
VOL_UP: BT VOL_FLAG,$VOL_AVR
SET1 VOL_FLAG
BR $VOL_RST
VOL_DW: BF VOL_FLAG,$VOL_AVR
CLR1 VOL_FLAG
BR $VOL_RST
VOL_AVR: INC VOL_CNT
CMP VOL_CNT,#60
BC $VOL_EXT
MOV VOL_TEMP,A
VOL_RST: MOV VOL_CNT,#0
CLR1 ZE_FLAG
CMP A,#106
BNC $VOL_RSTA
MOV A,#106
SET1 ZE_FLAG
VOL_RSTA: CMP A,#228
BC $VOL_RSTB
MOV A,#228
VOL_RSTB: MOV VOL_TEMP,A
CLR1 VL_F
CMP A,#164
BNC $VOL_CONA
SET1 VL_F
VOL_CONA: MOV B,#0
VOL_CON: MOVW HL,#VOL_TAB
MOV A,L
ADD A,B
MOV L,A
BNC $TAKE_VOL
INC H
TAKE_VOL: MOV A,[HL]
CMP A,VOL_TEMP
BNC $VOL_ED
INC B
BR $VOL_CON
VOL_ED: MOV A,B
CMP A,#0
BZ $VOL_LAB1
DEC B
VOL_LAB1: MOV VOL_C3,#5
MOV RAM4,#3BH
MOV RAM7,#0D0H
MOV A,B
BT A.0,$VOL_LAB0
MOV VOL_C3,#0
MOV RAM4,#3FH
MOV RAM7,#0B0H
VOL_LAB0: MOV A,B
CLR1 CY
RORC A,1
ADD A,#28
MOV VOL_C2,A
CALL !BCD_COV
MOV VOL_C2,A
CALL !TAB_B
MOV RAM6,A
MOV A,B
MOV VOL_C1,A
CALL !TAB_B
MOV RAM5,A
VOL_EXT: RET
;================================================
;C 为高四位 D为低四位
;================================================
XH_4: MOV C,A
CLR1 CY
ROR A,1
ROR A,1
ROR A,1
ROR A,1
AND A,#0FH
MOV D,A
MOV A,C
ROL A,1
ROL A,1
ROL A,1
ROL A,1
AND A,#0F0H
MOV C,A
RET
;================================================
VOL_TAB: DB 106D,108D,110D,112D,114D,116D,118D,119D,121D,123D,125D,127D,129D,131D,133D,135D
; 28 28.5 29 29.5 30 30.5 31 31.5 32 32.5 33 33.5 34 34.5 35 35.5
DB 137D,138D,140D,142D,144D,146D,148D,150D,152D,154D,155D,157D,159D,161D,163D,165D
; 36 36.5 37 37.5 38 38.5 39 39.5 40 40.5 41 41.5 42 42.5 43 43.5
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -