TODOPIC

Microcontroladores PIC => Lenguaje C para microcontroladores PIC => Mensaje iniciado por: Duende_Azul en 11 de Julio de 2011, 18:33:18

Título: Estructura Switch en CCS
Publicado 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 :

Código: [Seleccionar]
          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.
Título: Re: Estructura Switch en CCS
Publicado por: rivale en 11 de Julio de 2011, 18:41:08
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;
}
Título: Re: Estructura Switch en CCS
Publicado por: Duende_Azul en 11 de Julio de 2011, 18:44:59
Gracias por responder pero luego hay más opciones.. buscando por aquí y por allá me encontré con que es así:

Código: [Seleccionar]
                  case 3:
                  case 5:
                  case 6:
                  case 7:
                  case 8:
                       if (Rc6_Time < Rc6_TIME_BOUNDARY) Rc6_Error = false;
                  break;
 
 

al menos compila.. 
Título: Re: Estructura Switch en CCS
Publicado por: Suky en 11 de Julio de 2011, 19:37:26
al menos compila.. 


Es una opción valida...


Saludos!
Título: Re: Estructura Switch en CCS
Publicado por: rivale en 11 de Julio de 2011, 19:50:22
Gracias por responder pero luego hay más opciones.. buscando por aquí y por allá me encontré con que es así:

Código: [Seleccionar]
                  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