📄 ningh320.asm
字号:
;立即数
black equ 0 ;颜色字节0,1位是蓝色4级灰度;2,3,4位是绿色8级灰度
blue equ 03h
green equ 1ch ;5,6,7位是红色8级灰度
blueness equ 1fh ;三位表示灰度由低到高分别为000,001,010,011,100,101,110,111
red equ 0e0h
pink equ 0e3h
yellow equ 0fch
white equ 0ffh
;以上表示8种颜色的最高灰度
addr_wda equ 0000h ;写数据到LCD
addr_rda equ 0000h
addr_wcol equ 0200h;0001h ;写LCD列号
addr_wrow equ 0100h;0002h ;写LCD行号
addr_wop equ 0300h ;写操作码
sp_stack equ 60h ;堆栈指针
;标志位
flag_cir equ 01h ;画圆时用位标志区第二个字节
radw_0 equ 08h
radw_1 equ 09h
radw_2 equ 0ah
radw_3 equ 0bh
radw_4 equ 0ch
radw_5 equ 0dh
radw_6 equ 0eh
radw_7 equ 0fh
;寄存器
bit_byte equ 22h ;操作象素点时的标志位
xstal equ 24h ;x起始坐标低字节
xstah equ 25h ;x起始坐标高字节
ystal equ 26h ;y起始坐标低字节
ystah equ 27h ;y起始坐标高字节
xendl equ 28h ;x终止坐标低字节
xendh equ 29h ;x终止坐标高字节
yendl equ 2ah ;y终止坐标低字节
yendh equ 2bh ;y终止坐标高字节
d_xl equ 2ch ;x差值低字节
d_xh equ 2dh ;x差值高字节
d_yl equ 2eh ;y差值低字节
d_yh equ 2fh ;y差值高字节
;errl equ 30h ;误差值低字节
;errh equ 31h ;误差值高字节
cirxl equ 30h
cirxh equ 31h
ciryl equ 32h
ciryh equ 33h
rad equ 34h
radw equ 21h
radf equ 20h
arcx1 equ 35h
arcy1 equ 36h
arcx2 equ 37h
arcy2 equ 38h
errl equ 39h
errh equ 3ah
color equ 3bh
char_byte equ 3ch ;写汉字时暂存要写入的单字节字模
char_num equ 3dh ;一个汉字要写入char_byte32次(16*16)
char_num1 equ 3eh
bak_char_num equ 3fh
num_byte equ 46h ;一次操作LCD的数据12字节记数器
auxr equ 8eh
org 0000h
sjmp main
org 0040h
main: mov sp,#sp_stack
call initial
loop: mov dptr,#addr_wop ;当前显示页为0页,当前读写页为0页
mov a,#0
movx @dptr,a
mov r5,#6
ww001: call delay_100ms ;延时4秒钟
djnz r5,ww001
loop2: mov dptr,#addr_wop
mov a,#0
movx @dptr,a
call photo1
call photo2
call photo3
mov dptr,#addr_wop ;当前显示页为0页,当前读写页为0页
mov a,#11h
movx @dptr,a
call photo4
;sjmp loop
call photo5
sjmp loop
mov dptr,#addr_wop ;当前显示页为0页,当前读写页为0页
mov a,#00h
movx @dptr,a
call photo1
mov dptr,#addr_wrow
movx @dptr,a
loop1: call photo5
sjmp loop1
photo5: mov dptr,#addr_wop ;当前显示页为0页,当前读写页为0页
mov a,#0
movx @dptr,a
mov color,#black
call clr_lcd
mov xstah,#0
mov xstal,#48
mov ystah,#0
mov ystal,#127
mov dptr,#picture1
call disp_picture
mov xstah,#0
mov xstal,#176
mov ystah,#0
mov ystal,#127
mov dptr,#picture2
call disp_picture
mov xstah,#1
mov xstal,#30h
mov ystah,#0
mov ystal,#127
mov dptr,#picture1
call disp_picture
mov xstah,#0
mov xstal,#48
mov ystah,#0
mov ystal,#239
mov dptr,#picture2
call disp_picture
mov xstah,#0
mov xstal,#176
mov ystah,#0
mov ystal,#239
mov dptr,#picture1
call disp_picture
mov xstah,#1
mov xstal,#30h
mov ystah,#0
mov ystal,#239
mov dptr,#picture2
call disp_picture
mov r5,#200
photo51: call delay_100ms ;延时4秒钟
djnz r5,photo51
mov r5,#200
photo52: call delay_100ms ;延时4秒钟
djnz r5,photo52
ret
disp_picture: clr a
movc a,@a+dptr
mov r7,a
inc dptr
clr a
movc a,@a+dptr
mov r6,a
inc dptr
disp_p0: push dph
push dpl
mov a,ystal
mov dptr,#addr_wrow
movx @dptr,a
mov a,xstah
mov dptr,#addr_wcol
movx @dptr,a
mov a,xstal
movx @dptr,a
pop dpl
pop dph
mov r0,#80h
mov r5,#128
disp_p1: clr a
movc a,@a+dptr
mov @r0,a
inc dptr
inc r0
djnz r5,disp_p1
push dph
push dpl
mov dptr,#addr_wda
mov r5,#128
mov r0,#80h
disp_p2: mov a,@r0
movx @dptr,a
inc r0
djnz r5,disp_p2
pop dpl
pop dph
dec ystal
djnz r7,disp_p0
ret
clr_ram: mov r0,#08h
mov r7,#40
clr_ram1: mov @r0,#0
inc r0
djnz r7,clr_ram1
ret
clr_lcd: mov r6,#0
clr_lcd1: mov dptr,#addr_wrow
mov a,r6
movx @dptr,a
mov dptr,#addr_wcol
mov a,#0h
movx @dptr,a
movx @dptr,a
mov r7,#60
mov a,color
mov dptr,#addr_wda
clr_lcd2: movx @dptr,a
movx @dptr,a
movx @dptr,a
movx @dptr,a
movx @dptr,a
movx @dptr,a
movx @dptr,a
movx @dptr,a
djnz r7,clr_lcd2
inc r6
mov a,r6
cjne a,#234,clr_lcd1
ret
initial: mov p0,#0ffh
mov p1,#0ffh
mov p2,#0ffh
mov p3,#0ffh
call clr_ram
mov r5,#10
initial1: call delay_100ms
djnz r5,initial1
mov auxr,#03h
mov dptr,#addr_wop
mov a,#0
movx @dptr,a
init01: mov color,#blue
init0: call clr_lcd
ret
delayy: push 07h
push 06h
mov r3,#4
delayy1: call delay_100ms
djnz r3,delayy1
pop 06h
pop 07h
ret
line: clr c
mov a,#233
subb a,ystal
mov ystal,a
clr c
mov a,#233
subb a,yendl
mov yendl,a
line01: mov errl,#0 ;起始坐标双字节(xsta,ysta),终止坐标双字节(xend,yend)
mov errh,#0
mov a,yendl
clr c
subb a,ystal
mov d_yl,a
mov a,yendh
subb a,ystah
mov d_yh,a
jnc line1
line0: mov a,yendl
xch a,ystal
mov yendl,a
mov a,yendh
xch a,ystah
mov yendh,a
mov a,xendl
xch a,xstal
mov xendl,a
mov a,xendh
xch a,xstah
mov xendh,a
sjmp line01
line1: call dotw
mov a,xendl
clr c
subb a,xstal
mov d_xl,a
mov a,xendh
subb a,xstah
mov d_xh,a
jc line3
mov a,d_yh
cjne a,d_xh,line2
mov a,d_yl
cjne a,d_xl,line2
sjmp rate1
line2: jnc line21
sjmp rate1
line21: jmp rate2
line3: mov a,xstal
clr c
subb a,xendl
mov d_xl,a
mov a,xstah
subb a,xendh
mov d_xh,a
cjne a,d_yh,line4
mov a,d_xl
cjne a,d_yl,line4
line4: jc line5
jmp rate3
line5: jmp rate4
;**********************************k=0-1即d_y<=d_x时
rate1: mov a,ystah
cjne a,yendh,rate10
mov a,ystal
cjne a,yendl,rate10
sjmp rate11
rate10: mov a,errh
jb acc.7,rate12
mov a,ystal
add a,#1
mov ystal,a
mov a,ystah
addc a,#0
mov ystah,a
rate11: mov a,xstal
add a,#1
mov xstal,a
mov a,xstah
addc a,#0
mov xstah,a
mov a,errl
add a,d_yl
mov errl,a
mov a,errh
addc a,d_yh
mov errh,a
clr c
mov a,errl
subb a,d_xl
mov errl,a
mov a,errh
subb a,d_xh
mov errh,a
sjmp rate13
rate12: mov a,xstal
add a,#1
mov xstal,a
mov a,xstah
addc a,#0
mov xstah,a
mov a,errl
add a,d_yl
mov errl,a
mov a,errh
addc a,d_yh
mov errh,a
rate13: call dotw
mov a,xstal
cjne a,xendl,rate10
mov a,xstah
cjne a,xendh,rate10
ret
;*************************************k>1即d_y>d_x时
rate2: mov a,errh
jb acc.7,rate21
mov a,ystal
add a,#1
mov ystal,a
mov a,ystah
addc a,#0
mov ystah,a
clr c
mov a,errl
subb a,d_xl
mov errl,a
mov a,errh
subb a,d_xh
mov errh,a
sjmp rate22
rate21: mov a,ystal
add a,#1
mov ystal,a
mov a,ystah
addc a,#0
mov ystah,a
mov a,xstal
add a,#1
mov xstal,a
mov a,xstah
addc a,#0
mov xstah,a
mov a,errl
add a,d_yl
mov errl,a
mov a,errh
addc a,d_yh
mov errh,a
clr c
mov a,errl
subb a,d_xl
mov errl,a
mov a,errh
subb a,d_xh
mov errh,a
rate22: call dotw
mov a,ystal
cjne a,yendl,rate2
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -