Microcontroladores PIC => Todo en microcontroladores PIC => Mensaje iniciado por: Joshuegp en 05 de Abril de 2020, 21:11:02
Título: Quiero ingresar condiciones utilizando "switch case" pero tengo errores.
Publicado por: Joshuegp en 05 de Abril de 2020, 21:11:02
Hola,
Estoy tomando los valores de un ADC, para ello colocar condiciones sin usar los "if" , ni "else if" y así sucesivamente. Por ello, opté por usar el "switch case", pero estoy teniendo demasiado errores, quisiera saber si alguien ha trabajado con ello y si podrían indicarme cual es la manera correcta o, cómo podría ser la forma adecuada. Dejo la parte del código:
float Vin; int estadoSW;
.........
estadoSW =Vin; switch(estadoSW){ case (Vin>=0)&&(Vin<0.625): // en vez de colocar "case 1" quiero colocar condiciones "case (condición)". XLCDgotoXY(1,0); putcXLCD(0); __delay_ms(500); break;
Y la falla que me aparece es la siguiente:
error: (188) constant expression required
Muy agradecido por el apoyo.
Título: Re:Quiero ingresar condiciones utilizando "switch case" pero tengo errores.
Publicado por: KILLERJC en 05 de Abril de 2020, 22:39:45
Citar
error: (188) constant expression required
Algunas cosas que necesitas saber del switch..case
Solo números sin signo y enteros. Y los case son valores fijos... Ejemplo:
Código: C
switch(estados)
{
case1:
case2:
case3:
default:
}
Podes observar que en los case, son valores FIJOS, y no algo a evaluar como vos escribiste:
case (Vin>=0)&&(Vin<0.625):
Si queres separarlo cada 0.625 entonces podrias hacer:
Código: C
estadoSW = Vin/0.625;
switch(estadoSW){
case0://entre 0 y 0.625
case1:// entre 0.625 inclusive y 1.25
case2:// entre 1.25 inclusive y 1.875
default:// Caso que no esta incluido en los anteriores.
}
Título: Re:Quiero ingresar condiciones utilizando "switch case" pero tengo errores.
Publicado por: Joshuegp en 05 de Abril de 2020, 22:59:12
Citar
Si queres separarlo cada 0.625 entonces podrias hacer:
Estimado, muy agradecido. Me resultó excelente dicha solución.
Citar
case (Vin>=0)&&(Vin<0.625):
Ahora, si tengo varias condiciones y ya no son correlativas, solo me quedaría usar las condición "if", "else if" o hay algún otro método o condiciones para evitar el uso de estos, ya que los "switch(case)" no evaluan.
Gracias.
Título: Re:Quiero ingresar condiciones utilizando "switch case" pero tengo errores.
Publicado por: KILLERJC en 06 de Abril de 2020, 00:13:48
No te queda mas que usar if/else.
Aunque podés inventar algo con un for y un if, pero no sé si sería más sencillo.