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
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