;r0-------address
;r1-------data
;r2,r4----key scan
;r3
;r5,r6----delay
;r7-------timer interrupt counter
;lcd display program
rs bit p2.7
r_w bit p2.6
enable bit p2.5
lcddata data p1
;******************************************
org 0000h
ajmp main
org 000bh
ajmp insers
org 0060h
main:
mov tmod,#01h
mov tl0,#0b0h
mov th0,#3ch
setb ea
setb et0
clr tr0
mov r7,#40 ;2s counter
clr 0fh ;if 2s time reach,setb 0fh.
clr 10h ;
mov sp,#70h
start:
lcall initial
mov r0,#8fh
mov a,r0
lcall write_instruction
lcall key
mov r1,a
;tt:
jbc 0fh,ttl1
tt01:
mov dptr,#tab1
tt02:
mov a,r0
lcall write_instruction
mov a,50h
ttl2:
movc a,@a dptr
lcall writelcddata
mov tl0,#0b0h
mov th0,#3ch
mov r7,#40
setb tr0
lcall key
cjne a,50h,ttl3
jbc 0fh,ttl3
cpl 10h
jnb 10h,tt01
mov 50h,a
mov dptr,#tab2
ajmp tt02
ttl3: mov 50h,a
clr 10h
ajmp ttl1
ttl1:
dec r0
mov dptr,#tab1
mov a,50h
ajmp ttl2
insers:
mov tl0,#0b0h
mov th0,#3ch
djnz r7,l0
mov r7,#40
setb 0fh
clr tr0 ;2s time reach,stop count time.
l0:
reti
cls:
push acc
mov a,#01h
lcall write_instruction
pop acc
ret
;**********************************************
;initial
;set some parameters.
;please reference the techonology material.
;**********************************************
initial:
mov a,#00111000b ;8bit,2line,5*7
lcall write_instruction
mov a,#00001100b ;display on,cursor off,no blink
lcall write_instruction
mov a,#00000100b ;
lcall write_instruction
ret
checkbusy:
push acc
checkbusyloop:
clr enable
setb r_w
clr rs
setb enable
mov a,lcddata
clr enable
jb acc.7,checkbusyloop
pop acc
lcall delay1
ret
write_instruction:
lcall checkbusy
clr enable
clr r_w
clr rs
setb enable
mov lcddata,a
clr enable
ret
writelcddata:
lcall checkbusy
clr enable
clr r_w
setb rs
setb enable
mov lcddata,a
clr enable
ret
delay1:
mov r5,#08h
l4:
mov r6,#0f8h
l5:
djnz r6,l5
djnz r5,l4
ret
key: lcall ks
jnz k1
lcall delay2
ajmp key
k1: lcall delay2
lcall delay2
lcall ks
jnz k2
ajmp key
k2: mov r2,#0dfh
mov r4,#00h
k3: mov p3,r2
l6: jb p3.0,l1
mov a,#00h
ajmp lk
l1: jb p3.1,l2
mov a,#03h
ajmp lk
l2: jb p3.2,l3
mov a,#06h
ajmp lk
l3: jb p3.3,next
mov a,#09h
lk: add a,r4
push acc
k4: lcall delay2
lcall ks
jnz k4
pop acc
ret
next:
inc r4
mov a,r2
jnb acc.7,key
rl a
mov r2,a
ajmp k3
ks: mov p3,#0fh
mov a,p3
xrl a,#0fh
ret
delay2:
mov r5,#08h
l7: mov r6,#0fah
l8: djnz r6,l8
djnz r5,l7
ret
tab1:db 31h,32h,33h,34h,35h,36h,37h,38h,39h
db 41h,30h,42h
tab2:db 43h,44h,45h,46h,47h,48h,49h,4ah,4bh
db 4ch,4dh,4eh
end
『本文转载自网络,u球体育app下载的版权归原作者所有,如有侵权请联系删除』