pwm não funciona

Boa tarde, estou tentando fazer uma saida pwm proporcional a entrada de frequencia, tipo ciclo do pwm variar de 0 a 1023 para uma frequencia de 0 a 5000 Hz, mas na saida do pwm medindo com o osciloscopio só tenho a frequencia que está no timer1 com a amplitude bem menor, será que estou esquecendo algum detalhe.
Se alguém puder me dar uma força, agradeço desde já.
Se alguém puder me dar uma força, agradeço desde já.
- Código: Selecionar todos
#include <16f876A.h>
#use delay(clock=4915200)
#fuses XT,NOWDT,NOPUT,NOLVP
#include <regs_16f87x.h>
#USE fixed_io(B_outputs = PIN_B1, PIN_B2, PIN_B3, PIN_B4, PIN_B5, PIN_B6, PIN_B7)
#USE fixed_io(C_outputs = PIN_C3, PIN_C4, PIN_C5, PIN_C6, PIN_C7)
long int ciclo;
#int_timer0 //interrupcao do timer0
trata_t0()
{
long int entrada;
float freq_max=5000;
int conta;
float calc_prop;
conta++;
set_timer0(16)
if (conta >= 20)
{
entrada= get_timer1();
calc_prop = (1023/freq_max);
ciclo = (calc_prop * entrada);
if (ciclo>=1023) ciclo=1023;
set_timer1 (0); //zera contagem do timer1
conta=0; //zera variavel conta, recomeca contagem
}
}
void main() {
setup_timer_0 ( RTCC_INTERNAL | RTCC_DIV_256 );
setup_timer_1 ( T1_EXTERNAL | T1_DIV_BY_1 );
setup_timer_2 (T2_DIV_BY_4, 248, 1);
SETUP_CCP1 (CCP_PWM); //configura modulo ccp para PWM
SET_PWM1_DUTY (0);
enable_interrupts ( GLOBAL | INT_TIMER0 );
while(TRUE)
{
SET_PWM1_DUTY(ciclo);
}