MAIN:
CALL DELLONG ;延时> 40ms
MOV SP,#60H ;设置堆栈初始地址
CALL INIT_LCD
CALL SET_CUR_1 ;DISPLAY IN LINE 1
MOV DPTR,#MSG_MXIC ;SHOW MSG 1
CALL SHOW_IT
CALL SET_CUR_2 ;DISPLAY IN LINE 2
MOV DPTR,#MSG_93L55X ;SHOW MSG 2
CALL SHOW_IT
sjmp $
SHOW_CHAR:
PUSH DPH
PUSH DPL
MOV DPTR,#8001H
MOVX @DPTR,A
CALL LCD_DELAY
POP DPL
POP DPH
RET
INIT_LCD:
;功能设置(2行显示,5*8点阵)
MOV A,#38H
CALL LCD_COMMAND
CALL LCD_DELAY
;重复功能设置
MOV A,#38H
CALL LCD_COMMAND
CALL LCD_DELAY
;显示开启,光标、闪烁关闭
MOV A,#0CH
CALL LCD_COMMAND
CALL LCD_DELAY
;清屏
MOV A,#01H
CALL LCD_COMMAND
CALL LCD_DELAY
;输入方式设置
MOV A,#06H ;数据读写操作后,AC自动加1
CALL LCD_COMMAND ;数据读写操作画面不动
CALL LCD_DELAY
RET
DELLONG:
MOV R5,#05H
MOV R4,#0F6H
MOV R3,#50H
HERE:
DJNZ R3,HERE
DJNZ R4,HERE
DJNZ R5,HERE
RET
LCD_DELAY: ;判BF=0?是继续
MOV DPTR,#8000H
MOVX A,@DPTR
JB ACC.7,LCD_DELAY
RET
SET_CUR_1:
MOV A,#80H
CALL LCD_COMMAND
RET
SET_CUR_2:
MOV A,#0C0H
CALL LCD_COMMAND
RET
SHOW_IT:
MOV A,#0
MOVC A,@A+DPTR
CJNE A,#0FFH,SHOW_IT_ON
RET
SHOW_IT_ON:
CALL SHOW_CHAR
INC DPTR
JMP SHOW_IT
LCD_COMMAND:
PUSH DPH
PUSH DPL
MOV DPTR,#8000H
MOVX @DPTR,A
CALL LCD_DELAY
POP DPL
POP DPH
RET
MSG_MXIC:
DB "Johnny's testing"
DB 0FFH
MSG_93L55X:
DB "*** 123456 ***"
DB 0FFH
end
谢谢拉