LIST P = 18f45K50          ;Microcontrolador a utilizar
    #include<p18f45K50.inc>
    
;Sección de bits de configuración inicial
    CONFIG WDTEN=OFF ;Deshabilita el Watchdog
    CONFIG MCLRE=ON ;Habilita MCLEAR
    CONFIG DEBUG=OFF ;Deshabilita Debug mode
    CONFIG LVP=OFF ;Deshabilita programacion bajo voltaje 
    CONFIG FOSC=INTOSCIO ;Habilita oscilador interno
    
;Declaración de variables en la memoria de datos
Delay1 EQU 0x02
Delay2 EQU 0x03
INCT   EQU 0x04
DECT   EQU 0x05
   
#DEFINE PULSADOR PORTB,0   

    ORG    0
    
Start:
    MOVLB  0x0F
    CLRF   ANSELA,1       ;Entradas A,B,C y D como digitales
    CLRF   ANSELB,1
    CLRF   Delay1
    CLRF   Delay2
    CLRF   TRISA          ;Puero PORTA como salidas digitales
    BSF    TRISB,0        ;Pin RB0 como entrada 
    MOVLW  b'01010011'
    MOVWF  OSCCON         ;Frecuencia a 4MHz
    BSF    PORTA,7        ;enciende RA7 PORTA
      
;Ciclo principal
MainLoop  
    RRNCF  PORTA,F        ;rotacion hacia la derecha sin acarreo
    CALL   Delay          ;llamada a retardo
    GOTO   MainLoop       ;bucle
        
;Subrutina de retardo
Delay
    DECFSZ Delay1,1       ; Decrementa Aux1 en 1, salta siguiente instrucción si Aux1 es 0 (256 - 0 )
    GOTO   Delay
    DECFSZ Delay2,1       ; Decrementa Aux1 en 1, salta siguiente instrucción si Aux1 es 0 (256 - 0 )
    GOTO   Delay
    RETURN                ; Regresa al programa principal
    END