if (input (PIN_B0))
posicion1();
if (input (PIN_B1))
posicion2();
if (input (PIN_B2))
posicion3();
if (input (PIN_B3))
posicion4();
if (input (PIN_B4))
posicion5();
if (input (PIN_B5))
posicion6();
if (input (PIN_B6))
posicion7(); if (input (PIN_B0))
posicion1();
else
if (input (PIN_B1))
posicion2();
else
if (input (PIN_B2))
posicion3();
else
if (input (PIN_B3))
posicion4();
else
if (input (PIN_B4))
posicion5();
else
if (input (PIN_B5))
posicion6();
else
if (input (PIN_B6))
posicion7();Varios fallos:
- En el PIC de PROTEUS tienes 1Mhz y deben ser 4Mhz
- Las variables las tienes como int, así no te funcionará ya que 20000 no le entra. Declaralas cono globales y tipo long
- Para que funcione un servo debes de estar contínuamente enviando el pwm. Tú no lo haces en el primer posicion4(); En el while(1) debes de estar contínuamente apretando los pulsadores, tenlo en cuenta.
- Debes de poner resistencias a tierra con todos los pulsadores, para que en el estado de reposo tome un cero en las entradas.
- Como ya te han indicado con delays no es la mejor solución para controlar un Servo ya que el micro no puede hacer otras cosas.
- Como ya te han indicado con delays deberás corregir la posición de los Servos ya que no va a salir exacto.
Un saludo