Bueno Enigma , ahora que revise tu programa con un poco mas de detalle me di cuenta que cometes un error a la hora de declarar la variable periodo, la declaras como una variable de 8 bits siendo que tanto el CCP_2 como el TMR1 son de 16 bits , declarala de la siguiente forma int16 periodo, con esto podras ponerle valores hasta 65535.
, por eso probaba con valores pequeños como de 100 y 50 en el CCP2, pero igualito, yo también le asigne un valor a la varible periodo, fuera del while, y pues cuando queme el pic para ver lo que sucedia en vida real, se quedaba encendido ahi todo el tiempo....
Este es tu otro error, los valores pequeños de CCP_2 producen frecuecias mas elevadas, parece raro pero es asi, esto se debe a que la interrupcion se produce
"Cuando TMR1 llega a ser igual al valor en CCP_2", entonces si tu pones en CCP_2 el valor de 100 por tu configuracion de TMR1 este llegara a 100 en 100 us por lo que tu frecuencia sera de 5000 Hz , Si embargo si a CCP_2 le pones el valor de 10000, al TMR1 le tomara 10 ms igualar el valor de CCP_2 , entonces tu frecuencia sera de 50 Hz.
Finalizando , para notar el parpadeo tu frecuencia debe ser menor a 50 Hz , que tal 10 Hz , para esto tienes un periodo de 100 ms , con lo que el tiempo alto que es igual al tiempo bajo sera 50 ms poniendo periodo = 50000 ya tendras este tiempo, pero no te olvides que periodo debe ser de 16 bits.
Saludos