📄 1602程序asm.txt
字号:
RS BIT P1.0
RW BIT P1.1
E BIT P1.2
ORG 0000H
AJMP START
ORG 000BH
AJMP INSE
ORG 0100H ;程序地址
START: MOV TMOD,#00H ;设置计时/计数模式
MOV TL0,#00H ;#00H-->计时0低位
MOV TH0,#00H ;#00H-->计时0高位
SETB EA ;开中断
SETB ET0 ;中断使能
SETB TR0 ;计时0开绐
MOV 50H,#32H ;#32H-->50H
MOV SP,#60H ;#60h-->SP 地址指针
ACALL INIT ;调 INIT 子程序 ( LCD 模式设置)
ACALL QLCD ;调清屏子程序
MOV A,#80H ;#80H-->A (设LCD地址第一行第一列)
ACALL WIR ;调写IR子程序
MOV DPTR,#L1 ;#L1-->DPTR
ACALL PWDR ;调批量写DR子程序
MOV A,#0C0H ;#0C0H-->A (设LCD地址第二行第一列)
ACALL WIR ;调写 IR 子程序
MOV DPTR,#L2 ;#L2-->DPTR
ACALL PWDR ;调批量写DR子程序
LOOP: AJMP LOOP ;转LOOP
INSE: MOV TL0,#00H ;#00H-->计时0低位
MOV TH0,#00H ;#00H-->计时0高位
DJNZ 50H,INSE0 ;50H-1 不等于0转INSE0
MOV 50H,#32H ;#32H-->50H
INSE0: RETI ;中断返回
INIT: MOV A,#38H ;#38H-->A (使用8Bits汇流排,显示2行5*7字符)
LCALL WIR ;调写IR子程序
MOV A,#0EH ;#0EH-->A (显示开,光标开,光标闪烁)
LCALL WIR ;调写IR子程序
MOV A,#06H ;#06H-->A (字符不动,光标自动右移一格)
LCALL WIR ;调写IR子程序
RET ;返回
CKLCD: PUSH Acc ;Acc进栈
CK00: CLR RS ;RS 清 0
SETB RW ;RW 置 1
CLR E ;E 清 0
SETB E ;E 置 1
MOV A,P0 ;P0-->A
CLR E ;E 清 0
JB Acc.7,CK00 ;Acc.7=1 转 CK00
POP Acc ;Acc 出栈
ACALL STS00 ;调延时子程序 STS00
RET ;返回
WIR: ACALL CKLCD ;调查空闲子程序
CLR E ;E 清 0
CLR RS ;RS 清 0
CLR RW ;RW 清 0
SETB E ;E 置 1
MOV P0,A ;A-->P0
CLR E ;E 清 0
RET ;返回
WDR: ACALL CKLCD ;调查空闲子程序
CLR E ;E 清 0
SETB RS ;RS 置 1
CLR RW ;RW 清 0
SETB E ;E 置 1
MOV P0,A ;A-->P0
CLR E ;E 清 0
RET ;返回
STS00: MOV 52H,#05H ;#05H-->52H
STS001: MOV 51H,#0F8H ;#0F8H-->51H
DJNZ 51H,$ ;51H-1不等于0转再-1
DJNZ 52H,STS001 ;51H-1不等于0转STS001
RET ;返回
QLCD: MOV A,#01H ;#01H-->A
ACALL WIR ;调写IR子程序
RET ;返回
PWDR: PUSH Acc ;Acc进栈
PWDR1: CLR A ;A 清 0
MOVC A,@A+DPTR ;A+DPTR-->A
JZ PEND ;A=0 转 PEND
ACALL WDR ;调写DR子程序
INC DPTR ;DPTR+1
AJMP PWDR1 ;转 PWDR1
PEND: POP Acc ;Acc 出栈
RET ;返回
L1: DB 20H,4EH,61H,74H,69H,65H,62H,20H,45H,6CH,65H,63H,74H,72H,6FH,6EH,00H
L2: DB 7EH,6EH,61H,74H,69H,65H,6DH,40H,32H,31H,63H,6EH,2EH,63H,6FH,6DH,00H
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -