⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 honey.asm

📁 本程序实现1602的简单显示控制
💻 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   ;跳转到MAIN处

 ORG 0030H   ;主程序从0030H处开始

MAIN: 
 MOV SP,#70H   ;堆栈指针指向70H
 LCALL INITIAL   ;调用启动LCM子程序进行初始化
 LCALL CLS   ;调用清除LCM子程序
 MOV A,#80H   ;向A送立即数80H设定显示地址为第一行第一列
 LCALL WRITE_COM  ;调用写指令到LCM子程序
 MOV DPTR,#LINE1  ;将第一行字符串的启始地址送如DPTR中
 LCALL DISP   ;调用显示字符串到LCM子程序
 MOV A,#0C0H   ;向A送立即数0C0H设定显示地址为第二行第一列
 LCALL WRITE_COM  ;调用写指令到LCM子程序
 MOV DPTR,#LINE2  ;将第二行字符串的启始地址送如DPTR中
 LCALL DISP   ;调用显示字符串到LCM子程序
 

 SJMP $  ;程序动态停机
					   
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:    ;写数据到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的内容压栈

DISP_LOOP: 
 CLR A   ;A清零
 MOVC A,@A+DPTR  ;查表将字符串内容送入A
 JZ END_DISP  ;若查到的内容为0则终止查表
 LCALL WRITE_DATA  ;调用写数据到LCM子程序
 INC DPTR   ;DPTR加1指向下一个对象
 SJMP DISP_LOOP  ;跳转到DISP_LOOP循环执行

END_DISP:
 POP ACC   ;弹出压栈内容至A
 RET

 END    ;程序结束

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -