Codigo:
void genera_pulso(int ancho) // ancho iría desde 0 hasta 50.
{
output_high(PIN_A0);
delay_ms(ancho);
output_low(PIN_A0);
delay_ms(50);
}



Si esta bien, se como hacer retardos.. pero no como crear un retardo variable... Bueno amigos.... Ojala que me puedan ayudar.. Saludos desde Argentina.
. Aca les envio mi codigo para que vean como quiero hacer.PWM Period = [(PRy) + 1] • TCY • (TMRy Prescale Value)
PWM Frequency = 1/[PWM Period]