SoloCodigo

Programación Específica => Microcontroladores => Mensaje iniciado por: law en Miércoles 7 de Marzo de 2007, 17:51

Título: Ayuda Con Multiplicacion En Pic16f84
Publicado por: law en Miércoles 7 de Marzo de 2007, 17:51
:scream:  hola, por favor necesito ayuda para multiplicar 2 numero en un pic 16f84
Título: Re: Ayuda Con Multiplicacion En Pic16f84
Publicado por: Toph en Jueves 8 de Marzo de 2007, 08:03
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: