RS EQU P3.3 
RW EQU P3.2 
E EQU P3.1
mov p3,#0ffh 
MOV P1,#01H ;清除屏幕
ACALL ENABLE 
MOV P1,#38H ;8位点阵
ACALL ENABLE 
MOV P1,#0FH ;开显示
ACALL ENABLE 
MOV P1,#06H ;移动光标
ACALL ENABLE 
MOV P1,#80H ;显示位置 
ACALL ENABLE 
l3: mov p1,#01h 
acall enable
mov dptr,#table1 ;送第一句话
call write1
call enable
;mov p1,#01h
MOV P1,#0C0H ;写入显示起始地址（第二行第一个位置）
ACALL ENABLE ;调用写入命令子程序



;ljmp l1
;l4: mov p1,#01h
;acall enable
mov dptr,#table2 ;送第二句话
call write1
call enable
mov p1,#01h
;ljmp l1
;l1: jnb p2.3,l3 ;监测键盘
;jnb p2.4,l4
call delay1
call delay1
call delay1
jmp l3

ENABLE: ;送命令
CLR RS
CLR RW 
CLR E 
ACALL DELAY 
SETB E 
RET
write1: ;送字符串
mov r1,#00h
a1:mov a,r1
movc a,@a+dptr
call write2
inc r1
cjne a,#00h,a1 ;以00H做字符串结束标志
ret
write2: ;送单个字符
mov p1,a
setb rs
clr rw
clr e
call delay
setb e
ret 
delay: ;延时子程序
mov r7,#255
d1:mov r6,#255 
d2:djnz r6,d2
djnz r7,d1
ret
delay1:
mov r7,#255
delay2:mov r6,#255
       djnz r6,$
       djnz r7,delay2
ret
;以下每个表格都是一句话,以00H作为每句话的结尾.
table1: db 20h,20h,20h,57h,45h,4ch,43h,4fh,4dh,45h,20h,54h,4fh,20h,20h,20h,20h,00h
table2: db 20h,57h,57h,57h,2Eh,4dh,43h,55h,39h,39h,2Eh,43h,4Fh,4Dh,20h,20h,20h,00h 
end
