📄 xiwenzi.asm
字号:
WR BIT P2.4 ;DEFINE LCM WRITE PIN
RD BIT P2.5 ;DEFINE LCM READ PIN
CE BIT P2.7 ;DEFINE LCM CHIP ENABLE PIN
CD BIT P2.3 ;DEFINE LCM COMMAND/DATA PIN
FS BIT P2.2 ;DEFINE LCM WORD PIN
RST BIT P3.3 ;DEFINE LCM RESET PIN
SLK BIT P3.4
DB0 BIT P0.0 ;DEFINE LCM DATA BUS PIN
DB1 BIT P0.1
DB2 BIT P0.2
DB3 BIT P0.3
DB4 BIT P0.4
DB5 BIT P0.5
DB6 BIT P0.6
DB7 BIT P0.7
COUNT DATA 30H
;CGTAB DATA 31H
O_X DATA 32H
O_Y DATA 33H
CODE1 DATA 34H
CODE2 DATA 35H
MAIN:
;//=========================
;//初始化
;//=========================
CLR EA
MOV IE,#00H
MOV IP,#00H
MOV TCON, #00H ;//清零
MOV SP,#80H ;//堆栈指针
CLR RS0
CLR RS1 ;//(00~07)
MOV R0,#00H
INTIAL: MOV @R0,#00H
INC R0
CJNE R0,#0FFH,INTIAL
MOV @R0,#00H
MOV R0,#00H ;//RAM清零
SETB EA
WAIT: CLR RST ;RESET
NOP
SETB RST
CLR FS ;SET FS=0
SETB SLK
LCALL INTIAL1
LCALL CLEAR
MOV CODE2,#012H
MOV O_X,#02H
MOV O_Y,#03H
LCALL WRI_XWC
LCALL DELAY
LCALL DELAY
JMP WAIT
;//==================================================
;TEXT HOME ADDRESS SET
INTIAL1: MOV R2,#00H ;//设置文本显示区首地ZHI
MOV R3,#00H
MOV R4,#40H
LCALL PR1
;TEXT AREA SET
MOV R2,#20H ;//设置文本显示区宽度
MOV R3,#00H ;//即一行显示所占字节宽度
MOV R4,#41H
LCALL PR1
;GRAPHIC HOME ADDRESS SET
MOV R2,#00H ;//设置徒刑显示区域首地址
MOV R3,#08H ;//或为文本属性区域宽度
MOV R4,#42H
LCALL PR1
;GRAPHIC AREA SET
MOV R2,#20H ;//设置图形显示区域宽度
MOV R3,#00H ;//或为文本属性区域宽度
MOV R4,#43H
LCALL PR1
MOV R4,#80H ;//显示方式设置,"OR" MODE
LCALL PR12
MOV R4,#0A7H ;//光标形状,正方形
LCALL PR12
MOV R4,#9FH ;//显示开关设置,开文本图形显示
LCALL PR12
RET
;//==================================================
DELAY: MOV 40H,#0FFH ;DELAY TIME
DELAY1: MOV 41H,#0FFH
DELAY2: DJNZ 41H,DELAY2
DJNZ 40H,DELAY1
RET
;//==================================================
;READ BUSY_SIGNAL
PR0: CLR CE ;SET CE=L
SETB CD ;SET CD=H
SETB WR ;SET WR=H
ORL P0,#0FFH
CLR RD ;SET RD=L
MOV A,P0
SETB RD ;SET RD=H
RET
;READ BUSY_SIGNAL ,OK OR NOT ?
PR01: CALL PR0
JNB ACC.0,PR01 ;STA0 OK?
JNB ACC.1,PR01 ;STA1 OK?
RET
PR02: CALL PR0
JNB ACC.2,PR03 ;STA2 OK?
RET
PR03: CALL PR0
JNB ACC.3,PR03 ;STA3 OK?
RET
PR06: CALL PR0
JB ACC.6,ERR
RET
ERR: LJMP PR06
RET
;SEND OUT INSTRUCTION AND DATA TO LCM
PR1: CALL PR01 ;DOUBLE BYTE PARAMETER INST. PORT
MOV A,R2
CALL PR14
PR11: CALL PR01 ;SINGLE BYTE PARAMETER INST. PORT
MOV A,R3
CALL PR14
PR12: CALL PR01 ;NO PARAMETER INST. PORT
MOV A,R4
JMP PR15
PR14: CLR CE ;//SET CE=L
CLR CD ;//SET CD=L
JMP PR16
PR15: CLR CE ;//SET CE=L
SETB CD ;//SET CD=H
PR16: SETB RD ;//SET RD=H
CLR WR ;//SET WR=L
MOV P0,A
SETB WR ;//SET WR=H
RET
;//==================================================
;//清屏
;//==================================================
CLEAR: MOV R2,#00H ;//设置显示存储器首地址
MOV R3,#00H
MOV R4,#24H
LCALL PR1
MOV R3,#00H ;//设置循环量
MOV R7,#20H
MOV R4,#0B0H ;//设置自动写命令
LCALL PR12
MOV R6,#0A2H
CLEAR1: LCALL PR03 ;//判断状态位S3
MOV A,#00H ;//清0
LCALL PR14
DJNZ R3,CLEAR1
DJNZ R7,CLEAR1
MOV R4,#0B2H ;//设置自动写结束命令
LCALL PR12
RET
;//====================================================
WRI_XWC:
MOV A,O_Y ;//
MOV B,#20H ;//
MUL AB
ADD A,O_X
MOV R2,A
MOV A,B
ADDC A,#00H
MOV R3,A
PUSH ACC ;//
MOV R4,#24H ;//
LCALL PR1
MOV R3,CODE2 ;//
MOV R4,#0C4H
LCALL PR11
POP ACC
RET
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -