PIC16F84 – Multiplicación de números de 8 bits
Problema Propuesto
Implementar una subrutina que multiplique dos números de 8 bits utilizando el algoritmo de sumas parciales.
Solución
list p=16F84A
include P16F84A.INC
;------------------------------------------------------------------
multiplicando equ 0x0C ;dato a sumar
multiplicador equ 0x0D ;veces a sumar
DH equ 0x0E ;byte alto
DL equ 0x0F ;byte bajo
;------------------------------------------------------------------
org 00h ;Vector de Reset
goto INICIO
org 0x05 ;Vector de interrupción
INICIO
call multiplica ;subrutina
goto dormir ;hemos acabado
MULTIPLICA
clrf DH
clrf DL
movf multiplicador,W ;W = multiplicador
btfsc status,Z ;Salta si Z=1
goto dormir ;Z=0 multiplicador=0
BUCLE
movf DL,W ;W=DL
addwf multiplicando,W ;W += multiplicando
movwf DL ;DL=W
btfsc status,C ;Salta si C=0
incf DH,F
RESTO
decfsz multiplicador,F ;multiplicador-1
goto bucle ;no hemos acabado
return ;fin subrutina
DORMIR
sleep
end ;Fin del programa
;------------------------------------------------------------------
El programa consta de cuatro etiquetas (Inicio, bucle, resto y dormir) y una subrutina (multiplica).
La subrutina “MULTIPLICA” es donde se va sumando el multiplicando hasta que el multiplicador sea cero. Cuanto mayor sea el multiplicador, más tiempo de ejecución obtendremos.
Se puede ver un ejemplo de funcionamiento en este vídeo: https://youtu.be/Mu3g4hKa3BA
https://youtu.be/Mu3g4hKa3BA
2 comentarios en «PIC16F84 – Multiplicación de números de 8 bits»
tendrías a mano una división tan sencilla como la multiplicación
Tienes un código aquí:
http://www.todopic.com.ar/foros/index.php?topic=17479.0