源程序》 ;************************************************************************ ;名称: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
发帖者IP:218.73.96.194 发表时间:2003年8月5日18:10:04 |