📄 lcd_yb.asm.bak
字号:
; 0 1 2 3 4 5 6 7 8 9 A
;=================================================
VOL_RSTH: MOV VOL_CNT,#0
VOL_EXTA: BR !VOL_EXT
VOL_TEST: BF TIMEA.1,$VOL_EXTA
BT FLAGB.1,$VOL_EXTA
MOV FLAGB,#2
MOV ADM,#1
MOV ADS,#2
NOP
NOP
NOP
NOP
NOP
SET1 ADCS
WAIT_VAD: BF ADIF,$WAIT_VAD
CLR1 ADIF
MOV A,ADCRH
MOV ADM,#0
ADD A,VOL_BUF
RORC A,1
MOV VOL_BUF,A
CMP A,VOL_TEMP
BZ $VOL_RSTH
BC $VOL_DW
VOL_UP: BT VOL_FLAG,$VOL_AVR
SET1 VOL_FLAG
BR $VOL_RSTH
VOL_DW: BF VOL_FLAG,$VOL_AVR
CLR1 VOL_FLAG
BR $VOL_RSTH
VOL_AVR: INC VOL_CNT
CMP VOL_CNT,#80
BC $VOL_EXTA
BF VOL_FLAG,$VOL_SUB
ADD VOL_TEMP,#1
BR $VOL_RST
VOL_SUB: SUB VOL_TEMP,#1
VOL_RST: MOV VOL_CNT,#0
CLR1 ZE_FLAG
CMP A,#106
BNC $VOL_RSTA
MOV A,#106
SET1 ZE_FLAG
VOL_RSTA: ADD A,#1
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 A,RAM7
AND A,#0FH
OR A,#0D0H
MOV RAM7,A
MOV A,B
BT A.0,$VOL_LAB0
MOV VOL_C3,#0
MOV RAM4,#3FH
MOV A,RAM7
AND A,#0FH
OR A,#0B0H
MOV RAM7,A
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
;================================================
;================================================
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
DB 167D,169D,171D,173D,174D,176D,178D,180D,182D,184D,186D,188D,190D,192D,193D,195D
; 44 44.5 45 45.5 46 46.5 47 47.5 48 48.5 49 49.5 50 50.5 51 51.5
DB 197D,199D,201D,203D,205D,207D,209D,210D,212D,214D,216D,218D,220D,222D,224D,226D,228D
; 52 52.5 53 53.5 54 54.5 55 55.5 56 56.5 57 57.5 58 58.5 59 59.5 60
;================================================
TEP_RSTH: MOV TEP_CNT,#0
TEP_EXTA: BR !TEP_EXT
TEMP_TEST: BF TIMEA.2,$TEP_EXTA
BT FLAGB.2,$TEP_EXTA
MOV FLAGB,#4
MOV ADM,#1
MOV ADS,#1
NOP
NOP
NOP
NOP
NOP
SET1 ADCS
WAIT_TEP: BF ADIF,$WAIT_TEP
CLR1 ADIF
MOV A,ADCRH
; MOV A,#126
MOV ADM,#0
ADD A,TEP_BUF
RORC A,1
MOV TEP_BUF,A
CMP A,TEP_TEMP
BZ $TEP_RSTH
BC $TEP_DW
TEP_UP: BT TEP_FLAG,$TEP_AVR
SET1 TEP_FLAG
BR $TEP_RSTH
TEP_DW: BF TEP_FLAG,$TEP_AVR
CLR1 TEP_FLAG
BR $TEP_RSTH
TEP_AVR: INC TEP_CNT
CMP TEP_CNT,#80
BC $TEP_EXTA
BF TEP_FLAG,$TEP_SUB
ADD TEP_TEMP,#1
BR $TEP_RST
TEP_SUB: SUB TEP_TEMP,#1
TEP_RST: MOV TEP_CNT,#0
CMP A,#16
BNC $TEP_RSTA
MOV A,#16
TEP_RSTA: CMP A,#177
BC $TEP_RSTB
MOV A,#177
TEP_RSTB: MOV TEP_TEMP,A
MOV A,TEP_TEMP
SET1 ZE_UP
CMP A,#48 ;0
BZ $TEP_LAB0
BNC $TEP_CONA
CLR1 ZE_UP
TEP_CONA: MOV B,#0
TEP_CON: MOVW HL,#TEP_TAB
MOV A,L
ADD A,B
MOV L,A
BNC $TAKE_TEP
INC H
TAKE_TEP: MOV A,[HL]
CMP A,TEP_TEMP
BNC $TEP_ED
INC B
BR $TEP_CON
TEP_LAB0: MOV A,#0
MOV B,#0
BR $TEP_LAB4
TEP_ED: MOV A,B
CMP A,#0
BZ $TEP_LAB1
DEC B
TEP_LAB1: BT ZE_UP,$TEP_LAB20
MOV A,#25
SUB A,B
MOV B,A
BR $TEP_LAB2
TEP_LAB20: MOV A,B
SUB A,#25
MOV B,A
TEP_LAB2: MOV A,B
CALL !BCD_COV
TEP_LAB4: ;MOV TEP_L,A
CALL !TAB_C
MOV COM_BUF,A
AND A,#0FH
MOV RAM8,A
MOV A,RAM9
AND A,#0FH
MOV RAM9,A
MOV A,COM_BUF
AND A,#0F0H
OR A,RAM9
MOV RAM9,A
MOV A,B
CALL !TAB_C
MOV COM_BUF,A
MOV A,RAM7
AND A,#0F0H
MOV RAM7,A
MOV A,COM_BUF
AND A,#0FH
OR A,RAM7
MOV RAM7,A
MOV A,COM_BUF
AND A,#0F0H
OR A,RAM8
MOV RAM8,A
TEP_EXT: RET
;=======================================================================
TAB_C: MOVW HL,#TAB_C0
ADD A,L
MOV L,A
BNC $TAB_CLAB
INC H
TAB_CLAB: MOV A,[HL]
RET
TAB_C0: DB 0F5H,060H,0B6H,0F2H,063H,0D3H,0D7H,070H,0F7H,0F3H ;077H
; 0 1 2 3 4 5 6 7 8 9 A
;======================================================================
DEL500mS: MOV TEMP,#5
WT500mSB: MOV B,#0
WT500mSA: DBNZ C,$WT500mSA
MOV WDTE,#0ACH
DBNZ B,$WT500mSA
DBNZ TEMP,$WT500mSB
RET
;=======================================================================
TEP_TAB: DB 016D,017D,018D,019D,020D,021D,022D,023D,024D,025D,026D,027D,029D,030D
; -25 -24 -23 -22 -21 -20 -19 -18 -17 -16 -15 -14 -13 -12
DB 031D,032D,034D,035D,037D,038D,040D,041D,043D,045D,046D,048D,050D,052D
; -11 -10 -9 -8 -7 -6 -5 -4 -3 -2 -1 0 1 2
DB 054D,056D,058D,059D,061D,064D,066D,068D,070D,072D,074D,076D,079D,081D
; 3 4 5 6 7 8 9 10 11 12 13 14 15 16
DB 083D,085D,088D,090D,092D,095D,097D,099D,102D,104D,107D,109D,111D,114D
; 17 18 19 20 21 22 23 24 25 26 27 28 29 30
DB 116D,118D,121D,123D,125D,128D,130D,132D,135D,137D,139D,141D,144D,146D
; 31 32 33 34 35 36 37 38 39 40 41 42 43 44
DB 148D,150D,152D,154D,156D,158D,160D,162D,164D,166D,168D,170D,172D,174D
; 45 46 47 48 49 50 51 52 53 54 55 56 57 58
DB 175D,177D
; 59 60
;================================================
;LCD显示程序
;以下为HT1621的写程序,发送命令字格式为:100 xxxx xxxx x all is 12bits
;该程序的入口参数为A,再送到TEMP
COM1621: MOV TEMP,A
CLR1 CS_1621
SET1 DA_1621
CALL !CK_1621
CLR1 DA_1621
CALL !CK_1621
CALL !CK_1621
;上为发关100代码
CALL !SD_1621
CALL !CK_1621 ;第九个脉冲 0
SET1 CS_1621
RET
;-----------------------
SDA1621: MOV TEMP,A
SD_1621: MOV SEND_CNT,#8
SD1621A: SET1 DA_1621
BT A.7,$SD1621B
CLR1 DA_1621
SD1621B: SET1 WR_1621
ROLC A,1
NOP
NOP
NOP
NOP
CLR1 WR_1621
DBNZ SEND_CNT,$SD1621A
ROLC A,1
MOV TEMP,A ;保持入参不变
RET
;-----------------------
CK_1621: SET1 WR_1621
NOP
NOP
NOP
NOP
NOP
NOP
CLR1 WR_1621
RET
;====================================================
;LCD显示程序
DISPLAY_LCD:;1621控制字
MOV WDTE,#0ACH
MOV A,#00011000B;0X18 ;XTAL 256K INTTEL_MODE---RC
CALL !COM1621
MOV A,#00000001B;0X01 ;SYS_OSC START MODE
CALL !COM1621
MOV A,#00101001B;0X29 ;1/4;1/3 BIAS 4COM LCD MODE
CALL !COM1621
MOV A,#00000011B;0X03 ;LCD ON MODE
CALL !COM1621
;------------------------
;开始的SEG段选择,假设开始为SEG1
CLR1 CS_1621 ;片选有效
MOV A,#10100000B;值看情况定 ;开始的SEG段选择,后边没送一个数据SEG加1
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -