Hola:
De momento lo estoy haciendo de este modo:
#include <16f877a.h>
#fuses XT,NOWDT,NOPROTECT,NOLVP,NOPUT,NOCPD
#use delay(clock=4000000)
#use fast_io(c)
#use standard_io(b)
#int_RTCC
RTCC_isr(){
output_toggle(PIN_B0);
delay_us(760);
set_timer0(160); // ajusto el valor para que el duty sea 20%
}
int16 i=50;
void main(void){
set_tris_c(0x00);
set_tris_b(0x00);
output_c(0x00);
output_b(0x00);
setup_timer_0(RTCC_INTERNAL|RTCC_DIV_2);
enable_interrupts(INT_TIMER0);
enable_interrupts(global);
setup_timer_2(T2_DIV_BY_16,61,1);
setup_ccp1(CCP_PWM);
set_pwm1_duty(i);
//set_pwm1_duty(CCP_OFF);
while(1){
output_high(PIN_B0);
}
}
Ahora me falta ver cómo me las ingenio para lo del retardo entre una y otra.
Un saludo
Aitor