hola adrianrs86, lo que veo en tu programa es, primero: como estas configurando los fuses?, osea si tienes habilitado o no el WDT, BODEN, CP, CP etc, segundo: veo que tu programa pregunta sine l pin RC0 esta en 1, ahora digamos que el pin RC0 detecta 1 y enciende los 3 leds del portb, y si luego ya no detecta el 1, deberia apagar los leds, pero tu programa no hace eso por que una vez que detecte uno los leds del puerto B se quedaran encendidos. Tercero: como esta conectdo el pulsador en el pin RC0, si pudieras poner el diagrama esquematico de tu circuito, pero me atrevo a asegurar que lo tienes de esta manera:
5v
!
!
10k
!
!-----RC0
!
!
pulsador
!
!
gnd
como te podras dar cuenta, apenas tu programa comienze, el pin RC0 va a detectar 1, sin haber presionado el pulsador(que es del tipo normalmente abierto) y como tu programa no contempla lo que anteriormente te mencione los leds del puerto B se quedaran encendidos indefenidamente. Deberias hacerlo de esta manera:
BANKSEL PORTA
CLRF PORTB ;limpio el portb
INICIO
BTFSC PORTC,0 ;pregunto si se preciono el pulsador
GOTO $-2 ;NO, retrocedo dos lineas para borrar portb
MOVLW .7 ;SI, enciendo los leds del portb
MOVWF PORTB
GOTO INICIA ;cominzo de nuevo el ciclo
END
De esta manera los leds encenderan cuando solo presiones el pulsador, en este caso estas detectando un nivel bajo, pero si quieres hacerlo por nivel alto tienes que cambiar la posicion del pulsador en RC0 asi:
5v
!
!
pulsador
!
!----4.7k----RC0
!
10K
!
!
gnd
Como puedes ver de esta manera necesitarias una resistencia mas y en un diseño se trata de optimizar los recursos y espacios en un placa, si haces una placa no se notaria la direcencia pero si haces 100 en ese caso si se ve la diferencia. Y el codigo solo cambiarias esta linea :
BANKSEL PORTA
CLRF PORTB ;limpio el portb
INICIO
BTFSS PORTC,0 ;pregunto si se preciono el pulsador
....
.....
END
Bueno, espero que te aya sido de ayuda mi explicacion si no te quedo claro algo no dudes en preguntar en el foro, que para eso estamos, para aprender este mundo maravilloso de los uC