?? ningh320.asm
字號:
;立即數(shù)
black equ 0 ;顏色字節(jié)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 ;寫數(shù)據(jù)到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 ;畫圓時用位標志區(qū)第二個字節(jié)
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起始坐標低字節(jié)
xstah equ 25h ;x起始坐標高字節(jié)
ystal equ 26h ;y起始坐標低字節(jié)
ystah equ 27h ;y起始坐標高字節(jié)
xendl equ 28h ;x終止坐標低字節(jié)
xendh equ 29h ;x終止坐標高字節(jié)
yendl equ 2ah ;y終止坐標低字節(jié)
yendh equ 2bh ;y終止坐標高字節(jié)
d_xl equ 2ch ;x差值低字節(jié)
d_xh equ 2dh ;x差值高字節(jié)
d_yl equ 2eh ;y差值低字節(jié)
d_yh equ 2fh ;y差值高字節(jié)
;errl equ 30h ;誤差值低字節(jié)
;errh equ 31h ;誤差值高字節(jié)
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 ;寫漢字時暫存要寫入的單字節(jié)字模
char_num equ 3dh ;一個漢字要寫入char_byte32次(16*16)
char_num1 equ 3eh
bak_char_num equ 3fh
num_byte equ 46h ;一次操作LCD的數(shù)據(jù)12字節(jié)記數(shù)器
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 ;起始坐標雙字節(jié)(xsta,ysta),終止坐標雙字節(jié)(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 + -