源程序》
;************************************************************************
;名称:LCD12864
;作者:XUDENGKE
;版权:
;用途:直接访问方式驱动子程序
;程序功能:
;地址分配:
;所用资源:A11 = /CSB, A10 = /CSA, A9 = R/W, A8 = D/I
;备注:
;************************************************************************
COM EQU 20H ; 指令寄存器
DAT EQU 21H ; 数据寄存器
CWADD1 EQU 0000H ; 写指令代码地址(左)
CRADD1 EQU 0200H ; 读状态字地址(左)
DWADD1 EQU 0100H ; 写显示数据地址(左)
DRADD1 EQU 0300H ; 读显示数据地址(左)
CWADD2 EQU 0800H ; 写指令代码地址(中)
CRADD2 EQU 0A00H ; 读状态字地址(中)
DWADD2 EQU 0900H ; 写显示数据地址(中)
DRADD2 EQU 0B00H ; 读显示数据地址(中)
CWADD3 EQU 0400H ; 写指令代码地址(右)
CRADD3 EQU 0600H ; 读状态字地址(右)
DWADD3 EQU 0500H ; 写显示数据地址(右)
DRADD3 EQU 0700H ; 读显示数据地址(右)
;***************************************************左区驱动子程序
;===================================================
;函数名称:
;功能:写指令代码子程序(左)
;调用函数:
;入口参数:
;出口参数:
;影响资源:
;其他:
;===================================================
PRL0:
PUSH DPL ; 片选设置为"00"
PUSH DPH
MOV DPTR,#CRADD1 ; 设置读状态字地址
PRL01: MOVX A,@DPTR ; 读状态字
JB ACC.7,PRL01 ; 判"忙"标志为"0"否,否再读
MOV DPTR,#CWADD1 ; 设置写指令代码地址
MOV A,COM ; 取指令代码
MOVX @DPTR,A ; 写指令代码
POP DPH
POP DPL
RET
;===================================================
;函数名称:
;功能:写显示数据子程序(左)
;调用函数:
;入口参数:
;出口参数:
;影响资源:
;其他:
;===================================================
PRL1:
PUSH DPL ; 片选设置为"00"
PUSH DPH
MOV DPTR,#CRADD1 ; 设置读状态字地址
PRL11: MOVX A,@DPTR ; 读状态字
JB ACC.7,PRL11 ; 判"忙"标志为"0"否,否再读
MOV DPTR,#DWADD1 ; 设置写显示数据地址
MOV A,DAT ; 取数据
MOVX @DPTR,A ; 写数据
POP DPH
POP DPL
RET
;===================================================
;函数名称:
;功能:读显示数据子程序(左)
;调用函数:
;入口参数:
;出口参数:
;影响资源:
;其他:
;===================================================
PRL2:
PUSH DPL ; 片选设置为"00"
PUSH DPH
MOV DPTR,#CRADD1 ; 设置读状态字地址
PRL21: MOVX A,@DPTR ; 读状态字
JB ACC.7,PRL21 ; 判"忙"标志为"0"否,否再读
MOV DPTR,#DRADD1 ; 设置读显示数据地址
MOVX A,@DPTR ; 读数据
MOV DAT,A ; 存数据
POP DPH
POP DPL
RET
;**************************************************中区驱动子程序(12864的左区)
;===================================================
;函数名称:
;功能:写指令代码子程序(中)
;调用函数:
;入口参数:
;出口参数:
;影响资源:
;其他:
;===================================================
PRM0:
PUSH DPL ; 片选设置为"01"
PUSH DPH
MOV DPTR,#CRADD2 ; 设置读状态字地址
PRM01: MOVX A,@DPTR ; 读状态字
JB ACC.7,PRM01 ; 判"忙"标志为"0"否,否再读
MOV DPTR,#CWADD2 ; 设置写指令代码地址
MOV A,COM ; 取指令代码
MOVX @DPTR,A ; 写指令代码
POP DPH
POP DPL
RET
;===================================================
;函数名称:
;功能:写显示数据子程序(中)
;调用函数:
;入口参数:
;出口参数:
;影响资源:
;其他:
;===================================================
PRM1:
PUSH DPL ; 片选设置为"01"
PUSH DPH
MOV DPTR,#CRADD2 ; 设置读状态字地址
PRM11: MOVX A,@DPTR ; 读状态字
JB ACC.7,PRM11 ; 判"忙"标志为"0"否,否再读
MOV DPTR,#DWADD2 ; 设置写显示数据地址
MOV A,DAT ; 取数据
MOVX @DPTR,A ; 写数据
POP DPH
POP DPL
RET
;===================================================
;函数名称:
;功能:读显示数据子程序(中)
;调用函数:
;入口参数:
;出口参数:
;影响资源:
;其他:
;===================================================
PRM2:
PUSH DPL ; 片选设置为"01"
PUSH DPH
MOV DPTR,#CRADD2 ; 设置读状态字地址
PRM21: MOVX A,@DPTR ; 读状态字
JB ACC.7,PRM21 ; 判"忙"标志为"0"否,否再读
MOV DPTR,#DRADD2 ; 设置读显示数据地址
MOVX A,@DPTR ; 读数据
MOV DAT,A ; 存数据
POP DPH
POP DPL
RET
;**************************************************右区驱动子程序(12864的右区)
;===================================================
;函数名称:
;功能:写指令代码子程序(右)
;调用函数:
;入口参数:
;出口参数:
;影响资源:
;其他:
;===================================================
PRR0:
PUSH DPL ; 片选设置为"10"
PUSH DPH
MOV DPTR,#CRADD3 ; 设置读状态字地址
PRR01: MOVX A,@DPTR ; 读状态字
JB ACC.7,PRR01 ; 判"忙"标志为"0"否,否再读
MOV DPTR,#CWADD3 ; 设置写指令代码地址
MOV A,COM ; 取指令代码
MOVX @DPTR,A ; 写指令代码
POP DPH
POP DPL
RET
;===================================================
;函数名称:
;功能:写显示数据子程序(右)
;调用函数:
;入口参数:
;出口参数:
;影响资源:
;其他:
;===================================================
PRR1:
PUSH DPL ; 片选设置为"10"
PUSH DPH
MOV DPTR,#CRADD3 ; 设置读状态字地址
PRR11: MOVX A,@DPTR ; 读状态字
JB ACC.7,PRR11 ; 判"忙"标志为"0"否,否再读
MOV DPTR,#DWADD3 ; 设置写显示数据地址
MOV A,DAT ; 取数据
MOVX @DPTR,A ; 写数据
POP DPH
POP DPL
RET
;===================================================
;函数名称:
;功能:读显示数据子程序(右)
;调用函数:
;入口参数:
;出口参数:
;影响资源:
;其他:
;===================================================
PRR2:
PUSH DPL ; 片选设置为"10"
PUSH DPH
MOV DPTR,#CRADD3 ; 设置读状态字地址
PRR21: MOVX A,@DPTR ; 读状态字
JB ACC.7,PRR21 ; 判"忙"标志为"0"否,否再读
MOV DPTR,#DRADD3 ; 设置读显示数据地址
MOVX A,@DPTR ; 读数据
MOV DAT,A ; 存数据
POP DPH
POP DPL
RET
发表时间:2003年8月5日18:10:04