📄 两行显示.asm
字号:
DATDB EQU P0
TEMPL EQU 3EH
TEMPH EQU 3FH
ALARMHL EQU 40H
ALARMHH EQU 41H
ALARMLL EQU 42H
ALARMLH EQU 43H
MODE1 BIT 7EH
MODE2 BIT 7DH
ONALARM BIT 7CH
ALARMM BIT P3.7
K1 BIT P2.2
K2 BIT P2.1
K3 BIT P2.0
RS BIT P1.0
RW BIT P1.1
E BIT P1.2
FLAG BIT 00H
DAT BIT P3.6
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
ORG 00H
JMP DESPLAY
ORG 000BH
AJMP INSERS
RETI
ORG 50H
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
DESPLAY:
MOV TMOD,#0
MOV TL0,#0
MOV TH0,#0
SETB EA
SETB ET0
SETB TR0
MOV R5,#50
CLR P3.2
SETB P3.1
MOV SP,#60H
DISPLAY1:
CALL INITIAL;启动显示
CALL CLS;清屏
MOV A,#10000000B
CALL WRITE
MOV DPTR,#LINE1;指向显示内容
mov R3,#0
LCALL PRSTRING;查显示内容
MOV A,#11000000B
CALL WRITE
MOV DPTR,#LINE2
MOV R3,2BH
LCALL PRSTRING1;查显示内容
MOV A,#11000001B
CALL WRITE
MOV DPTR,#LINE2
MOV R3,2AH
LCALL PRSTRING1;查显示内容
MOV A,#11000010B
CALL WRITE
MOV DPTR,#LINE2
MOV R3,29H
LCALL PRSTRING1;查显示内容
MOV A,#11000011B
CALL WRITE
MOV DPTR,#LINE2
MOV R3,28H
LCALL PRSTRING1;查显示内容
LOOP: RETI
LINE1: DB 'temp:',00H
LINE2: DB '0','1','2','3','4','5','6','7','8','9',00H
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
INSERS: MOV TH0,#0
MOV TL0,#0
DJNZ R5,NO
MOV R5,#50
CPL P3.2
CPL P3.1
NO: RETI
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; 启动LCM子程序
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
INITIAL:MOV A,#00111000B;设置为8BIT汇流,显示两行并使用5*7的字型
CALL WRITE
MOV A,#00001110B;设置为显示器要显示,光标要显示并闪烁
CALL WRITE
MOV A,#00000110B;设置为每一次资料输入后光标自动向右移一格
CALL WRITE
RET
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; 检测显示器是否忙
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
CHECKBUSY:
PUSH ACC
CHECKBUSYLOOP:
CLR E
SETB RW
CLR RS
SETB E
MOV A,DATDB
CLR E
JB ACC.7,CHECKBUSYLOOP;BF=1时忙,直到检测到BF=0时才跳出循环
POP ACC
CALL DELAY
RET
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; 写寄存器子程序
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
WRITE: CALL CHECKBUSY
CLR E
CLR RW
CLR RS
SETB E
MOV DATDB,A
CLR E
RET
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; 写显示内容字程序
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
WRITELCDDATA:
CALL CHECKBUSY
CLR E
CLR RW
SETB RS
SETB E
MOV DATDB,A
CLR E
RET
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
CLS: MOV A,#01H;清显示屏
CALL WRITE
RET
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
PRSTRING: PUSH ACC
PRLOOP: CLR A
mov a,r3
MOVC A,@A+DPTR;查显示内容表
JZ EPR;判断是否查到结束标志位00H
CALL WRITELCDDATA
INC DPTR
JMP PRLOOP
EPR: POP ACC
RET
PRSTRING1: PUSH ACC
PRLOOP1: CLR A
mov a,r3
MOVC A,@A+DPTR;查显示内容表
CALL WRITELCDDATA
EPR1: POP ACC
RET
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
DELAY: MOV R6,#5
D1: MOV R7,#248
DJNZ R7,$
DJNZ R6,D1
RET
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
DL10MS: LCALL DELAY
LCALL DELAY
LCALL DELAY
LCALL DELAY
LCALL DELAY
LCALL DELAY
LCALL DELAY
LCALL DELAY
LCALL DELAY
LCALL DELAY
RET
DL50MS: LCALL DL10MS
LCALL DL10MS
LCALL DL10MS
LCALL DL10MS
LCALL DL10MS
RET
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -