[b]
#include <16f877a.h>
#fuses XT,PUT,NOBROWNOUT,NOWDT,NOPROTECT,NOLVP
#use delay(clock=4000000)
#byte porta=5
#byte portb=6
#byte portc=7
#define RETARDO 24 //El retardo entre saltos de PWM es un multiplo de 4.
#define DELTA_DUTY 100
long duty=1000;
main()
{
set_tris_c(0);
portc=0;
setup_timer_2(T2_DIV_BY_16,255,16); //Periodo PWM 4 ms
while(TRUE)
{
setup_ccp2(ccp_pwm);
for(duty=1000;duty>0;duty-=DELTA_DUTY)
{
set_pwm2_duty(duty);
delay_ms(RETARDO);
}
set_pwm2_duty(duty);
delay_ms(1000);
for(duty=0;duty<1000;duty+=DELTA_DUTY)
{
set_pwm2_duty(duty);
delay_ms(RETARDO);
}
set_pwm2_duty(duty);
delay_ms(1000);
}
}
[/b]