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

📄 lcdshow.asm

📁 51单片机rtos源代码
💻 ASM
📖 第 1 页 / 共 3 页
字号:
EXTRN	XDATA(FIRENUM,FAULTNUM,STARTNUM)
EXTRN	DATA(MONTH,DAY,HOUR,MIN,SEC)
EXTRN	BIT(NEGS)
PUBLIC	_HLINE,SHOWSTARTIMG,_DISPNOEVENT,_OUTEVENT,CLEAR,INTLCD,OUTTIME,OUTSEC,_OUTTNUM,_OUTCUR
PUBLIC	ZKPB

WDT	EQU	P1.6

WCAD1	EQU	0D000H
RSAD1	EQU	0D002H
WDAD1	EQU	0D001H
RDAD1	EQU	0D003H
WCAD2	EQU	0D800H
RSAD2	EQU	0D802H
WDAD2	EQU	0D801H
RDAD2	EQU	0D803H
WCAD3	EQU	0E000H
RSAD3	EQU	0E002H
WDAD3	EQU	0E001H
RDAD3	EQU	0E003H

HZBASE	EQU	08000H
ZKPAGE	EQU	0C000H

LCDCODE	SEGMENT	CODE
LCDDATA	SEGMENT	DATA
SBUFSEG SEGMENT XDATA

RSEG	LCDDATA
COM:	DS	1
DAT:	DS	1
ZKPB:	DS	1
TMP1:	DS	1
TMP2:	DS	1
TMP3:	DS	1
TMP4:	DS	1

RSEG	SBUFSEG
STRBUF:	DS	25



RSEG	LCDCODE

PRL0:	CPL	WDT		;写指今代码子程序(左)
	PUSH	DPL
	PUSH	DPH
	MOV	DPTR,#RSAD1
PRL01:	MOVX	A,@DPTR
	JB	ACC.7,PRL01
	MOV	DPTR,#WCAD1
	MOV	A,COM
	MOVX	@DPTR,A
	POP	DPH
	POP	DPL
	RET

PRL1:	CPL	WDT		;写显示数据子程序(左)
	PUSH	DPL
	PUSH	DPH
	MOV	DPTR,#RSAD1
PRL11:	MOVX	A,@DPTR
	JB	ACC.7,PRL11
	MOV	DPTR,#WDAD1
	MOV	A,DAT
	JNB	NEGS,PRL12
	CPL	A
PRL12:	MOVX	@DPTR,A
	POP	DPH
	POP	DPL
	RET

PRL2:	CPL	WDT		;读显示数据子程序(左)
	PUSH	DPL
	PUSH	DPH
	MOV	DPTR,#RSAD1
PRL21:	MOVX	A,@DPTR
	JB	ACC.7,PRL21
	MOV	DPTR,#RDAD1
	MOVX	A,@DPTR
	MOV	A,DAT
	POP	DPH
	POP	DPL
	RET


PRM0:	CPL	WDT		;写指令代码子程序(中)
	PUSH	DPL
	PUSH	DPH
	MOV	DPTR,#RSAD2
PRM01:	MOVX	A,@DPTR
	JB	ACC.7,PRM01
	MOV	DPTR,#WCAD2
	MOV	A,COM
	MOVX	@DPTR,A
	POP	DPH
	POP	DPL
	RET

PRM1:	CPL	WDT		;写显示数据子程序(中)
	PUSH	DPL
	PUSH	DPH
	MOV	DPTR,#RSAD2
PRM11:	MOVX	A,@DPTR
	JB	ACC.7,PRM11
	MOV	DPTR,#WDAD2
	MOV	A,DAT
	JNB	NEGS,PRM12
	CPL	A
PRM12:	MOVX	@DPTR,A
	POP	DPH
	POP	DPL
	RET

PRM2:	CPL	WDT		;写显示数据子程序(中)
	PUSH	DPL
	PUSH	DPH
	MOV	DPTR,#RSAD2
PRM21:	MOVX	A,@DPTR
	JB	ACC.7,PRM21
	MOV	DPTR,#RDAD2
	MOVX	A,@DPTR
	MOV	A,DAT
	POP	DPH
	POP	DPL
	RET

PRR0:	CPL	WDT		;写指令代码子程序(右)
	PUSH	DPL
	PUSH	DPH
	MOV	DPTR,#RSAD3
PRR01:	MOVX	A,@DPTR
	JB	ACC.7,PRR01
	MOV	DPTR,#WCAD3
	MOV	A,COM
	MOVX	@DPTR,A
	POP	DPH
	POP	DPL
	RET

PRR1:	CPL	WDT		;写显示数据子程序(右)
	PUSH	DPL
	PUSH	DPH
	MOV	DPTR,#RSAD3
PRR11:	MOVX	A,@DPTR
	JB	ACC.7,PRR11
	MOV	DPTR,#WDAD3
	MOV	A,DAT
	JNB	NEGS,PRR12
	CPL	A
PRR12:	MOVX	@DPTR,A
	POP	DPH
	POP	DPL
	RET

PRR2:	CPL	WDT		;读显示数据子程序(右)
	PUSH	DPL
	PUSH	DPH
	MOV	DPTR,#RSAD3
PRR21:	MOVX	A,@DPTR
	JB	ACC.7,PRR21
	MOV	DPTR,#RDAD3
	MOVX	A,@DPTR
	MOV	A,DAT
	POP	DPH
	POP	DPL
	RET

INTLCD:	CPL	WDT		;初始化MGLS19264
	MOV	COM,#0C0H
	LCALL	PRL0
	LCALL	PRM0
	LCALL	PRR0
	MOV	COM,#3FH
	LCALL	PRL0
	LCALL	PRM0
	LCALL	PRR0
	RET

CLEAR:	MOV	R4,#00H		;清显示RAM子程序
CLEAR1:	MOV	A,R4
	ORL	A,#0B8H
	MOV	COM,A
        MOV     A,R4
        CJNE    A,#2,CLEAR0
CLEAR0: JNC     CLEAR00
        SETB    NEGS
        AJMP    CLEAR000
CLEAR00:CLR     NEGS
CLEAR000:
	LCALL	PRL0
	LCALL	PRM0
	LCALL	PRR0
	MOV	COM,#40H
	LCALL	PRL0
	LCALL	PRM0
	LCALL	PRR0
	MOV	R3,#40H
CLEAR2:	MOV	DAT,#00H
	LCALL	PRL1
	LCALL	PRM1
	LCALL	PRR1
	CPL	WDT
	DJNZ	R3,CLEAR2
	INC	R4
	CPL	WDT
	CJNE	R4,#08H,CLEAR1
	RET

;画一条水平直线
;入口:	R6R7 = 起点X、Y坐标,R4R5 = 终点X、Y坐标,X:0~191,Y:0~63
_HLINE:	CPL	WDT
	INC	R4
	MOV	A,R7
	MOV	B,#8
	DIV	AB
	PUSH	ACC
	MOV	A,#80H
	MOV	R0,B
	INC	R0
HLINE0:	RL	A
	CPL	WDT
	DJNZ	R0,HLINE0
	MOV	B,A
	POP	ACC
	ORL	A,#0B8H
	MOV	COM,A
	LCALL	PRL0
	LCALL	PRM0
	LCALL	PRR0
HLINE4:	MOV	A,R6
	PUSH	ACC
	ANL	A,#3FH
	ORL	A,#40H
	MOV	COM,A
	POP	ACC
	JNB	ACC.7,HLINE1
	LCALL	PRR0
	LCALL	PRR2
	MOV	A,DAT
	ORL	A,B
	MOV	DAT,A
	LCALL	PRR1
	AJMP	HLINE3
HLINE1:	JNB	ACC.6,HLINE2
	LCALL	PRM0
	LCALL	PRM2
	MOV	A,DAT
	ORL	A,B
	MOV	DAT,A
	LCALL	PRM1
	AJMP	HLINE3
HLINE2:	LCALL	PRL0
	LCALL	PRL2
	MOV	A,DAT
	ORL	A,B
	MOV	DAT,A
	LCALL	PRL1
HLINE3:	INC	R6
	MOV	A,R6
	MOV	B,R4
	CJNE	A,B,HLINE4
	RET

;显示ASCII字符串
;入口:DPTR = 字符串首地址 R2 = 字符个数 R6 = 显示起点列号  R7 = 显示起点页号
OUTSTR:	CPL	WDT
	MOV	A,R7
	PUSH	ACC
	MOV	A,#0
	MOVC	A,@A+DPTR
	INC	DPTR
	PUSH	DPH
	PUSH	DPL
        CLR     C
        MOV     B,#20H
        SUBB    A,B
	MOV	B,#16
	MUL	AB
	MOV	DPTR,#CHTAB
	ADD	A,DPL
	MOV	DPL,A
	MOV	A,B
	ADDC	A,DPH
	MOV	DPH,A
	LCALL	PCHAR
	POP	DPL
	POP	DPH
	POP	ACC
	MOV	R7,A
	DJNZ	R2,OUTSTR
	RET

;显示汉字字符串
;入口:DPTR = 字符串首地址 R2 = 汉字数 R6 = 显示起点列号  R7 = 显示起点页号
OUTHZS:	CPL	WDT
	MOV	A,R7
	PUSH	ACC
	MOV	A,#0
	MOVC	A,@A+DPTR
	CLR	C
	SUBB	A,#0A0H
	MOV	B,A
	INC	DPTR
	MOV	A,#0
	MOVC	A,@A+DPTR
	CLR	C
	INC	DPTR
	PUSH	DPH
	PUSH	DPL
	SUBB	A,#0A0H
	LCALL	GETHZADD
	LCALL	PWZ
	POP	DPL
	POP	DPH
	POP	ACC
	MOV	R7,A
	DJNZ	R2,OUTHZS
	RET

;计算汉字字模首地址
;入口: B = 区号 A = 位号
;出口: DPTR = 地址,页号有郊
GETHZADD:
	CPL	WDT
	PUSH	ACC
	MOV	A,B
	DEC	A
	MOV	B,#94
	MUL	AB
	MOV	R1,B
	MOV	R0,A
	POP	ACC
	DEC	ACC
	ADD	A,R0
	MOV	R0,A
	MOV	A,R1
	ADDC	A,#0
	MOV	R1,A
	PUSH	ACC
	MOV	B,#32
	MOV	A,R0
	MUL	AB
	MOV	R1,B
	MOV	R0,A
	POP	ACC
	MOV	B,#32
	MUL	AB
	XCH	A,B
	PUSH	ACC
	XCH	A,B
	ADD	A,R1
	MOV	R1,A
	POP	ACC
	ADDC	A,#0
	ANL	A,#03H
	RL	A
	RL	A
	MOV	B,A
	MOV	A,R1
	MOV	C,ACC.7
	MOV	0F1H,C
	MOV	C,ACC.6
	MOV	0F0H,C
	ANL	A,#3FH
	ORL	A,#80H
	MOV	R1,A
	MOV	DPTR,#ZKPAGE
	MOVX	A,@DPTR
	ANL	A,#0FH
	MOV	ZKPB,A
	MOV	A,B
	SWAP	A
	ORL	A,ZKPB
	MOVX	@DPTR,A
	MOV	DPH,R1
	MOV	DPL,R0
	RET


;本子程序为显示一个字符
;入口;R6 = 列号,R7 = 页号,DPTR = 汉字字模首地址,R6:0~191,R7:0~7
PCHAR:	CPL	WDT
	MOV	A,R6		;R6中为列号
	MOV	R5,A
	MOV	R3,#2
PCHAR4:	MOV	R4,#8
	MOV	A,R5
	MOV	R6,A
	MOV	A,R7		;R7中为页号
	ORL	A,#0B8H
	MOV	COM,A
	LCALL	PRL0
	LCALL	PRM0
	LCALL	PRR0
PCHAR0:	MOV	A,R6
	PUSH	ACC
	ANL	A,#3FH
	ORL	A,#40H
	MOV	COM,A
	POP	ACC
	JNB	ACC.7,PCHAR1
	LCALL	PRR0
	MOV	A,#0
	MOVC	A,@A+DPTR
	INC	DPTR
	INC	R6
	MOV	DAT,A
	LCALL	PRR1
	AJMP	PCHAR3
PCHAR1:	JNB	ACC.6,PCHAR2
	LCALL	PRM0
	MOV	A,#0
	MOVC	A,@A+DPTR
	INC	DPTR
	INC	R6
	MOV	DAT,A
	LCALL	PRM1
	AJMP	PCHAR3
PCHAR2:	LCALL	PRL0
	MOV	A,#0
	MOVC	A,@A+DPTR
	INC	DPTR
	INC	R6
	MOV	DAT,A
	LCALL 	PRL1
PCHAR3:	DJNZ	R4,PCHAR0
	INC	R7
	DJNZ	R3,PCHAR4
	RET

;本子程序为显示一个汉字
;入口;R6 = 列号,R7 = 页号,DPTR = 汉字字模首地址,页号须有郊;R6:0~191,R7:0~7
PWZ:	CPL	WDT
	MOV	A,R6		;R6中为列号
	MOV	R5,A
	MOV	R3,#2
PWZ4:	MOV	R4,#16
	MOV	A,R5
	MOV	R6,A
	MOV	A,R7		;R7中为页号
	ORL	A,#0B8H
	MOV	COM,A
	LCALL	PRL0
	LCALL	PRM0
	LCALL	PRR0
PWZ0:	MOV	A,R6
	PUSH	ACC
	ANL	A,#3FH
	ORL	A,#40H
	MOV	COM,A
	POP	ACC
	JNB	ACC.7,PWZ1
	LCALL	PRR0
	MOVX	A,@DPTR
	INC	DPTR
	INC	R6
	MOV	DAT,A
	LCALL	PRR1
	AJMP	PWZ3
PWZ1:	JNB	ACC.6,PWZ2
	LCALL	PRM0
	MOVX	A,@DPTR
	INC	DPTR
	INC	R6
	MOV	DAT,A
	LCALL	PRM1
	AJMP	PWZ3
PWZ2:	LCALL	PRL0
	MOVX	A,@DPTR
	INC	DPTR
	INC	R6
	MOV	DAT,A
	LCALL 	PRL1
PWZ3:	DJNZ	R4,PWZ0
	INC	R7
	DJNZ	R3,PWZ4
	RET

;显示图片
;入口:R6 = 起点列号,R7 = 起点页号,R3 = 终点列号,R4 = 终点页号
SHOWIMG:CPL	WDT
	INC	R3
;	INC	R4
SHOWIMG4:
	MOV	A,R6
	PUSH	ACC
	MOV	A,R7
	ORL	A,#0B8H
	MOV	COM,A
	LCALL	PRL0
	LCALL	PRM0
	LCALL	PRR0
SHOWIMG3:
	MOV	A,R6
	PUSH	ACC
	ANL	A,#3FH
	ORL	A,#40H
	MOV	COM,A
	POP	ACC
	JNB	ACC.7,SHOWIMG0
	LCALL	PRR0
        MOV     A,#0
	MOVC	A,@A+DPTR
	MOV	DAT,A
	LCALL	PRR1
	INC	DPTR
	INC	R6
	AJMP	SHOWIMG2
SHOWIMG0:
	JNB	ACC.6,SHOWIMG1
	LCALL	PRM0
        MOV     A,#0
	MOVC	A,@A+DPTR
	MOV	DAT,A
	LCALL	PRM1
	INC	DPTR
	INC	R6
	AJMP	SHOWIMG2
SHOWIMG1:
	LCALL	PRL0
        MOV     A,#0
	MOVC	A,@A+DPTR
	MOV	DAT,A
	LCALL	PRL1
	INC	DPTR
	INC	R6
SHOWIMG2:
	MOV	A,R6
	MOV	B,R3
	CPL	WDT
	CJNE	A,B,SHOWIMG3
	POP	ACC
	MOV	R6,A
	INC	R7
	MOV	A,R7
	MOV	B,R4
	CPL	WDT
	CJNE	A,B,SHOWIMG4
	RET

SHOWSTARTIMG:
	CPL	WDT
	MOV	R2,#14
	MOV	R6,#80
	MOV	DPTR,#TIME
	MOV	R7,#0
        SETB    NEGS

⌨️ 快捷键说明

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