📄 line1335.asm
字号:
;********************LINE1335********************
;本程序实现液晶显示控制器SED1335在显示屏上任意两点之间显示一条直线。
;入口参数:第一点的坐标为(SOU:SOUH)中,另一点的坐标为(RLT,RLTH)。
;出口参数:无。
;占用资源:W,STATUS,RB0~RB2,RC,023H~026H,028H~02BH,2重堆栈。
;说 明:1.显示屏为320*240点阵。
; 2.直线只能在图形显示区显示。
; 3.点的X,Y坐标均以象素点为单位。
; 5.点的横坐标不能超过一个字节的范围。
IFNDEF LINE13351
#DEFINE LINE13351
POX0 EQU 30H
POY0 EQU 31H
JVX EQU 32H
JVY EQU 33H
JRX EQU 34H
JRY EQU 35H
JE EQU 36H
#DEFINE DIREY 37H,0
INCLUDE "DOT1335.ASM"
LINE1335 MOVLW 80H
MOVWF JRX
MOVWF JRY ;溢出寄存器置初值,半加载
CLRF JE ;总步数清0
MOVF SOU,W
SUBWF RLT,W
MOVWF JVX ;JVX=RLT-SOU
BTFSC STATUS,C ;判断哪一个点的横坐标较小
GOTO NEXT68
COMF JVX,F
INCF JVX,F ;JVX=SOU-RLT
MOVF RLT,W
MOVWF POX0
MOVF RLTH,W
MOVWF POY0 ;(RLT,RLTH)作为起点
MOVF RLTH,W
SUBWF SOUH,W
MOVWF JVY ;JVY=SOUH-RLTH
BSF DIREY ;Y坐标递增标志
BTFSS STATUS,C
BCF DIREY ;Y坐标递减标志
GOTO NEXT69
NEXT68 MOVF SOU,W
MOVWF POX0
MOVF SOUH,W
MOVWF POY0 ;(SOU,SOUH)作为起点
MOVF RLTH,W
SUBWF SOUH,W
MOVWF JVY
BSF DIREY ;Y坐标递增标志
BTFSC STATUS,C
BCF DIREY ;Y坐标递减标志
NEXT69 BTFSC STATUS,C
GOTO DONE28
COMF JVY,F
INCF JVY,F ;JVY=|SOUH-RLTH|
DONE28 BTFSC JVX,7
GOTO DONE29
BTFSC JVY,7
GOTO DONE29
BCF STATUS,C
RLF JVX,F
RLF JVY,F
BSF STATUS,C
RRF JE,F
GOTO DONE28 ;JVX,JVY左移规格化
DONE29 MOVF POX0,W
MOVWF SOU
CLRF SOUH
MOVF POY0,W
MOVWF RLT
MOVLW 0FFH
CALL DOT1335 ;画出第一个点
NEXT70 MOVF JVX,W
ADDWF JRX,F ;JRX=JRX+JVX
BTFSC STATUS,C
INCF POX0,F ;X=X+1
MOVF JVY,W
ADDWF JRY,F ;JRY=JRY+JVY
BTFSS STATUS,C
GOTO NEXT71
BTFSC DIREY
INCF POY0,F ;Y=Y+1
BTFSS DIREY
DECF POY0,F ;Y=Y-1
NEXT71 MOVF POX0,W
MOVWF SOU
CLRF SOUH
MOVF POY0,W
MOVWF RLT
MOVLW 0FFH
CALL DOT1335 ;显示下一点
INCFSZ JE,F ;直线显示完毕?
GOTO NEXT70
RETURN
ENDIF
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -