Con la resistencia y CLRF PORTA Y PORTC parece que ya ha funcionado, muchisimas gracias.
Aunque de momento vuelvo a las mismas, meto algo nuevo y vuelve a no ir, estoy intentando cambiar la simple apertura de una salida por otra por PWM. El periodo final si no lo he calculado mal es de aproximadamente de 1ms y ya que gasto PR2=15 mi pwm creo que irá de 0 a 16 inclusive. Estoy probando cosas, pero de momento no se ilumina nada.
LIST P=16F886
INCLUDE P16F886.INC
__CONFIG _CONFIG1, _INTOSCIO & _WDT_OFF & _PWRTE_OFF & _MCLRE_OFF & _CP_OFF & _CPD_OFF & _BOR_ON & _IESO_OFF & _FCMEN_OFF & _LVP_OFF & _DEBUG_OFF
__CONFIG _CONFIG2, _BOR40V & _WRT_OFF
CBLOCK 0X20
ENTRADA
ENDC
ORG 00
GOTO INICIO
INICIO NOP
; Configuración del oscilador
BANKSEL OSCCON
MOVLW B'01001100' ; Oscilador interno a 1 MHz
MOVWF OSCCON ; envía la instrucción de ajuste a OSCCON
; Inicialización de los puertos
BANKSEL PORTA
CLRF PORTA
BANKSEL ANSEL
MOVLW B'00000001' ; RA0 analogico, lo demás digital
MOVWF ANSEL
BANKSEL TRISA ; selecciona TRISA
MOVLW B'11111111'
MOVWF TRISA
BANKSEL PORTB
CLRF PORTB
BANKSEL ANSELH
MOVLW B'00000000'
MOVWF ANSELH
BANKSEL TRISB ; selecciona TRISB
MOVLW B'11111111'
MOVWF TRISB
BANKSEL PORTC
CLRF PORTC
BANKSEL TRISC
CLRF TRISC ; Configuro RC2 como salida
MOVLW .15
MOVWF PR2
; con PR2 asigno el periodo
; La fórmula para el período es T = (PR2 + 1)*4*Tosc * Valor divisor prescaler TMR2
; Jugando con esos valores podemos cambiar el período (y la frecuencia)
; Nota: el 4*Tosc del período viene porque TMR2 funciona a un cuarto de la
; frecuencia del oscilador seleccionado (es decir, cuatro veces su período)
; Ajusta el oscilador externo con CCP1CON
MOVLW B'00001101'
MOVWF CCP1CON
; Modo PWM 1101 <3,2,1,0>, bit <5,4> en ceros
; La configuración activa el modo PWM, y la salida modulada es el pin P1A (pin 13)
; Ajusta el prescaler, que nos da el período (y por tanto, al invertirlo, la frecuencia)
MOVLW B'00000110' ;
; A partir de la datasheet:
; - bit MSB se ignora
; - bits 6-3 dan el valor de división del postscaler (pasando de binario a decimal; por ejemplo, 0111 sería un postscaler de 7)
; - bit 2 activa el temporizador
; - bits 1-LSB indican la división del prescaler, la que parece que usa este programa:
; <1x> Un prescaler de 16 da un periodo apox de 4ms y una frec de 244Hz
; <01> Un prescaler de 4 da un periodo apox de 1ms y una frec de 1KHz
; <00> Un prescaler de 1 da un periodo apox de 250us y una frec de 4KHz
MOVWF T2CON ; ajusta prescaler y activa TMR2
CLRF CCPR1L ; Duty en cero (0)
NUEVO
BANKSEL PORTA
MOVF PORTA, W
MOVWF ENTRADA
BTFSC ENTRADA, 1
GOTO OPCION1
;BTFSC ENTRADA, 2
;GOTO OPCION2
CLRF CCPR1L
GOTO NUEVO
OPCION1
MOVLW .15
MOVWF CCPR1L
GOTO NUEVO
;OPCION2
; MOVLW .10
; MOVWF CCPR1L
; GOTO NUEVO
END
De momento he comentado una opcion para hacerlo más sencillo.
Un saludo.