20-07-2014, 01:24 AM
Pues la cuestion es que estoy siguiendo unos ejemplos y si bien esta no es la solución tal cual la pone el libro si que es valida, pero como lo tengo aqui puesto no funciona, en la linea 24 he comentado lo que tengo que ponerle pàra que funcione correctamente,explico el fallo:
Por ejemplo para cuando suma=1,Anterior=0 y Actual=0, al realizar el addwf Actual,w deberia dar W=1 pero me da W=2 es como si el movf Anterior,W al ser 0 no le hiciera caso y no pusiera W a 0.
Desde ya gracias por pegar un ojo
Por ejemplo para cuando suma=1,Anterior=0 y Actual=0, al realizar el addwf Actual,w deberia dar W=1 pero me da W=2 es como si el movf Anterior,W al ser 0 no le hiciera caso y no pusiera W a 0.
Desde ya gracias por pegar un ojo
Código:
__CONFIG _CP_OFF & _WDT_OFF & _PWRTE_ON & _XT_OSC ;Configuración para el grabador
LIST P=16F84A ;Procesador
INCLUDE <P16F84A.INC> ;Definicion de los operandos utilizados
CBLOCK 0X0C
Suma
Actual
Anterior
ENDC
ORG 0
Inicio bsf STATUS,RP0
clrf PORTB
bcf STATUS,RP0
Principal
clrf Suma ;Empecemos desde el 0
clrf Anterior ;Empecemos desde el 0
clrf Actual ;Empecemos desde el 0
incf Suma,F ;Sumamos uno
Fibo movf Actual,W
movwf Anterior ;Actual lo pasamos al anterior
movf Suma,W
movwf Actual
;clrw W
movf Anterior,W ;Cargamos el anterior en trabajo
addwf Actual,W ;Sumamos actual+anterior
btfsc STATUS,C ;Si la suma es mayor se produce acarreo en C y C=1
goto Fin
movwf Suma
goto Fibo
Fin movf Actual,W
movwf PORTB
Sleep
END