;来了,请大家多指教。22.1184m,89c51. 1602.
;用11.0592的话,改f4为fd就行了
;mov tmod,#20h
;mov th1,#0f4h
;mov tl1,#0f4h
;mov pcon,#00h
;我用是是me300a+学习板,11.0592晶体,89s52,1602
;lcd用的口为rs=p2.0,rw=2.1,en=2.2,输出口为p0.0-p0.7
rs equ p2.0
rw equ p2.1
e equ p2.2
org 00100h
mov p0,#00000001b;清屏
acall enable ;这个子程序,是不是搞丢了,我就加了一个?
acall enable1
mov p0,#38h
acall enable
mov p0,#0ch
acall enable
clr ea ;关中断
mov tmod,#20h
mov th1,#0fdh;
mov tl1,#0fdh;设置速率
mov pcon,#00h
setb tr1
mov scon,#70h
mov r0,#10h
call nosignal;lcd显示字符
read:
call rec
cjne a,#04dh,read;'m'?;判断是否m,我只判断m和c
call rec
cjne a,#043h,read;'c'?
call rec
mov r0,#10h;数据储存起始地址
mov r1,#028h;数据位数
store: ;储存
call rec
mov @r0,a
inc r0
djnz r1,store
mov p0,#8ah
acall enable
mov r1,#06h
mov r0,#10h
display:
mov a,@r0;提取数据
call write;写往1602
inc r0
djnz r1,display
mov r0,#019h
mov r1,#09h
mov p0,#080h
acall enable
display1:
mov a,@r0
call write
inc r0
djnz r1,display1
mov r0,#026h
mov r1,#09h
mov p0,#0c0h
acall enable
display2:
mov a,@r0
call write
inc r0
djnz r1,display2
jmp read
rec:
jnb ri,$
clr ri
mov a,sbuf
;ret enable: 这行什么意思
clr rs
clr rw
clr e
acall delay1
setb e
ret
;=============================
;这一子程序我加的
enable:
clr rs
clr rw
clr e
acall delay
setb e
ret
;=============================
enable1:
clr rs
clr rw
clr e
acall delay
setb e
ret
write:
mov p0,a
setb rs
clr rw
clr e
call delay
setb e
ret
delay:
mov p0,#0ffh
clr rs
setb rw
clr e
nop
setb e
jb p0.7,delay
ret
delay1:
mov r7,#255
d1:mov r6,#255
d2:djnz r6,d2
djnz r7,d1
ret
;lcd 显示字符子程序
nosignal:
mov p0,#080h;ïôê¾î»öã
acall enable
mov r2,#0h
mov dptr,#nosig
back:
mov a,r2
movc a,@a+dptr
call write
inc r2
cjne a,#6ch,back
ret
nosig:db 4eh,6fh,20h,53h,69h,67h,6eh,61h,6ch
; n o s i g n a lend
end
请看注释,好像有问题!!!!!!!!