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