Ultimamente tenho vindo a tentar compreender como funciona o PWM,para isso montei o circuito que vem no libro do Fabio pagina 236-237 com o mesmo codigo proposto pelo autor mas com algumas alterações !o codigo exemplo segue em baixo!
O que tento fazendo é cada vez que a tecla no pino-a0 seja levado a 1 a variaveil x vai incrementando e o switch vai alterando o valor do PWM no pino RC2->ccp1( espero que não estja errado?) e tenho um LED ligado ao pino 17 do 16F877A
O circuito foi montado de acordo com o livro,claro sem o uso da rs232
Estou fazendo teste a uma semana sem qualquer resultado ,onde serà o erro? :

Desde jà agradeço a galera!!

aqui vai o codigo;
#include <16f877a.h>
#use delay(clock=4000000)
#fuses XT,NOWDT,PUT
#include <lcd.c>
#use standard_io(a)
void main()
{
int x=0;
long int ciclo=0;
//lcd_init();
//lcd_putc("\r\nTeste do PWM\r\n");
setup_timer_2 (T2_DIV_BY_16, 61, 1); // timer 2 = 1,008 khz
setup_ccp1 (ccp_pwm); // configura CCP1 para modo PWM
set_pwm1_duty ( 0 ); // configura o ciclo ativo em 0 (desligado)
while (true)
{
x=input(pin_a0); // se uma tecla for pressionada
{
x=x+1;
if (x>9)
x=0;
switch (x) // verifica a tecla
{
case '1' : ciclo = 50;
break;
case '2' : ciclo = 100;
break;
case '3' : ciclo = 255;
break;
case '4' : ciclo = 350;
break;
case '5' : ciclo = 500;
break;
case '6' : ciclo = 700;
break;
case '7' : ciclo = 900;
break;
case '0' : ciclo = 1023;
break;
// case '0' : ciclo = 0;
}
if (ciclo>1023) ciclo = 1023;
// printf (lcd_putc,"Ciclo ativo = %lu\r\n",ciclo);
set_pwm1_duty (ciclo); // configura o ciclo ativo
}
}
}