con este programilla controlo la velocidad de rotacion del motor del rotor 250 W con pwm espero que te ayude
#include "C:Archivos de programaPICC876rotor876rotor.h"
#use delay(clock=20000000)
#define dcha PIN_B1
#define izda PIN_B2
#define inversor PIN_C2
#define velocidad PIN_A4
#define led PIN_C3
long int duty;
int1 led1;
output(led);
void main() {
set_tris_b (0xFF);
// port_b_pullups(TRUE);
setup_adc_ports(ALL_ANALOG);
setup_adc(ADC_CLOCK_DIV_2);
setup_spi(FALSE);
setup_ccp2(CCP_PWM); // Configure CCP1 as a PWM
setup_timer_2(T2_DIV_BY_16, 127, 1);
while(1){
//calcular el duty del PWM
set_adc_channel( 4 );
duty=read_adc();
duty*=2;
delay_ms(20);
set_pwm2_duty(duty);
/////
led1=~led1;
output_bit(led,led1);
meta1:
if (input(dcha)){
output_low(inversor);
delay_ms(10);
duty=read_adc();
duty*=2;
delay_ms(5);
set_pwm2_duty(duty);
goto meta1;
}
if (input(izda)){
output_high(inversor);
delay_ms(10);
duty=read_adc();
duty*=2;
delay_ms(5);
set_pwm2_duty(duty);
goto meta1;
}
set_pwm2_duty(0);
output_low(inversor);
}
}