Autor Tema: Como multiplicar 2 distancias ke guardo en 4 variables??  (Leído 2766 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado jaldales

  • PIC10
  • *
  • Mensajes: 6
Como multiplicar 2 distancias ke guardo en 4 variables??
« en: 30 de Octubre de 2003, 13:40:00 »
Hola Amigos:

Tengo dos distancias. En una variable Metros1 tengo los metros y en Centimetros1 tengo los centímetros. Alguien puede facilitarme una rutina para poder multiplicar dos distancias???

Metros3,Centimetros3=(Metros1,Centimetros1)*(Metros2,Centimetros2)


Por favor si alguien puede ayudarme lo agradezco

GRACIAS DE ANTEMANO

PD: Trabajo con una pic 16f84

Desconectado manex_1987

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1127
RE: Como multiplicar 2 distancias ke guardo en 4 variables??
« Respuesta #1 en: 30 de Octubre de 2003, 15:20:00 »
Bajate el paquete de rutinas para coma flotante de la web de PicBasic Pro . Con esto no debería de ser tan difícil.
Primero, integrar las distancias en una sola unidad:
4m 78cm = 4,78m
Luego, realizar la multiplicación de coma flotante mediante las rutinas para coma flotante.
Y luego, convertirlo otra vez a dos integros, o sea:
6,53m= 6m 53cm

Todas estas funciones están integradas en ese paquete de rutinas , que por cierto , es muy útil.
Para que te hagas una idea:
5m 40cm * 3m 80cm
=  5"40 * 3"80
=  20"52
20"52m = 20m 52cm
Empezariamos con 4 variables, integrarlas en pares , en 2 integros de coma flotante (mediante sus respectivas rutinas) , los multiplicamos (tambien mediante una rutina especial) , y luego extraemos 2 variables del resultado, o bien usando usando una rutina de coma flotante , o bien mediante expresiones para manipular texto.

Espero que te haya ayudado!

Saludos!

PD: Si esperabas una ayudita en cualquier lenguaje excepto PBP... me siento como un inutil... jeje...(era broma)

Conectado MGLSOFT

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 7912
RE: Como multiplicar 2 distancias ke guardo en 4 variables??
« Respuesta #2 en: 30 de Octubre de 2003, 15:36:00 »
Lo que no le aclaraste es que el programa resultante para hacer esto le ocupara al menos la mitad de la memoria de programa del PIC16F84, o un tercio en un 16F628, je...je...
Todos los dias aprendo algo nuevo, el ultimo día de mi vida aprenderé a morir....
Mi Abuelo.

Desconectado manex_1987

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1127
RE: Como multiplicar 2 distancias ke guardo en 4 variables??
« Respuesta #3 en: 30 de Octubre de 2003, 15:51:00 »
Euuu.... me he basado en un punto de vista teorico eh... cómo voy a probar en mi 16F84 las capacidades y lo mucho que ocupan esas rutinas, si ni tan siquiera tengo un LCD donde poder comprobarlas, ni domino muy bien el RS-232?
Vaya decepcion...

Saludos!

Desconectado lu6vg

  • Colaborador
  • PIC18
  • *****
  • Mensajes: 313
RE: Como multiplicar 2 distancias ke guardo en 4 variables??
« Respuesta #4 en: 30 de Octubre de 2003, 18:11:00 »
Creo que mas facil es trabajar todo en centimetros asi la multiplicacion es entera. Eso consume mucho menos memoria y cuando mucho si se necesita en metros el dato se hace el truco de agragarle una coma en el display sin pasalo a una variable de punto flotante

Resultado =(Metros1 *100 + Centimetros1)*(Metros2*100 + Centimetros2).

resultado esta en CM

Saludos

Luis

Desconectado ELSuit

  • PIC10
  • *
  • Mensajes: 15
RE: Como multiplicar 2 distancias ke guardo en 4 variables??
« Respuesta #5 en: 31 de Octubre de 2003, 02:07:00 »
Yo multiplicaria primero los metros, por una parte, y por otra los centimetros, que setia algo tal q asi:

resul=metros1*metros2;
resul2=centimetros1*centrimetros2;
 puedes programarlo en C, si te resulta mas facil

Desconectado jaldales

  • PIC10
  • *
  • Mensajes: 6
RE: Como multiplicar 2 distancias ke guardo en 4 variables??
« Respuesta #6 en: 31 de Octubre de 2003, 02:43:00 »
Muchas gracias por las ayudas. La cuestión es que yo programo en ensamblador (en C no se jejeje) y había leido en algun sitio que hay unas librerias que hacen esa multiplicación. Para ello metes los 8 bits de mayor peso en una variable y los 8 de menor en otra y así con las dos medidas.

Sabeis algo al respecto??


Gracias de nuevo

Desconectado Elena2000

  • PIC24F
  • *****
  • Mensajes: 722
RE: Como multiplicar 2 distancias ke guardo en 4 variables??
« Respuesta #7 en: 31 de Octubre de 2003, 03:04:00 »
Hola!

Esto sería muy facilito hacerlo en VHDL, pero ya que nos dices que pilotas con el ensamblador, te daré algunas pistas para multiplicar en ASM

*Instrucción MUL
Multiplicación sin considerar el signo.
El ensamblador asume que el multiplicando y el multiplicador tienen el mismo tamaño de bits (las dos variables que multimplicas entre ellas). El valor que se obtiene de esa operación aritmética se almacena en un registro u otro, dependiendo de si la multimplicación la haces a 8 o a 16 bits. Esto debes mirarlo según el PICs que uses en concreto, vale?

* Instrucción IMUL
Multiplicación de dos valores completos con su signo.
Este comando hace básicamente lo mismo que el anterior, pero en este caso se considera el signo de los operandos.
El resultado se almacena en los mismo registros que usa la instrucción mov, que seguro que manejas normalmente.


Espero que algo te haya orientado. AH! apunto lo que dice Luis, utiliza el valor pasado a centímetros para evitar decimales.

Saludos!
Elena

Desconectado ELSuit

  • PIC10
  • *
  • Mensajes: 15
RE: Como multiplicar 2 distancias ke guardo en 4 variables??
« Respuesta #8 en: 31 de Octubre de 2003, 04:03:00 »
yo normalmente si programo en ensamblador, es mas con los comandos de pic, a pelo, jejeje, en un simulador chiquitin y nada sofisticado se llama pic sim, y fue creado por las fuerzas armadas de ee uu y ahora lo aprovecha to kiski, pa aprender y soltarte esta bastante bien, pero no vale para implementar, guscalo en www.google.es por ejemplo. bueno y lo otro q te recomiendo es q te buskes el datasheep o como se llame, el manual digamos, el del 16f84, el la pagina de microchip está. y ahy buscas las instrucciones en el *.pdf y podras encontrar lo q buscas, de todos modos una multiplicacion, recuerda q es una suma dentro de un bucle (en pic, se hace con  el goto, o el call) a ver si te sirve de algo. un saludito

Desconectado pocher

  • Moderador Local
  • DsPIC30
  • *****
  • Mensajes: 2568
RE: Como multiplicar 2 distancias ke guardo en 4 variables??
« Respuesta #9 en: 31 de Octubre de 2003, 11:03:00 »

Desconectado lu6vg

  • Colaborador
  • PIC18
  • *****
  • Mensajes: 313
RE: Como multiplicar 2 distancias ke guardo en 4 variables??
« Respuesta #10 en: 31 de Octubre de 2003, 13:32:00 »
Escrito originalmente por ELSuit
Yo multiplicaria primero los metros, por una parte, y por otra los centimetros, que setia algo tal q asi:

resul=metros1*metros2;
resul2=centimetros1*centrimetros2;
 puedes programarlo en C, si te resulta mas facil


Esto no es correcto ya que la multiplicacion no es distributiva con la suma de esa manera
Ej Si tenemos una medida de 3,20 m por 4,55
m1=3, cm1=20, m2=4, cm2=55 haciendolo de esa manera da m3=12[m2] y cm3=1100[cm2].

Si luego sumas te daria 12.11m2.

El resultado real de 3.20 x 4.55 es 14.56m2

Saludos

Luis