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

📄 cusor.asm

📁 详细介绍了C语言开发DSP嵌入式系统
💻 ASM
字号:
;OCM12864模块测试程序**************************
;完成时间2008.11.28
;制作人:hdzhangx
;**********************************************
D_I	EQU	P2.0				;Data or Instrument Select,H:写数据,L:写指令
R_W	EQU	P2.1				;Write or Read,H:read,L:write
E	EQU	P2.7				;读写使能
CS1	EQU	P2.2				;CS1=H,选择左半屏
CS2	EQU	P2.3
				                ;CS2=H,选择右半屏
RESET	EQU	P2.4				;Lcm reset,低有效

DISP_X	EQU	30H
DISP_Y	EQU	31H
DISP_Z	EQU	32H
LONG	EQU	33H
WIDE	EQU	34H
DATA1_WR	EQU	35H
DATA2_WR	EQU	36H
COUNTER1	EQU	37H
COUNTER2	EQU	38H
COUNTER3	EQU	39H
;**********************************************
		ORG	0000H
		AJMP	MAIN
		ORG	0100H
MAIN:		MOV	SP,#5FH
		CLR	RESET
		NOP
		NOP
		NOP
		SETB	RESET
;*************光标位置*************************
                SETB	CS1
		setb	CS2
                MOV	DISP_Z,#0C0H
		MOV	DISP_X,#0B8H
		MOV	DISP_Y,#40H
		MOV	LONG,#08H
		MOV	WIDE,#02H
                MOV	DPTR,#cusortabk
                lcall   cusor_disp
                lcall   delay2
                ;CLR	RESET
		;lcall   delay2
		;SETB	RESET
                MOV	DISP_Z,#0C0H
		MOV	DISP_X,#0B8H
		MOV	DISP_Y,#40H
		MOV	LONG,#08H
		MOV	WIDE,#02H
                MOV	DPTR,#cusortabw
                lcall   cusor_disp
                lcall   delay2
                lcall   delay2
                lcall   delay2


                ljmp main
;---------------------------写光标---------------------------
cusor_DISP:	LCALL	DISP			;显示LONGxWIDE大小的图形,本例为光标
		MOV	COUNTER1,WIDE
cusor_DISP1:	LCALL	WR_ZB
		MOV	COUNTER2,LONG
cusor_DISP2:	CLR	A
		MOVC	A,@A+DPTR
		LCALL	WR_DATA
		INC	DPTR
		DJNZ	COUNTER2,cusor_DISP2
		INC	DISP_X
		DJNZ	COUNTER1,cusor_DISP1
		RET


;**************************************************************
WR_ZB:		MOV	A,DISP_X                 ;写坐标
		LCALL	WR_INT
		MOV	A,DISP_Z
		LCALL	WR_INT
		MOV	A,DISP_Y
		LCALL	WR_INT
		RET
;----------------------------------------------
DISP:		MOV	A,#3EH
		LCALL	WR_INT
		MOV	A,#3FH
		LCALL	WR_INT
		RET
;**********************************************
WR_INT:		LCALL	CHE_BUSY		;WRITE	INSTRUCTION
		CLR	D_I
		CLR	R_W
		MOV	P0,A
		NOP
		SETB	E
		NOP
		NOP
		CLR	E
		RET
;----------------------------------------------
WR_DATA:	LCALL	CHE_BUSY		;WRITE	DATA
		SETB	D_I
		CLR	R_W
		MOV	P0,A
		NOP
		SETB	E
		NOP
		NOP
		CLR	E
		RET
;----------------------------------------------
CHE_BUSY:	CLR	D_I			;CHECK	STATIU
		SETB	R_W
		ANL	p0,#0B0H
		ORL	p0,#80H
		NOP
		SETB	E
		JB	p0.7,$
		JB	p0.4,$
		CLR	E
		RET
;**********************************************
DELAY1:		MOV	COUNTER1,#0FH
DEL11:		MOV	COUNTER2,#0FFH
DEL12:		MOV	COUNTER3,#0FFH
DEL13:		DJNZ	COUNTER3,DEL13
		DJNZ	COUNTER2,DEL12
		DJNZ	COUNTER1,DEL11
		RET
DELAY2:		MOV	COUNTER1,#04H
DEL21:		MOV	COUNTER2,#23H
DEL22:		DJNZ	COUNTER2,DEL22
		DJNZ	COUNTER1,DEL21
		RET
;黑光标
cusortabk:
db       0ffh,0ffh,0ffh,0ffh,0ffh,0ffh,0ffh,0ffh,0ffh,0ffh,0ffh,0ffh,0ffh,0ffh,0ffh,0ffh
db       0ffh,0ffh,0ffh,0ffh,0ffh,0ffh,0ffh,0ffh,0ffh,0ffh,0ffh,0ffh,0ffh,0ffh,0ffh,0ffh
;白光标
cusortabw:
db       00h,00h,00h,00h,00h,00h,00h,00h,00h,00h,00h,00h,00h,00h,00h,00h
db       00h,00h,00h,00h,00h,00h,00h,00h,00h,00h,00h,00h,00h,00h,00h,00h

⌨️ 快捷键说明

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