hola suky te comento que ya me esta funcionando el PWM, pero ahora tengo el siguiente dilema. al presionar el boton de incremento (a++) varia al ancho de pulso pero solo un poco, osea lo varia pero llega a un punto que se queda estancado y regresa x veses mas atras y no me deja seguir avansando con mi PWM, bueno te dej oel codigo otra vez y te mando el proteus = saludos y muchisimas gracias por la gran ayuda de verdad gracias
#include <16F877a.h>
#device adc=10
#FUSES NOWDT, HS, NOPUT, NOPROTECT, BROWNOUT, NOLVP, NOCPD, NOWRT
#use delay (clock=20000000) //Fosc=20Mhz
#define use_portb_lcd TRUE //definir portb lcd
#include<lcd.c> //libreria manejo lcd
///PROGRAMA
void main(void)
{
int16 a=0,b=0;// para duty cycle del 50%
lcd_init(); //inicializa lcd
setup_ccp1(CCP_PWM); //ccp1 modo PWM
setup_ccp2(CCP_PWM); //ccp2 modo PWM
setup_timer_2(T2_DIV_BY_16, 155, 1);
while(TRUE){
if(!input(PIN_A1)){ //¿se ha pulsado el boton?
do{ //SI -> eliminar...
}while(!input(PIN_A1)); //...rebotes del boton
a--;
}
if(!input(PIN_A0)){ //¿se ha pulsado el boton?
do{ //SI -> eliminar...
}while(!input(PIN_A0)); //...rebotes del boton
a++;
}
set_pwm1_duty(a); // Ciclo de trabajo al 100% a=625
set_pwm2_duty(b); // Ciclo de trabajo al 100% a=625
}
}