    LIST P=16F887 ;Comando que indica el Pic usado
    INCLUDE <P16F887.INC> ;Etiquetas genéricas para el Pic16F877

	__CONFIG    _CONFIG1, _LVP_OFF & _FCMEN_OFF & _IESO_OFF & _BOR_OFF & _CPD_OFF & _CP_OFF & _MCLRE_OFF & _PWRTE_ON & _WDT_ON & _INTRC_OSC_NOCLKOUT
	__CONFIG    _CONFIG2, _WRT_OFF & _BOR21V

    ORG 0x00 ;Inicio del programa en la posición cero de memoria
    nop ;Libre (uso del debugger)
    nop
    goto _inicio

    ORG 0x05
_inicio
    bsf STATUS,RP0 ;Ir banco 1
    bcf STATUS,RP1
    clrf TRISA ;PORTA salida
    clrf TRISB ;PORTB salida
    bsf TRISB,0 ;RB0 como entrada
    movlw b'11001111' ;Preescaler = 128
    movwf OPTION_REG ;Asociado al perro guardian
    bcf STATUS,RP0 ;Ir banco 0
    bcf STATUS,RP1
    clrf PORTA ;PORTC = 0
Principal
    clrwdt      ;Reset el WTD
_bucle
    btfss PORTB,0 ;RB0 = 0 ?
    goto _apagar ;no
    goto _encender ;si
_apagar
    clrf PORTA ;limpiar puertoC
    goto _reposo ;ir _reposo
_encender
    movlw 0xff
    movwf PORTA ;poner a 1 todo el puertoC
    goto  Principal ;ir _reposo
_reposo
    clrwdt ;refresca el perro guardian
    sleep ;entrar en bajo consumo
    clrwdt
    goto Principal ;ir a _bucle
    end ;Fin de programa