este es un programa para mover un motor si se preciona un pulsador se mueve a to velocidad y se preciona otro acelera lentamente y se perciona otro es pause y con otro desaselera y con otro para no funciona bien que opinan
#include <16f877a.h>
#use delay(clock=4000000)
#fuses hs
#include <lcd.c>
#byte port_c=7
#byte port_b=6
int c,a=0,b=255;
void rapido();
void rapidicimo();
void iniciar();
void parar();
void pause();
void decrementar1();
void iniciar(){
lcd_init();
setup_ccp1(ccp_pwm);
setup_timer_2(t2_div_by_1,255,1);
set_pwm1_duty(0);
port_b=(0b111111);}
main(){
iniciar();
while(true){
c=port_b;
a=port_c;
if(c==16){
rapido();}
if(c==2){
rapidicimo();}
if(c==4){
parar();}
if(c==8){
pause();}
}
if(c==1){
decrementar1();}}
void rapido(){
while(true){
delay_us(100);
lcd_gotoxy(1,1);
a++;
printf(lcd_putc,"velocidad:%u",a);
set_pwm1_duty(a);
c=port_b;
if(c==4){
parar();}
if(c==8){
pause();}
}}
void rapidicimo(){
while(true){
lcd_gotoxy(1,1);
lcd_putc("velocidad max"
;
set_pwm1_duty(255);
c=port_b;
if(c==4){
parar();}
}}
void parar(){
while(true){
lcd_gotoxy(1,1);
lcd_putc("Parar "
;
set_pwm1_duty(0);}
}
void pause(){
while(true){
lcd_gotoxy(1,1);
lcd_putc("pause "
;
set_pwm1_duty(a);}
}
void decrementar1(){
while(true){
lcd_gotoxy(1,1);
lcd_putc("decrementar "
;
set_pwm1_duty(b);
b=b--;}
}