?? 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 + -