#include "16f877.h"
#DEVICE ADC=10
#fuses PROTECT
#use delay(clock=4M)
int16 duty=0,old=0,new,diff,W;
#int_ccp1
void lecture()
{
new=get_capture(1);
diff=new-old;
old=new;
}
void main()
{
set_tris_c (0xFB);
setup_timer_2 ( T2_DIV_BY_16, 249, 2) ;
setup_timer_1 ( T1_INTERNAL | T1_DIV_BY_4 );
setup_ccp2(CCP_PWM);
setup_ccp1(CCP_CAPTURE_RE);
set_pwm2_duty(duty);
setup_adc(ADC_CLOCK_INTERNAL|ADC_CLOCK_DIV_2);
set_analog_pins(AN0);
set_adc_channel(0);
delay_us(10);
enable_interrupts(INT_CCP1);
enable_interrupts(GLOBAL);
while(true)
{
duty=1000.0*read_adc()/1023;
set_pwm2_duty(duty);
W=625000/diff;
}
}