📄 lcd_yb.asm.bak
字号:
CALL !SDA1621 ;101 01100.0--看情况定
CLR1 DA_1621 ;第九位值恒为'0'
CALL !CK_1621 ;第九位空脉冲
;------------------------
MOV A,RAM1 ;RAM1为需要显示的数据
CALL !SDA1621;seg1
MOV A,RAM2 ;RAM2为需要显示的数据
BF MAOHAO,$MH_L
SET1 A.0
MH_L: CALL !SDA1621;seg2
MOV A,RAM3 ;RAM3为需要显示的数据
CALL !SDA1621;seg3
MOV A,RAM4
CALL !SDA1621;seg4
MOV A,RAM5
SET1 A.4
BF VL_F,$VL_MS
BT MAOHAO,$VL_MS
CLR1 A.4
VL_MS: CALL !SDA1621;seg5
MOV A,RAM6
CALL !SDA1621;seg6
MOV A,RAM7
CLR1 A.3
BT ZE_UP,$FH_LAB
SET1 A.3
FH_LAB: CALL !SDA1621;seg7
MOV A,RAM8
SET1 A.3
CALL !SDA1621;seg8
MOV A,RAM9 ;RAM1为需要显示的数据
CALL !SDA1621;seg9
MOV A,RAM10 ;RAM2为需要显示的数据
CALL !SDA1621;seg10
MOV A,RAM11 ;RAM3为需要显示的数据
CALL !SDA1621;seg11
MOV A,RAM12
SET1 A.4 ;KM
CALL !SDA1621;seg12
MOV A,RAM13
SET1 A.4
CALL !SDA1621;seg13
MOV A,RAM14
CLR1 A.3
BF RA263,$DDD_LAB0
SET1 A.3
DDD_LAB0: CALL !SDA1621;seg14
MOV A,RAM15
CLR1 A.3
BF RA283,$DDD_LAB
SET1 A.3
DDD_LAB: CALL !SDA1621;seg15
MOV A,RAM16
CALL !SDA1621;seg16
RET
;==============================================================
;BCD转换,出来时A为个数,B为十位数,
;===============================================================
BCD_COV: MOV B,#0
BCD_CON: CMP A,#10
BC $BCD_END
INC B
SUB A,#10
BR $BCD_CON
BCD_END: RET
;================================================================
DISPLAY: BF TIMEA.5,$DISP_OUT
BT FLAGB.5,$DISP_OUT
MOV FLAGB,#20H
CALL !DISPLAY_LCD
DISP_OUT: RET
;===============================================================
SD_RSTH: MOV SD_CNT,#0
SD_EXTA: BR !SD_EXT
SD_TEST: BF TIMEA.4,$SD_EXTA
BT FLAGB.4,$SD_EXTA
MOV FLAGB,#10H
MOV ADM,#1
MOV ADS,#3
NOP
NOP
NOP
NOP
NOP
SET1 ADCS
WAIT_SAD: BF ADIF,$WAIT_SAD
CLR1 ADIF
MOV A,ADCRH
MOV ADM,#0
ADD A,SD_BUF
RORC A,1
MOV SD_BUF,A
CMP A,SD_TEMP
BZ $SD_RST
BC $SD_DW
SD_UP: BT SD_FLAG,$SD_AVR
SET1 SD_FLAG
BR $SD_RSTH
SD_DW: BF SD_FLAG,$SD_AVR
CLR1 SD_FLAG
BR $SD_RSTH
SD_AVR: INC SD_CNT
CMP SD_CNT,#80
BC $SD_EXTA
BF SD_FLAG,$SD_SUB
ADD SD_TEMP,#1
BR $SD_RST
SD_SUB: SUB SD_TEMP,#1
SD_RST: MOV SD_CNT,#0
; CMP A,#106
; BNC $SD_RSTA
; MOV A,#106
SD_RSTA: CMP A,#228
BC $SD_RSTB
MOV A,#228
SD_RSTB: MOV SD_TEMP,A
SD_CONA: MOV B,#0
SD_CON: MOVW HL,#SD_TAB
MOV A,L
ADD A,B
MOV L,A
BNC $TAKE_SD
INC H
TAKE_SD: MOV A,[HL]
CMP A,SD_TEMP
BNC $SD_ED
INC B
BR $SD_CON
SD_ED: MOV A,B
CLR1 SD_F
CMP A,#0
BZ $SD_LAB10
DEC B
SET1 SD_F
BR $SD_LAB1
SD_LAB10: MOV LC_S,#0
SD_LAB1: MOV A,B
MOV SD_TBUF,A
CMP A,#0
BZ $SD_WZ
BF AD_F,$SD_WZ
CALL !ADD_LOP
MOV SD_TBUF,A
SD_WZ: CALL !BCD_COV
CALL !TAB_C
MOV RAM14,A
MOV A,B
CALL !TAB_C
MOV RAM15,A
SD_EXT: RET
;=====================================================
SD_TAB: DB 000D,004D,008D,011D,015D,019D,023D,027D,030D,034D,038D,042D,046D
; 0 1 2 3 4 5 6 7 8 9 10 11 12
DB 049D,053D,057D,061D,064D,068D,072D,076D,080D,083D,087D,091D,095D
; 13 14 15 16 17 18 19 20 21 22 23 24 25
DB 099D,102D,106D,110D,114D,118D,121D,125D,129D,133D,137D,140D,144D
; 26 27 28 29 30 31 32 33 34 35 36 37 38
DB 148D,152D,155D,159D,163D,167D,171D,174D,178D,182D,186D,190D,193D
; 39 40 41 42 43 44 45 46 47 48 49 50 51
DB 197D,201D,205D,209D,212D,216D,220D,224D,228D
; 52 53 54 55 56 57 58 59 60
;=====================================================
ADD_LOP: MOV A,AD_ADJUST
MOV B,A
MOVW AX,#0
ADD_LP0: ADD A,SD_TBUF
BNC $ADD_LP1
INC X
ADD_LP1: DBNZ B,$ADD_LP0
XCH A,X
ADD_LP2: CMPW AX,#10
BC $ADD_LP3
INC B
SUBW AX,#10
BR $ADD_LP2
ADD_LP3: MOV A,B
CMP A,#99
BC $ADD_OUT
MOV A,#99
ADD_OUT: RET
;======================================================
;显示999.9KM,3个字节
;=====================================================
LC_TEST: BF FLAGA.0,$LC_OUT
CLR1 FLAGA.0
CMP SD_TBUF,#0
BZ $LC_OUT
CALL !ADD_28
MOVW LC_RAM0,AX
MOV A,LC_CRAM0
ADD A,LC_RAM0
MOV LC_CRAM0,A
MOV A,LC_CRAM1
ADDC A,LC_RAM1
MOV LC_CRAM1,A
MOVW AX,LC_CRAM0
CALL !SUB_1000
MOVW LC_CRAM0,AX
MOV A,LC_CT0
ADD A,B
MOV LC_CT0,A
ADDC LC_CT1,#0
MOVW AX,LC_CT0
MOV B,#0
MOV LC_XS0,#0
MOV LC_XS1,#0
MOV LC_XS2,#0
MOV LC_XS3,#0
DW_1000: CMPW AX,#1000
BC $DW_100
ADD LC_XS3,#1
SUBW AX,#1000
BR $DW_1000
DW_100: CMPW AX,#100
BC $DW_10
ADD LC_XS2,#1
SUBW AX,#100
BR $DW_100
DW_10: CMPW AX,#10
BC $DW_OUT
ADD LC_XS1,#1
SUBW AX,#10
BR $DW_10
DW_OUT: MOV A,X
MOV LC_XS0,A
CALL !TAB_B
MOV RAM13,A
MOV A,LC_XS1
CALL !TAB_B
MOV RAM12,A
MOV A,LC_XS2
CALL !TAB_B
MOV RAM11,A
MOV A,LC_XS3
CALL !TAB_B
MOV RAM10,A
LC_OUT: RET
;====================================================
ADD_28: MOV A,SD_TBUF
MOV B,A
MOVW AX,#0
LP_ADD: ADDW AX,#28
DBNZ B,$LP_ADD
RET
;=====================================================
SUB_1000: MOV B,#0
SUB_LP: CMPW AX,#1000
BC $SUB_OUT
INC B
SUBW AX,#1000
BR $SUB_LP
SUB_OUT: RET
;=====================================================
AD_RSTH: MOV AD_CNT,#0
AD_EXTA: BR !AD_EXT
AD_TEST: BF TIMEA.3,$AD_EXTA
BT FLAGB.3,$AD_EXTA
MOV FLAGB,#8
MOV ADM,#1
MOV ADS,#0
NOP
NOP
NOP
NOP
NOP
SET1 ADCS
WAIT_AAD: BF ADIF,$WAIT_AAD
CLR1 ADIF
MOV A,ADCRH
MOV ADM,#0
ADD A,AD_BUF
RORC A,1
MOV AD_BUF,A
CMP A,AD_TEMP
BZ $AD_RSTH
BC $AD_DW
AD_UP: BT AD_FLAG,$AD_AVR
SET1 AD_FLAG
BR $AD_RSTH
AD_DW: BF AD_FLAG,$AD_AVR
CLR1 AD_FLAG
BR $AD_RSTH
AD_AVR: INC AD_CNT
CMP AD_CNT,#80
BC $AD_EXTA
BF AD_FLAG,$AD_SUB
ADD AD_TEMP,#1
BR $AD_RST
AD_SUB: SUB AD_TEMP,#1
AD_RST: MOV AD_CNT,#0
CMP A,#65
BNC $AD_RSTA
CLR1 AD_F
BR $AD_EXT
AD_RSTA: SUB A,#64
MOV AD_TEMP,A
CLR1 CY
RORC A,1
CLR1 CY
RORC A,1
MOV AD_ADJUST,A
SET1 AD_F
CMP AD_ADJUST,#0
BNZ $AD_EXT
CLR1 AD_F
AD_EXT: RET
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -