• Lunes 13 de Mayo de 2024, 00:09

Autor Tema:  Ayuda Con Multiplicacion En Pic16f84  (Leído 11537 veces)

law

  • Nuevo Miembro
  • *
  • Mensajes: 1
    • Ver Perfil
Ayuda Con Multiplicacion En Pic16f84
« en: Miércoles 7 de Marzo de 2007, 17:51 »
0
:scream:  hola, por favor necesito ayuda para multiplicar 2 numero en un pic 16f84

Toph

  • Moderador
  • ******
  • Mensajes: 420
  • Nacionalidad: sv
    • Ver Perfil
    • http://www.electronicayotros.blogspot.com/
Re: Ayuda Con Multiplicacion En Pic16f84
« Respuesta #1 en: Jueves 8 de Marzo de 2007, 08:03 »
0
Cita de: "law"
:scream:  hola, por favor necesito ayuda para multiplicar 2 numero en un pic 16f84
Para multiplicar en ensamblador lo que se hace es una suma sucesiva, por ejemplo tenemos 5x3 lo que se hace es sumar el numero cinco, tres veces: 5+5+5
se debe hacer sumar el num1 y guardarlo y a la vez decrementar num2 ya que actua como contador al llegar a cero es que ya se completo la suma (multiplicacion)
algo que hay que tener en cuenta es que supongo son dos numeros de 8 bits en algunos casos el resultado pasara los 8 bits por lo tanto debe estar pendiente de esto, por eso usamos el acarreo y guardamos el resultado en dos localidades res1 y res2  por ejemplo el 4hx3h te da Ch no pasa los 8 bits el resultado quedara res1= Ch y res2= 0 pero si fuera FFh x 3h el resultado da 2FDh entonces el resultado queda en res1=FD y res2= 2h
aqui la rutina:  

Código: Text
  1.  
  2. movlw   5
  3. movwf   num1&#59;guardamos los numeros que vamos a multiplicar
  4. movlw   3
  5. movwf   num2
  6.  
  7. movlw   0&#59;ponemos w en 0
  8. bcf   STATUS,C&#59; limpia el acarreo
  9.  
  10. Rutina:
  11. addwf   num1,w  &#59; num1 + w se guarda en w
  12. movwf   res1  &#59; w se pasa a res1
  13. btfss   STATUS,C &#59; ver si hay acarreo, es decir el numero se paso de 8 bits
  14. goto   continue     &#59; ¿no lo hay? entonces vayase a continue
  15. bcf   STATUS,C  &#59; si lo hay entonces limpie el acarreo
  16. incf   res2,1  &#59; incremente res2
  17. continue:
  18. decfsz   num2,1  &#59; decrementar num2 si es 0 terminar
  19. goto   Rutina; si no es cero saltar a rutina
  20. nop        &#59; termina la multiplicacion (suma)
  21.  
  22.  

saludos y espero me entiendas  :hola:
Por favor leer esto antes de postear. Gracias
NO alimenten al TROLL y morirá
¿Querés ayudar?, pues doná comida gratis con un simple clic aqui ,sin trucos
photobucket , Google , wine y cutepdf Rock!!!


programacion,c,c++,
Microcontroladores,java,linux,videojuegos,
,.NET,asm,codigo
por favor este 2012 que sea