📄 exa.asm
字号:
;功能简介
;Mini51板lcd1602字符显示
;作者:田开坤
;时间:2008.04.30
;/******LCD1602接口定义*******/
LCD_CW EQU 0FCEBH ;该地址由Mini51板硬件确定
LCD_DW EQU 0FDEBH ;该地址由Mini51板硬件确定
LCD_CR EQU 0FEEBH ;该地址由Mini51板硬件确定
LCD_DR EQU 0FFEBH ;该地址由Mini51板硬件确定
LINE1 EQU 00H ;LCD1602第一行地址
LINE2 EQU 40H ;LCD1602第二行地址
ORG 0000H
AJMP START
ORG 0030H ;30H以前的空间被中断占用,主程序一般从30H开始
START: MOV SP,#60H ;设置堆栈指针
MOV DPTR,#LCD_CW
MOV A,#0CH
MOVX @DPTR,A ;LCD初始化
ACALL BUSY
MOV DPTR,#LCD_CW
MOV A,#38H
MOVX @DPTR,A ;LCD显示
;写LCD第一行
;****************************************
ACALL BUSY
MOV DPTR,#LCD_CW
MOV A,#(80H+LINE1)
MOVX @DPTR,A
MOV R6,#16
MOV R7,#0
LOOP: ACALL BUSY
MOV A,R7
MOV DPTR,#CHAR_STR
MOVC A,@A+DPTR
MOV DPTR,#LCD_DW
MOVX @DPTR,A
INC R7
DJNZ R6,LOOP
;****************************************
;写LCD第二行
;****************************************
ACALL BUSY
MOV DPTR,#LCD_CW
MOV A,#(80H+LINE2)
MOVX @DPTR,A
MOV R6,#16
MOV R7,#0
LOOP0: ACALL BUSY
MOV A,R7
MOV DPTR,#CHAR_STR+16
MOVC A,@A+DPTR
MOV DPTR,#LCD_DW
MOVX @DPTR,A
INC R7
DJNZ R6,LOOP0
;**************************************
SJMP $ ;结束,原地踏步
;LCD忙检测
;*************************************
BUSY: MOV DPTR,#LCD_CR
BUSY?: MOVX A,@DPTR
ANL A,#80H
JNZ BUSY?
RET
;*************************************
CHAR_STR:
DB "welcometostuelab"
DB "0123456789ABCDEF"
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -