realizar una division con el pic

hola quisiera saber como poder hacer una operacion tan basica como es la division en el pic con ensamblador mplab.

la division se que es restar muxas al dividendo el divisor asta qu llegue a cero.
por ejeplo 40/10 es 40-10=30 30-10=20 20-10=10 10-10=0
y el resultado son el nº de restas k hice.

pero¿no hay otra foerma mas sencilla de hacerlo? porq con este prodecimiento como hago ara cunado tenga que resta por ejemplo 49/10 qu sale decimal?

¿ALGUIEN PODRIA AYUDARME?


GRACIAS
 
A mi tambien me interesaria esto. He conseguido que divida mediante el status y con restas sucesivas pero solo me vale si pones una decena justa (10, 20, 30...) pero si pones por ejemplo, 54 (que al dividir entre 10 daria decimal) pues y no me funciona.

El programa es algo asi

INICIO
CLRW
CLRF PORCENT
MOVLW 0X36
MOVWF NUMERO
DIVIDE

INCF PORCENT,F
MOVLW 0x0A
SUBWF NUMERO,F
BTFSS STATUS,Z
GOTO DIVIDE

A lo mejro te ayuda en algo.
 
A mi se me acurre esto, tu numero 54 multiplicalo por 10, dependiendo la exactitud que quieras ( implica utilizar varios registros para un solo numero, pero vale la pena).

Una vez que has multiplicado por esa cantidad, haces las restas sucesivas, y el resultado, lo conviertes a BCD, por ultimo la ultimas cifra es decimal, que ya guardaras en registros especificos.

Trabajo en otro modelo en el que un registro "enteros" contiene el numero real, y otro "decimales" que tiene valor de 1/2, 1/4,1/8,1/16,1/32,1/64,1/128,1/256 donde por ejemplo el 2.6 es igual a 0010 . 01111000
 
a mi se me ocurre algo, cuando estas dividiendo, obtendras un resultado, cuando obtengas ese resultado siempre guardalo en una variabley testeala siempre que no de cero, en otro registro aumentas una(que va a ser la posicion de la coma, y multiplica por diez, y empieza de nuevo la resta, el nuevo resultado sera el siguiente numero. asi hata que el resultado de la resta sea 0.


Algo asi funciona.
 
Para un procesador que no tiene divisor por hardware el algoritmo lo consiguen en:
http://es.wikipedia.org/wiki/Sistema_binario
Se pasa en desplazar, comparar y restar. Es tedioso de implementar y lento.
Si necesitan velocidad , como es el caso de un lazo de control PI o PID,
y el procesador dispone de un multiplicador por hardware, pueden usar una tabla
de inversos. Usan el divisor como un índice en una tabla que contiene los valores
de los inversos y hacen el producto.
 
Modifique su codigo con este no tendran ese problema aunque siempre botaran los decimales y no sera tan exacto.

INICIO
CLRW
CLRF porcent
CLRF numero
MOVLW 0X36
MOVWF numero
DIVIDE

MOVLW 0x0A
SUBWF numero,F
BTFSC STATUS,C
GOTO AUMENTA
GOTO SAL

AUMENTA
INCF porcent,F
goto DIVIDE

SAL

end
 
Atrás
Arriba