📄 cal_lcd.asm
字号:
MACRO PP2One()
lda #01h
sta PP
ENDM
MACRO PP2Zero()
lda #00h
sta PP
ENDM
MACRO PP2store(%1)
lda PP
sta0 %1
ENDM
MACRO PP2pop(%1)
lda0 %1
sta PP
ENDM
MACRO EI()
lda OP1
ora #10h ; D4 INTE
sta OP1
ENDM
MACRO DI()
lda OP1
anda #~10h
sta OP1
ENDM
.include "Cal_MACRO.H"
.area lcd_data(data,abs)
.org 0x11a ;0x120 ;0x113 ;0x170
tab_ptr:: .ds 2
com_chk:: .ds 1
LCDaddr:: .ds 1
LCDbit:: .ds 1
LCD_tab:: .ds 3
font:: .ds 1
dig_num:: .ds 1
asci_patent: .ds 1
patent_tab:: .ds 3
row_count: .ds 1
col_count: .ds 1
row_num equ 6 ;7
col_num equ 5
seg_num equ 8
lcd_start equ 0x80
lcd_end equ COM15+40H
lcd_size equ (lcd_end-lcd_start)+1
.area lcd_code(code)
GetMatrixDotAddrBit::
;lda LCD_tab+2
lda #0
sta r_tpp
lda LCD_tab+1
sta r_tph
lda LCD_tab
sta r_tpl
ldv
sta LCDaddr
ldv
sta LCDbit
ret
SetMatrixDot::
PP2One()
call GetMatrixDotAddrBit
lda LCDaddr
sta DP
lda LCDbit
sta0 .Temp
PP2Zero()
lda I
ora .Temp
sta I
PP2One()
ret
ClrMatrixDot::
PP2One()
call GetMatrixDotAddrBit
lda LCDbit
xora #0ffh
sta LCDbit
lda LCDaddr
sta DP
lda LCDbit
sta0 .Temp
PP2Zero()
lda I
anda .Temp
sta I
PP2One()
ret
;---------------------------------------------------------------------
Display_5X7_blk1::
lda #0
br Display_5X7_blk
Display_5X7_blk2::
lda #1
br Display_5X7_blk
Display_5X7_blk3::
lda #2
br Display_5X7_blk
Display_5X7_blk4::
lda #3
br Display_5X7_blk
Display_5X7_blk5::
lda #4
br Display_5X7_blk
Display_5X7_blk6::
lda #5
;br Display_5X7_blk
Display_5X7_blk::
sta0 .Temp
PP2One()
lda0 .Temp
sta com_chk
Blk_Display_5X7:
lda #@(dig5X7_tab)
sta tab_ptr+1
lda #<(dig5X7_tab)
sta tab_ptr
lda dig_num
adda #0
rolc
adda tab_ptr
sta tab_ptr
lda tab_ptr+1
addc #0
sta tab_ptr+1
lda #0
sta r_tpp
lda tab_ptr+1
sta r_tph
lda tab_ptr
sta r_tpl
ldv
sta LCD_tab+1
ldv
sta LCD_tab
lda #@(font5X7)
sta patent_tab+1
lda #<(font5X7)
sta patent_tab
lda #row_num
sta row_count
3$:
lda patent_tab
adda font
sta patent_tab
lda patent_tab+1
addc #0
sta patent_tab+1
lda row_count
deca
sta row_count
brnz 3$
lda com_chk
sta row_count
100$:
lda row_count
cmpe #0
brz 101$
deca
sta row_count
lda LCD_tab
adda #col_num*2
sta LCD_tab
lda LCD_tab+1
addc #0
sta LCD_tab+1
br 100$
101$:
lda patent_tab
adda com_chk
sta patent_tab
lda patent_tab+1
addc #0
sta patent_tab+1
blk_disp_5X7loop:
lda #0
sta r_tpp
lda patent_tab+1
sta r_tph
lda patent_tab
sta r_tpl
ldv
sta asci_patent
lda #col_num
sta col_count
blk_disp_5X7_1:
lda #0
sta r_tpp
lda LCD_tab+1
sta r_tph
lda LCD_tab
sta r_tpl
lda #>asci_patent
sta PP
lda asci_patent
adda #0
rolc
sta asci_patent
brnc blk_disp_5X7_2
ldv
sta DP
ldv
sta0 .Temp
PP2Zero()
lda I
ora .Temp
sta I
br blk_disp_5X7_3
blk_disp_5X7_2:
ldv
sta DP
ldv
xora #0ffh
sta0 .Temp
PP2Zero()
lda I
anda .Temp
sta I
blk_disp_5X7_3:
PP2One()
lda LCD_tab
adda #2
sta LCD_tab
lda LCD_tab+1
addc #0
sta LCD_tab+1
lda col_count
deca
sta col_count
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -