setup_ccp1(CCP_PWM); ///esto al principio del programa
al modificar x modifico la frecuencia al modificar time ajusto el tiempo de encendido duty lo utilizo para modificar el ancho de pulso void pulso(int x, long time,int duty) { setup_timer_2(T2_DIV_BY_16, x, 1); set_pwm1_duty(duty); delay_ms(time); set_pwm1_duty(0); } la formula para obtener el valor que va en x es x=[1/(frecuencia*4*Tosc*16)] -1 el numero 16 es el valor que se le da al timer 2 puede ser 16, 4 o 1. Tosc es igual a 1/ (valor del oscilador)