📄 cusor.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 + -