📄 display.asm
字号:
.global _cd0,_cd1,_cd2,_cd3,_cd4
.global _xx
.text
EN_LCD_COL .word 0c00000h ;chip 74ls374 port address,LCD controlor
EN_LCD_DATA .word 0c00002h ;chip 74ls374 and 74244 port address,communication between LCD and DSP
tab1num .word tab1
tab2num .word tab2
destaddr2 .word _xx
disaddr4 .word _cd4
disaddr3 .word _cd3
disaddr2 .word _cd2
disaddr1 .word _cd1
disaddr0 .word _cd0
;The following is to init LCD
.text
;.global lcdready
;.global lcdwr
lcdready: push r4
tlcdr: sti r4,*ar0 ;00101110 E=1 RW=1 CS1=0
call dly
ldi *ar1,r6 ;read status from lcd
call dly
or 03h,r4
sti r4,*ar0 ;00100110 E=0 RW=1 CS1=0
call dly
ldi 80h,r7
tstb r6,r7
bnz tlcdr
pop r4
rets
;write instruction
lcdwr: push r5
sti r1,*ar1 ;DSP translate date
call dly
sti r5,*ar0
call dly
and 17h,r5
sti r5,*ar0 ;001 E=0
call dly
pop r5
rets
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
.global _lcd_clr
_lcd_clr: ldi @EN_LCD_COL,ar0
ldi @EN_LCD_DATA,ar1
ldi 3fh,r1
ldi 09h,r5
call lcdwr
ldi 3fh,r1
ldi 0ah,r5
call lcdwr
ldi 8,r2 ;set y address for temp
ldi 0b8h,r3 ;set page address
clear1: ldi 0eh,r4
call lcdready
ldi r3,r1
ldi 0ah,r5
call lcdwr
ldi 0dh,r4
call lcdready
ldi r3,r1
ldi 09h,r5
call lcdwr
ldi 0eh,r4
call lcdready
ldi 40h,r1
ldi 0ah,r5
call lcdwr
ldi 0dh,r4
call lcdready
ldi 09h,r5
call lcdwr
ldi 40h,r0 ;black 64bits per page
clear2: ldi 0eh,r4
call lcdready
ldi 0,r1
ldi 1ah,r5
call lcdwr
ldi 0dh,r4
call lcdready
ldi 19h,r5
call lcdwr
subi 1,r0
bnz clear2
addi 1,r3
subi 1,r2
bnz clear1
rets
.global _lcd_init
_lcd_init:
push ar0 ;for address
push ar1
push ar2
push ar3
push r0
push r1
push r2
push r3
push r4
push r5
ldi @EN_LCD_COL,ar0
ldi @EN_LCD_DATA,ar1
ldi 03h,r1 ;00000011 RTS=0
sti r1,*ar0
call dly
ldi 023h,r1
sti r1,*ar0 ;00100011 RTS=1
call dly
;;; to set first line
ldi 0c0h,r1
ldi 02eh,r4
ldi 022h,r5
call lcdready
call lcdwr
ldi 02dh,r4
ldi 021h,r5
call lcdready
call lcdwr
;;; to begin show
ldi 03fh,r1
ldi 02eh,r4
ldi 022h,r5
call lcdready
call lcdwr
ldi 02dh,r4
ldi 021h,r5
call lcdready
call lcdwr
pop r5
pop r4
pop r3
pop r2
pop r1
pop r0
pop ar3
pop ar2
pop ar1
pop ar0
rets
.global _temperdis
_temperdis:
ldi 0bah,r3
ldi 0dh,r4
ldi 52h,r2
ldi 09h,r5
ldi @_cd4,r0 ;cd4
cmpi 0,r0
bz temperdis1
call datadis1
ldi 0bbh,r3
ldi 52h,r2
ldi 09h,r5
ldi @_cd4,r0 ;cd4
call datadis2
temperdis0: ldi 0bah,r3
ldi 5ah,r2
ldi 09h,r5
ldi @_cd3,r0 ;cd3
call datadis1
ldi 0bbh,r3
ldi 5ah,r2
ldi 09h,r5
ldi @_cd3,r0 ;cd3
call datadis2
ldi 0bah,r3
ldi 62h,r2
ldi 09h,r5
ldi @_cd2,r0 ;cd2
call datadis1
ldi 0bbh,r3
ldi 62h,r2
ldi 09h,r5
ldi @_cd2,r0 ;cd2
call datadis2
ldi 0bah,r3
ldi 6ah,r2
ldi 09h,r5
ldi @_cd1,r0 ;cd1
call datadis1
ldi 0bbh,r3
ldi 6ch,r2
ldi 09h,r5
ldi @_cd1,r0 ;cd1
call datadis2
ldi 0bah,r3
ldi 74h,r2
ldi 09h,r5
ldi @_cd0,r0 ;cd0
call datadis1
ldi 0bbh,r3
ldi 74h,r2
ldi 09h,r5
ldi @_cd0,r0 ;cd0
call datadis2
rets
temperdis1: ldi 18,r0 ;space
call datadis2
ldi 0bbh,r3
ldi 52h,r2
ldi 09h,r5
ldi 18,r0 ;space
call datadis2
br temperdis0
rets
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
datadis1:ldi @EN_LCD_COL,ar0
ldi @EN_LCD_DATA,ar1
ldi r3,r1
call lcdready
call lcdwr
ldi r2,r1
call lcdready
call lcdwr
or 10h,r5
call lcdready
ldi @tab1num,ar7
mpyi 7,r0
addi r0,ar7
ldi 6,rc
rptb disp1lp
ldi *ar7++,r1
disp1lp: call lcdwr
ldi 3fh,r1
ldi 09h,r5
call lcdwr
ldi 3fh,r1
ldi 0ah,r5
call lcdwr
rets
;;;;;;;;;;
datadis2:ldi @EN_LCD_COL,ar0
ldi @EN_LCD_DATA,ar1
ldi r3,r1
call lcdready
call lcdwr
ldi r2,r1
call lcdready
call lcdwr
or 10h,r5
call lcdready
ldi @tab2num,ar7
mpyi 7,r0
addi r0,ar7
ldi 6,rc
rptb disp2lp
ldi *ar7++,r1
disp2lp: call lcdwr
ldi 3fh,r1
ldi 09h,r5
call lcdwr
ldi 3fh,r1
ldi 0ah,r5
call lcdwr
rets
;input: r2--------the first line perpage
; r3--------the page
; ar0-------the address of the instruction
; ar2-------the address of the data
;;;;;;;;;;;;;
.global _LCD_DISP_DOT
_LCD_DISP_DOT:
ldi @EN_LCD_COL,ar0
ldi @EN_LCD_DATA,ar1
ldi 0bbh,r3
ldi 6ah,r2
ldi 09h,r5
ldi r3,r1
call lcdready
call lcdwr
ldi r2,r1
call lcdready
call lcdwr
or 10h,r5
call lcdready
ldi 40h,r1
call lcdwr
rets
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
.global _conver
_conver:ldi @destaddr2, ar2
ldi *++ar2, r1
and 0f0h, r1
cmpi 0, r1
bz lcd_dis_p
call lcd_dis_n
lcd_dis_p:ldi 0bah,r3
ldi 4ah,r2
ldi 09h,r5
ldi 10,r0 ;"+"
call datadis1
ldi 0bbh,r3
ldi 4ah,r2
ldi 09h,r5
ldi 10,r0 ;"+"
call datadis2
br conver1
lcd_dis_n: ldi 0bah,r3
ldi 4ah,r2
ldi 09h,r5
ldi 11,r0 ;"-"
call datadis1
ldi 0bbh,r3
ldi 4ah,r2
ldi 09h,r5
ldi 11,r0 ;"-"
call datadis2
br conver1
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;转换整数部分,将十六进制转换为其BCD码
conver1:ldi @destaddr2, ar2
ldi *ar2++, r1
and 0f0h, r1
lsh 4, r1
ldi *ar2, r2
and 07h, r2
ldi r2, r3
lsh -3, r3
addi r1, r3
cmpi 0ah, r1
blt mend1
br mend2
mend2:addi 1, r2
br mend1
mend1: mpyf 6, r2
addi r3, r2
and 0f0h, r2
lsh 4, r2
cmpi 0ah, r2
blt mend11
br mend12
mend11: ldi 0, r4
sti r4, @_cd4
;ldi @disaddr4, ar3
;sti 0, *ar3
br mend1end
mend12:subi 0ah, r2
ldi 1, r4
sti r4, @_cd4
;ldi @disaddr4, ar3
;sti 1, *ar3
br mend1end
mend1end: sti r2, @_cd3
;ldi @disaddr3, ar3
;sti r2, *ar3
and 0fh, r3
sti r3, @_cd2
;ldi @disaddr2, ar3
;sti r3, *ar3
rets
;;;;;;;;;;;;;;
dly: push r1
dly0: ldi 38h,r1 ;38
dly1: subi 1,r1
bnz dly1
pop r1
rets
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
.sect ".iir_tab" ;make a separate section
tab1: .word 00h,0c0h,020h,010h,010h,020h,0c0h ;0 0
.word 00h,000h,040h,060h,0f0h,000h,000h ;1 1
.word 00h,0c0h,020h,010h,010h,020h,0c0h ;2 2
.word 00h,060h,010h,010h,010h,010h,0e0h ;3 3
.word 00h,000h,000h,0c0h,020h,0f0h,000h ;4 4
.word 00h,0f0h,090h,090h,090h,090h,010h ;5 5
.word 00h,0e0h,010h,010h,010h,010h,020h ;6 6
.word 00h,010h,010h,010h,010h,090h,070h ;7 7
.word 00h,0c0h,020h,010h,010h,020h,0c0h ;8 8
.word 00h,0e0h,010h,010h,010h,010h,0e0h ;9 9
.word 00h,010h,010h,0fdh,0fdh,010h,010h ;"+" 10
.word 00h,010h,010h,010h,010h,010h,010h ;"-" 11
tab2: .word 00h,01fh,20h,40h,40h,20h,1fh ;0 0
.word 00h,000h,00h,00h,7fh,00h,00h ;1 1
.word 00h,060h,50h,48h,44h,42h,41h ;2 2
.word 00h,030h,40h,40h,42h,42h,3dh ;3 3
.word 00h,018h,16h,11h,10h,7fh,10h ;4 4
.word 00h,031h,40h,40h,40h,40h,3fh ;5 5
.word 00h,03fh,42h,41h,41h,41h,3eh ;6 6
.word 00h,000h,00h,60h,1ch,03h,00h ;7 7
.word 00h,018h,25h,42h,42h,25h,18h ;8 8
.word 00h,023h,44h,44h,44h,42h,3fh ;9 9
.word 00fh,001h,001h,07fh,07fh,001h,001h ;"+" 10
.word 00h,001h,001h,001h,001h,001h,001h ;"-" 11
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -