TODOPIC

Microcontroladores PIC => Lenguaje C para microcontroladores PIC => Mensaje iniciado por: Billosin en 23 de Enero de 2009, 19:05:56

Título: CSS - Warning 203 ?!
Publicado por: Billosin en 23 de Enero de 2009, 19:05:56
Hola a todos,

Tengo una consulta.
Usando el PCWH de CCS version 4.038 para compilar un codigo simple de un ciclo for de 0 a 255 para el PIC16F628a me aparece el siguiente "warning":

Citar
>>> Warning 203 "prueba.c" Line xx(1,1): Condition always TRUE

0 Errors, 1 Warnings

El código con problemas es:

Citar
int i;
  for(i=0; i<=255; i++)
     output_low(PORT_B0);

La advertencia la indica en la línea donde está el for.

Lo curioso es que si el ciclo lo dejo como i=0; i<=254; i++, por ejemplo, compila correctamente.

A alguien le ha pasado algo similar?  :shock:

Muchas gracias y saludos
Título: Re: CSS - Warning 203 ?!
Publicado por: migsantiago en 23 de Enero de 2009, 19:10:32
Los int de CCS se declaran como unsigned int de 8 bits, por lo que abarcan de 0 a 255. Cuando la variable i llega a 255 empieza en cero de nuevo, por lo que tu FOR siempre es cierto, i siempre será menor o igual a 255.

Cuando cambias el FOR a 254, la condición sí cambia cuando i vale 255.

Puedes corregir el problema cambiando i a int16 o signed int.

Título: Re: CSS - Warning 203 ?!
Publicado por: jim_17 en 23 de Enero de 2009, 20:44:42
Efectivamente sucede lo que dice migsantiago, es como si estuvieses poniendo un while (1){código...}, si quieres que haga tu codigo 255 veces, tienes que quitar el 2=" y poner for(i=0;i<255;i++) o poner for(i=0;i<=254;i++). Que alguien me corrija si estoy equivocado, pero el codigo posteado, si se hubiera basado sobre una variable "i", que pudiera tomar más valores, el la acción for(i=0;i<=255;i++){código...}, la parte de "código" la haria 256 veces.

Salu2 compañero.
Título: Re: CSS - Warning 203 ?!
Publicado por: Billosin en 27 de Enero de 2009, 17:09:15
Estimados,

Muchas gracias por las respuestas.
Mmmm... igual hay que tener cuidado al usar un ciclo for de 0 a 255 en el CCS C.  Creo que pasaria algo similar con un ciclo de 0 a 65535 usando INT16...

Saludos