Помогите найти код деления 16бит/16бит чисел (подойдет, в принципе, 16бит/10бит)
(«Телесистемы»: Конференция «Микроконтроллеры и их применение»)

миниатюрный аудио-видеорекордер mAVR

Отправлено Justas 15 июля 2004 г. 10:43

для pic16.
То, что взял с PICList, выдает какие-то совершенно случайные результаты :(
Вот оно:
;**********************************************************************************************
;**********************************************************************************************
; 16/16 Bit Unsigned Fixed Point Divide 16/16 -> 16.16
; Input: 16 bit unsigned fixed point dividend in AARGB0, AARGB1
; 16 bit unsigned fixed point divisor in BARGB0, BARGB1
; Use: CALL FXD1616U
; Output: 16 bit unsigned fixed point quotient in AARGB0, AARGB1
; 16 bit unsigned fixed point remainder in REMB0, REMB1
; Result: AARG, REM <-- AARG / BARG
; Max Timing: 2+369+2 = 373 clks
; Min Timing: 2+273+2 = 277 clks
; PM: 2+24+1 = 27 DM: 7

FXD1616U CLRF REMB0
CLRF REMB1
MOVLW D'16'
MOVWF LOOPCOUNT
LOOPU1616 RLF AARGB0,W
RLF REMB1, F
RLF REMB0, F
MOVF BARGB1,W
SUBWF REMB1, F
MOVF BARGB0,W
BTFSS _C
INCFSZ BARGB0,W
SUBWF REMB0, F

BTFSC _C
GOTO UOK66LL
MOVF BARGB1,W
ADDWF REMB1, F
MOVF BARGB0,W
BTFSC _C
INCFSZ BARGB0,W
ADDWF REMB0, F

BCF _C

UOK66LL RLF AARGB1, F
RLF AARGB0, F

DECFSZ LOOPCOUNT, F
GOTO LOOPU1616

stop goto stop

Составить ответ  |||  Конференция  |||  Архив

Ответы



Перейти к списку ответов  |||  Конференция  |||  Архив  |||  Главная страница  |||  Содержание  |||  Без кадра

E-mail: info@telesys.ru