📄 dot1335.asm
字号:
;********************DOT1335********************
;本程序实现液晶显示控制器SED1335在显示屏上显示或清除某一特定点。
;入口参数:点的X坐标在SOUH:SOU中,Y坐标在RLT中,W为非0表示显示该点,W=0表示清除该点。
;出口参数:无。
;占用资源:W,STATUS,RB0~RB2,RC,023H~026H,028H~02BH,2重堆栈。
;说 明:1.显示屏为320*240点阵。
; 2.指定点只能在图形显示区显示。
; 3.汉字的X,Y坐标均以象素点为单位。
; 4.用户要显示曲线,只需计算出曲线上每一点的坐标,循环调用本程序即可。
WWR EQU 0
RRD EQU 1
A0 EQU 2
IFNDEF DOT13351
#DEFINE DOT13351
INCLUDE "INIT1335.ASM"
;*************计算该点所对应的指针地址***********
DOT1335 MOVWF TEMP4
MOVLW 07H
ANDWF SOU,W
MOVWF TEMP3 ;TEMP3=SOUH:SOU MOD 8
BCF STATUS,C
RRF SOU,F
BCF STATUS,C
RRF SOU,F
BCF STATUS,C
RRF SOU,F
BTFSC SOUH,0
BSF SOU,5 ;SOU=SOUH:SOU % 8
DONE23 CLRF TEMP1 ;TEMP1暂存移出位
BCF STATUS,C
RLF RLT,F
RLF TEMP1,F
RLF RLT,F
RLF TEMP1,F
RLF RLT,F
RLF TEMP1,F
RLF RLT,F
RLF TEMP1,F
MOVF TEMP1,W
MOVWF TEMP2
MOVF RLT,W
RLF RLT,F
RLF TEMP1,F
ADDWF RLT,W
BTFSC STATUS,C
INCF TEMP1,F ;TEMP1:RLT=RLT*48
ADDWF SOU,F
BTFSC STATUS,C
INCF TEMP1,F
MOVF TEMP2,W
ADDWF TEMP1,F ;TEMP1:SOU=RLT*48+(SOUH:SOU%8)
MOVLW 46H ;CSRW
CALL CMDIN
MOVF SOU,W
CALL DATAIN ;P1
MOVF TEMP1,W
CALL DATAIN ;P2(光标指针设在TEMP1:SOU)
;****************将该点显示在屏幕上或从屏幕上清除**********************
MOVLW 80H
MOVWF TEMP2 ;TEMP2存放该点的具体位置
NEXT65 MOVF TEMP3,F
BTFSC STATUS,Z
GOTO DONE24
DECF TEMP3,F
BCF STATUS,C
RRF TEMP2,F ;得到点的具体位置
GOTO NEXT65
DONE24 MOVLW 43H
CALL CMDIN
CALL DATAOUT ;读取该点所在的存储单元的值
MOVF TEMP4,F
BTFSS STATUS,Z ;显示还是清除?
GOTO NCLR
COMF TEMP2,F ;清除
ANDWF TEMP2,F ;将该点清除,同时保护其他点
GOTO $+2
NCLR IORWF TEMP2,F ;将该点显示,同时保护其他点
MOVLW 46H ;CSRW
CALL CMDIN
MOVF SOU,W
CALL DATAIN
MOVF TEMP1,W
CALL DATAIN ;重新设置光标指针
MOVLW 42H ;MWRITE
CALL CMDIN
MOVF TEMP2,W
CALL DATAIN ;写入该字节数据
RETURN
ENDIF
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -