TODOPIC
Microcontroladores PIC => Lenguaje C para microcontroladores PIC => Mensaje iniciado 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":
>>> Warning 203 "prueba.c" Line xx(1,1): Condition always TRUE
0 Errors, 1 Warnings
El código con problemas es:
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
-
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.
-
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.
-
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