TODOPIC
Microcontroladores PIC => Lenguaje C para microcontroladores PIC => Mensaje iniciado por: Duende_Azul en 11 de Julio de 2011, 18:33:18
-
Saludos amigos... Estoy portando un código escrito en pascal (Mikropascal específicamente) a C (ccs) y me encuentro con esta situación:
En Pascal :
case Rc6_EdgeCount of
1: if Rc6_Time > Rc6_LEADER_TIME_BOUNDARY then Rc6_Error := false;
2: if Rc6_Time < Rc6_LEADER_TIME_BOUNDARY then Rc6_Error := false;
3,5,6,7,8: if Rc6_Time < Rc6_TIME_BOUNDARY then Rc6_Error := false;
4: if Rc6_Time > Rc6_TIME_BOUNDARY then Rc6_Error := false;
end;
Como pueden ver, esto equivale a un switch en C pero aquí hay 5 condiciones que hacen lo mismo (3,5,6,7,8) y no es necesario escribir 5 veces la misma cosa. La pregunta es.. en CCS se puede hacer eso mismo? Ya probé con la coma, el punto y coma, los dos puntos y no me compila.
-
si esas son tus unicas combinaciones posibles, puedes declarar las opciones 1,2 y4 , y las otras que hacen lo mismo ponerlas como default.
switch(Rc6_edgecount)
{
case 1:
//accion 1
break;
case 2:
//accion 2
break;
case 4:
//accion 4
break;
default:
//accion de 3,5,6,7 y 8
break;
}
-
Gracias por responder pero luego hay más opciones.. buscando por aquí y por allá me encontré con que es así:
case 3:
case 5:
case 6:
case 7:
case 8:
if (Rc6_Time < Rc6_TIME_BOUNDARY) Rc6_Error = false;
break;
al menos compila..
-
al menos compila..
Es una opción valida...
Saludos!
-
Gracias por responder pero luego hay más opciones.. buscando por aquí y por allá me encontré con que es así:
case 3:
case 5:
case 6:
case 7:
case 8:
if (Rc6_Time < Rc6_TIME_BOUNDARY) Rc6_Error = false;
break;
al menos compila..
eso debe funcionar, si entra a cualquier caso de estos se va a seguir hasta encontrar el break