Multiplicacion de 8 bits y algoritmo de burbuja mejorado en el Microcontrolador 16f877a
El programa multiplica 2 números de 8 bits, los cuales deben encontrarse en las localidades de memoria 30h y 31h, el resultado es guardado en las localidades dememoria 32h y 33h (todas ubicadas en el banco 0).
processor 16f877a
include
ORG 0H
GOTO INICIO
INICIO ORG 05H
BCF STATUS,RP0 ; CAMBIA EL BITRP0 A 0
BCF STATUS,RP1 ; CAMBIA EL BIT RP1 A 0
CLRF 33H
CLRF 32H
MOVF 30H,0
BTFSC 3H,2
GOTO FIN
MOVF 31H,0
BTFSC 3H,2
GOTO FIN
REGRESA ADDWF33H,1
BTFSC 3H,0
INCF 32H,1
DECFSZ 30H,1
GOTO REGRESA
FIN NOP
END
Ahora el algoritmo de burbuja mejorado. el programa ordena 20 localidades de memora que sonlas correspondientes a la dereccion 20h,21h,22h,...,14h, y 15h. el orden es ascendente de izquierda a derecha.
processor 16f877a
include
CONTA EQU 39H
CONTB EQU 3AHCONTC EQU 3BH
PIVOTE EQU 3CH
CUARENTA EQU 3DH
AUX1 EQU 3EH
AUX2 EQU 3FH
ORG 0H
GOTO INICIO
INICIO ORG 05H
;MOVWF FSR
CLRF CONTA
CLRF CONTB
CLRF CONTCCLRF PIVOTE
MOVLW 0X34
MOVWF CUARENTA
MOVLW 20H
MOVWF CONTA
ITERA ;MOVWF CONTA
MOVF CONTA,0
MOVWF FSR
MOVF INDF,0
MOVWF PIVOTE
MOVF CONTB,0;MOVWF CONTBADDWF CONTA,0
MOVWF CONTC
MOVWF FSR;INDF,0
MOVF INDF,0
SUBWF PIVOTE,0
BTFSC STATUS,0
CALL CAMBIA
MOVF CONTC,0
SUBWF CUARENTA,0
BTFSS STATUS,0
GOTO SIGUIENTEINCF CONTB,1
GOTO ITERA
CAMBIA MOVF INDF,0
MOVWF AUX1
MOVF CONTA,0
MOVWF FSR
MOVF INDF,0
MOVWF AUX2
MOVF AUX1,0
MOVWF INDF
MOVF CONTC,0
MOVWF FSRMOVF AUX2,0
MOVWF INDF
RETURN
SIGUIENTE
CLRF CONTB
INCF CONTA,1
MOVF CONTA,0
SUBWF CUARENTA,0
BTFSS STATUS,0
GOTO TERMINA
GOTO ITERA
TERMINA NOP
END
Regístrate para leer el documento completo.