📄 3.21.asm
字号:
RS BIT P1.7
RW BIT P1.6
E BIT P1.5
DB0_DB7 DATA P2
;********************************
ORG 00H
AJMP START
ORG 000BH
AJMP INSE
;********************************
ORG 50H
START: MOV TMOD,#0
MOV TL0,#0
MOV TH0,#0
SETB EA
SETB ET0
SETB TR0
MOV R5,#50
MOV SP,#60H
ACALL INIT
MOV A,#10000000B ;写入显示地址为第一行第一位。
ACALL Write
MOV A,#01000001B ;字母"A"的代码。
ACALL WriteDDR
LOOP: AJMP LOOP
;*******************************
INSE: MOV TL0,#0 ;中断服务子程序。
MOV TH0,#0
DJNZ R5,NO
MOV R5,#50
NO: RETI
;******************************
INIT:
MOV A,#00111000B ;使用8Bits汇流排,显示两行,使用5*7的字型。
LCALL Write
MOV A,#00001110B ;显示器开,光标开,光标闪烁。
LCALL Write
MOV A,#00000110B ;字符不动,光标自动右移一格。
LCALL Write
RET
;*******************************
CheckBusy: ;检查忙碌子程序。
PUSH ACC
CB_Loop: CLR RS
SETB RW
CLR E
SETB E
MOV A,DB0_DB7
CLR E
;CLR ACC.7
JB ACC.7,CB_Loop
POP ACC
ACALL DELAY
RET
;********************************
Write: ;写入IR寄存器子程序。
ACALL CheckBusy
CLR E
CLR RS
CLR RW
SETB E
MOV DB0_DB7,ACC
CLR E
RET
;********************************
WriteDDR: ;写入DR寄存器子程序。
ACALL CheckBusy
CLR E
SETB RS
CLR RW
SETB E
MOV DB0_DB7,ACC
CLR E
RET
;**********************************
DELAY: ;延时子程序。
MOV R6,#5
D1: MOV R7,#248
DJNZ R7,$
DJNZ R6,D1
RET
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -