Hola a todos, un cordial saludo, bueno me surgió un problema al momento de poner el PWM en mi código. Estoy implementando el control de un motor DC con PWM el cual tiene 6 pulsadores (arranque, paro, sentido de giro y velocidad) pero al momento de poner el PWM no responde ningún pulsador y siendo sincero no soy muy bueno programando y pues espero alguien me pueda hacer saber mi error. Aquí esta el código y la simulación de como lo estoy conectando:
Código:
#include <16F877A.h>
#fuses XT, NOWDT, NOPROTECT, BROWNOUT, NOPUT,
#use delay(clock = 4000000)
void main()
{
output_low(PIN_C2);
setup_ccp1(CCP_PWM);
setup_timer_2(T2_DIV_BY_16, 124, 1);
set_pwm1_duty(0);
delay_ms(1000);
long ciclo=0;
while(1){
if(input(PIN_A0)){
ciclo++;
delay_ms(10);
if(ciclo>254)
ciclo=255;
}
if(input(PIN_A1)){
if(ciclo>0){
ciclo--;
delay_ms(10);
}
set_pwm1_duty(ciclo);
delay_ms(10);
}
set_tris_A(0b111111);
set_tris_B(0b00000000);
output_B(0b00000000);
{
input_A();
if ((input(pin_A2)==1) ){
x=1;
}
if ((input(pin_A3)==1) & (x==1 || x==3)){
x=2;
}
if ((input(pin_A4)==1) & (x==2) ){
x=3;
}
if ((input(pin_A5)==1) ){
x=4;
}
if(x==1){
output_high(PIN_B2);
output_low(PIN_B3); // enciende el motor y gira a la derecha
}
if(x==2){
output_high(PIN_B3);
output_low(PIN_B2) ; // gira hacia la izquierda
}
if(x==3){
output_high(PIN_B2);
output_low(PIN_B3); //GIRA HACIA LA DERECHA
}
if(x==4){
output_low(PIN_B2);
output_low(PIN_B3); //paro
x=0;
}
}
}
}
Adjuntos
Última edición por un moderador: