Bueno recién estudiando ensamblador con pic quise probar manejar un poco las operaciones por condición. Quiero dividir cierto numero entre 2 ó 4 dependiendo de si es mayor a otro. Me parece que dividir corriendo los bits, con la instrucción RRF, seria mas fácil.
;;;;;;;CONDICION;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
MOVF NUMB3,0
SUBWF TOTAL,W ;COMPARO NUMB3 CON TOTAL
BTFSC STATUS,Z
GOTO IGUALES
BTFSC STATUS,C
GOTO MAYOR
GOTO MENOR
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
IGUALES
MOVF TOTAL,0
MOVWF PORTD
GOTO PRINCIPAL
MAYOR
MOVF TOTAL,0
MOVWF MP
RRF MP,1 ;DIVIDO MP ENTRE 2
MOVF MP,0
MOVWF PORTD
GOTO PRINCIPAL
MENOR
MOVF TOTAL,0
MOVWF NP
RRF NP,1 ;DIVIDO NP ENTRE 4
RRF NP,1
MOVF NP,0
MOVWF PORTD
GOTO PRINCIPAL
END
pero sucede que el pic parece saltar nada mas a la parte de si el numero es menor; que estoy implementando mal la parte de la condición o uso mal la instrucción RRF.
gracias
RESUELTO: hacia falta poner el bit C de status en 0 antes de poner cada RRF
;;;;;;;CONDICION;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
MOVF NUMB3,0
SUBWF TOTAL,W ;COMPARO NUMB3 CON TOTAL
BTFSC STATUS,Z
GOTO IGUALES
BTFSC STATUS,C
GOTO MAYOR
GOTO MENOR
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
IGUALES
MOVF TOTAL,0
MOVWF PORTD
GOTO PRINCIPAL
MAYOR
MOVF TOTAL,0
MOVWF MP
RRF MP,1 ;DIVIDO MP ENTRE 2
MOVF MP,0
MOVWF PORTD
GOTO PRINCIPAL
MENOR
MOVF TOTAL,0
MOVWF NP
RRF NP,1 ;DIVIDO NP ENTRE 4
RRF NP,1
MOVF NP,0
MOVWF PORTD
GOTO PRINCIPAL
END
pero sucede que el pic parece saltar nada mas a la parte de si el numero es menor; que estoy implementando mal la parte de la condición o uso mal la instrucción RRF.
gracias
RESUELTO: hacia falta poner el bit C de status en 0 antes de poner cada RRF