; -------------------
; 1010
; 1010
; -------------------
; 0
;
; Allocations (MSB <-> LSB):
; EX[3] EX[2] EX[1] EX[0] X[3] X[2] X[1] X[0]
; EY[3] EY[2] EY[1] EY[0] Y[3] Y[2] Y[1] Y[0]
;-------------------------------------------------------------------------
div_xy
; *** Initialize ***
clrf CALCTMP1+0 ; Clear temporary buffer.
clrf CALCTMP1+1 ;
clrf CALCTMP1+2 ;
clrf CALCTMP1+3 ;
clrf CALCTMP1+4 ;
MOV lw 64 ; Set data length.
MOV wf MDLOOPCT ;
; *** Divide loop (64 times) ***
div_loop
bcf status, c ; Shift CALCTMP1(Mod) + EX + X
rlf X+0 ; to left.
rlf X+1 ;
rlf X+2 ;
rlf X+3 ;
rlf EX+0 ;
rlf EX+1 ;
rlf EX+2 ;
rlf EX+3 ;
rlf CALCTMP1+0 ;
rlf CALCTMP1+1 ;
rlf CALCTMP1+2 ;
rlf CALCTMP1+3 ;
rlf CALCTMP1+4 ;
MOV f CALCTMP1+0, w ; CALCTMP2(Work) <- CALCTMP1.
MOV wf CALCTMP2+0 ;
MOV f CALCTMP1+1, w ;
MOV wf CALCTMP2+1 ;
MOV f CALCTMP1+2, w ;
MOV wf CALCTMP2+2 ;
MOV f CALCTMP1+3, w ;
MOV wf CALCTMP2+3 ;
MOV f CALCTMP1+4, w ;
MOV wf CALCTMP2+4 ;
MOV f Y+0, w ; CALCTMP2 <- CALCTMP2 - Y.
subwf CALCTMP2+0, f ; (Signed operation)
MOV lw 1 ;
btfss status, c ; <- Positive if CF=1.
subwf CALCTMP2+1, f ;
btfss status, c ;
subwf CALCTMP2+2, f ;
btfss status, c ;
subwf CALCTMP2+3, f ;
btfss status, c ;
subwf CALCTMP2+4, f ;
;
MOV f Y+1, w ;
上一页 [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11] [12] [13] [14] [15] [16] [17] [18] [19] [20] [21] [22] [23] [24] [25] 下一页
本文关键字:单片机 PIC单片机,单片机-工控设备 - PIC单片机