martes, 26 de abril de 2011

Fibonnaci ASM

LIST     P=16F877A
INCLUDE P16F877A.INC
X        EQU        0x20
Y        EQU        0x21
FIB        EQU        0x22
CONT    EQU        0X23
RET1    EQU        0X24
RET2    EQU        0X25
RET3    EQU        0X26
    BANKSEL        TRISA
    MOVLW        0xFF
    MOVWF        TRISB
    CLRF        TRISE
    MOVLW        0x00
    MOVWF        TRISD   
    BANKSEL        PORTA
    CLRF        PORTD
INICIO:
    MOVLW        .0
    MOVWF        X
    MOVLW        .1
    MOVWF        Y
    MOVLW        .12
    MOVWF        CONT
    MOVLW        0x00
SUMAR:
    BTFSS        PORTB,0
    GOTO        SUMAR
    CALL        RETARDO
    MOVLW        0x00
    ADDWF        X,0
    ADDWF        Y,0
    MOVWF        PORTD
    MOVWF        FIB
    MOVLW        0xFF
    ANDWF        Y,0
    MOVWF        X
    MOVLW        0xFF
    ANDWF        FIB,0
    MOVWF        Y
    DECFSZ        CONT,1
    GOTO        SUMAR
    GOTO         INICIO
RETARDO:
    MOVLW        .70
    MOVWF        RET1
TRES:
    MOVLW        .70
    MOVWF        RET2
DOS:
    MOVLW        .70
    MOVWF        RET3
UNO:
    DECFSZ        RET3,1
    GOTO        UNO
    DECFSZ        RET2,1
    GOTO        DOS
    DECFSZ        RET1,1
    GOTO        TRES
    RETURN
    END

No hay comentarios:

Publicar un comentario