📄 lcd_ybaa.asm
字号:
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_EXTA: BR !TEP_EXT
TEMP_TEST: BF TIMEA.2,$TEP_EXTA
MOV ADM,#9
MOV ADS,#2
NOP
NOP
NOP
NOP
NOP
SET1 ADCS
WAIT_TEP: BF ADIF,$WAIT_TEP
MOV ADM,#0
CLR1 ADIF
MOV A,ADCRH
ADD A,TEP_BUF
RORC A,1
MOV TEP_BUF,A
CMP A,TEP_TEMP
BZ $TEP_RST
BC $TEP_DW
TEP_UP: BT TEP_FLAG,$TEP_AVR
SET1 TEP_FLAG
BR $TEP_RST
TEP_DW: BF TEP_FLAG,$TEP_AVR
CLR1 TEP_FLAG
BR $TEP_RST
TEP_AVR: INC TEP_CNT
CMP TEP_CNT,#60
BC $TEP_EXTA
MOV TEP_TEMP,A
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,COM_BUF
AND A,#0F0H
MOV RAM9,A
MOV A,B
CALL !TAB_C
MOV COM_BUF,A
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
;======================================================================
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 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
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
CALL !SDA1621;seg12
MOV A,RAM13
CALL !SDA1621;seg13
MOV A,RAM14
CALL !SDA1621;seg14
MOV A,RAM15
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.4,$DISP_OUT
CALL !DISPLAY_LCD
DISP_OUT: RET
;===============================================================
SD_EXTA: BR !SD_EXT
SD_TEST: BF TIMEA.1,$SD_EXTA
MOV ADM,#9
MOV ADS,#2
NOP
NOP
NOP
NOP
NOP
SET1 ADCS
WAIT_SAD: BF ADIF,$WAIT_SAD
MOV ADM,#0
CLR1 ADIF
MOV A,ADCRH
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_RST
SD_DW: BF SD_FLAG,$SD_AVR
CLR1 SD_FLAG
BR $SD_RST
SD_AVR: INC SD_CNT
CMP SD_CNT,#60
BC $SD_EXT
MOV SD_TEMP,A
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
CMP A,#0
BZ $SD_LAB1
DEC B
SD_LAB1: MOV A,B
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
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -