bueno, no se que pic usas, pero si tienes un pic 16f877a (es el que yo he manejado), con un cristal de 4 MHZ, puedes con el pwm alcanzar hasta 250HZ como minimo....
probablemente estas usando un cristal de 12 MHz...si tu problema es que no puedes cambiar el cristal, has un temorizador, que cuente la mitad del periodo de la señal que ocupas..
es decir... si tienes una señal de 770hz.. osa (1/770) segundos de periodo...la señal podria estar constituida por 1/(770/2) segundos en alto... y el mismo tiempo en bajo..
periodo=(1/770)=.001298 segundos
para conformar la serñal ocupas un semiciclo en alto y otro en bajo...
alto(1)=.000649 segundos
bajo(0)=.000649 segundos.
entonces para aterrizar.. configurta un timer para que te cuente 649 microsegundos..cuando se inicia, inicia una salida en 0.. cuando se cumplan los 649 microsegundos, ponla ahora en uno... cuando vuelvan a pasar los 649 segundos ponla en 0.. y ahi lo tienes...
con cristal de 4Mhz estos son los valores de conf del pwm
PR2 = 0b01111100 ;
T2CON = 0b00000111 ;
CCPR1L = 0b00111110 ;
CCP1CON = 0b00011100 ;