?? honey.asm
字號:
RS BIT P2.0 ;P3.4腳接RS端
R_W BIT P2.1 ;P3.5腳接R_W端
E BIT P2.2 ;P3.3腳接E端
D_BUS EQU P0 ;P1口控制D_BUS輸出
ORG 0000H ;從0000H處開始
LJMP MAIN ;跳轉(zhuǎn)到MAIN處
ORG 0030H ;主程序從0030H處開始
MAIN:
MOV SP,#70H ;堆棧指針指向70H
LCALL INITIAL ;調(diào)用啟動LCM子程序進行初始化
LCALL CLS ;調(diào)用清除LCM子程序
MOV A,#80H ;向A送立即數(shù)80H設(shè)定顯示地址為第一行第一列
LCALL WRITE_COM ;調(diào)用寫指令到LCM子程序
MOV DPTR,#LINE1 ;將第一行字符串的啟始地址送如DPTR中
LCALL DISP ;調(diào)用顯示字符串到LCM子程序
MOV A,#0C0H ;向A送立即數(shù)0C0H設(shè)定顯示地址為第二行第一列
LCALL WRITE_COM ;調(diào)用寫指令到LCM子程序
MOV DPTR,#LINE2 ;將第二行字符串的啟始地址送如DPTR中
LCALL DISP ;調(diào)用顯示字符串到LCM子程序
SJMP $ ;程序動態(tài)停機
LINE1: DB " PARADISE!? ",00H ;第一行字符串
LINE2: DB " I am Honey!!! ",00H ;第二行字符串
INITIAL: ;啟動LCM子程序
MOV A,#38H
LCALL WRITE_COM
MOV A,#0EH
LCALL WRITE_COM
MOV A,#06H
LCALL WRITE_COM
RET
CHECK_BUSY: ;查詢忙碌信號子程序
PUSH ACC
BUSY_LOOP:
CLR E
SETB R_W
CLR RS
SETB E
MOV A,D_BUS
CLR E
JB ACC.7,BUSY_LOOP
POP ACC
LCALL DEL
RET
WRITE_COM: ;寫指令到LCM子程序
LCALL CHECK_BUSY
CLR E
CLR RS
CLR R_W
SETB E
MOV D_BUS,A
CLR E
RET
WRITE_DATA: ;寫數(shù)據(jù)到LCM子程序
LCALL CHECK_BUSY
CLR E
SETB RS
CLR R_W
SETB E
MOV D_BUS,A
CLR E
RET
CLS: ;清除LCM子程序
MOV A,#01H
LCALL WRITE_COM
RET
DEL:
MOV R6,#5 ;2.7ms延時子程序
D1: MOV R7,#248
DJNZ R7,$
DJNZ R6,D1
RET
DISP:
PUSH ACC ;將A的內(nèi)容壓棧
DISP_LOOP:
CLR A ;A清零
MOVC A,@A+DPTR ;查表將字符串內(nèi)容送入A
JZ END_DISP ;若查到的內(nèi)容為0則終止查表
LCALL WRITE_DATA ;調(diào)用寫數(shù)據(jù)到LCM子程序
INC DPTR ;DPTR加1指向下一個對象
SJMP DISP_LOOP ;跳轉(zhuǎn)到DISP_LOOP循環(huán)執(zhí)行
END_DISP:
POP ACC ;彈出壓棧內(nèi)容至A
RET
END ;程序結(jié)束
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -