TODOPIC

Microcontroladores PIC => Todo en microcontroladores PIC => Mensaje iniciado por: ruuuuben en 29 de Enero de 2007, 05:44:31

Título: realizar una division con el pic
Publicado por: ruuuuben en 29 de Enero de 2007, 05:44:31
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 forma mas sencilla de hacerlo? porq con este prodecimiento como hago para cuando tenga que restar por ejemplo 49/10 que sale decimal

¿ALGUIEN PODRIA AYUDARME? 


GRACIAS
Título: Re: realizar una division con el pic
Publicado por: Modulay en 29 de Enero de 2007, 06:15:42
Si no me equivoco puedes seguir repitiendo el mismo proceso para obtener los decimales.
Usemos el ejemplo de 43/10

Para la parte entera:

43 mayor o igual que 10 => 43 - 10 = 33
33 mayor o igual que 10 => 43 - 10 = 23
23 mayor o igual que 10 => 43 - 10 = 13
13 mayor o igual que 10 => 43 - 10 = 3

9 no es mayor o igual que 10.Hemos hecho 4 restas: parte entera = 4

Ahora lo que te queda de resto ( 3 ) lo multiplicas por 10 para obtener la primera cifra decimal siguiendo el mismo proceso:

3*10 = 30

30 mayor o igual que 10 => 30 - 10 = 20
20 mayor o igual que 10 => 20 - 10 = 20
10 mayor o igual que 10 => 10 - 10 = 0

Hemos hecho 3 restas.El primer decimal es 3.No hay más decimales porque hemos llegado a 0 tras la última resta.

Resultado : 43 / 10 = 4.3



Probemos 15 / 4 = 3.75

Parte entera:

15 - 4 = 11
11 - 4 = 7
7 - 4 = 3

Parte entera = 3
Resto = 3

Vamos con el primer decimal:

3*10 = 30

30 - 4 = 26
26 - 4 = 22
...
...
...

Primer decimal = 7
Resto = 2

Segundo decimal:

2*10 = 20

20 - 4 = 16
16 - 4 = 12
12 - 4 = 8
8 - 4 = 4
4 - 4 = 0

Segundo decimal = 5
Resto = 0

Resultado 3.75
Título: Re: realizar una division con el pic
Publicado por: maunix en 29 de Enero de 2007, 14:43:29
pero¿no hay otra forma mas sencilla de hacerlo? porq con este prodecimiento como hago para cuando tenga que restar por ejemplo 49/10 que sale decimal

¿ALGUIEN PODRIA AYUDARME? 

Otra alternativa a la expuesta por modulay es la de que leas la application note de microchip que versa sobre el tema.

AN526: PIC16C5x/PIC16Cxx Utility Math Routines (http://www.microchip.com/stellent/idcplg?IdcService=SS_GET_PAGE&nodeId=1824&appnote=en011000)