TODOPIC

Microcontroladores PIC => Lenguaje C para microcontroladores PIC => Mensaje iniciado por: kain589 en 10 de Abril de 2006, 08:52:43

Título: Variable fuera de rango
Publicado por: kain589 en 10 de Abril de 2006, 08:52:43
Saludos! Estoy intentanto implementar un algoritmo para la recepcion y procesado de datos mediante un mando por infrarrojos a partir de un codigo en basic, creo que mas o menos lo tengo pero me da un fallo el compilador, estoy usando la version de CCs 3.249,el fallo que me da es este:

constant out of the range 51 is not 0..1

Pero no se porque me da este fallo, ya que defino la variable como int1 y le asigno el valor de un pin:

#define sensor_ir PIN_B3
....................
int1 valor = 0;
..................
valor = sensor_ir;

Esta ultima linea es la que me señala cuando me da el error, he probado definiendo valor como int y no da ningun error,  asi que el fallo creo que debe esta en la definicion de sensor_ir¿alguien sabe que puede estar mal?; he subido solo estas lineas para que sea mas facil la lectura pero si veis que hace falta lo subo todo; gracias de antemano
Título: Re: Variable fuera de rango
Publicado por: mirazulado en 10 de Abril de 2006, 10:07:55
tenes que declarar:
#define sensor_ir input(PIN_B3)

valor=sensor_ir;

esto funciona !
cuando utilizas la funcion #define etiqueta valor, lo que le decis al compilador es que cada vez que encuntre la palabra "etiqueta" la reemplace por "valor"... o sea si ponemos:
#define sensor PIN_B3  // sensor es igual a PIN_B3, PIN_B3 es una constante = a 51
valor=sensor;                // nos va a quedar valor=51; esto es un error !!!

#define sensor input(PIN_B3)
valor=sensor                 // nos queda valor=input(PIN_B3) esto si es valido !!!

Un abrazo Mariano !!
Título: Re: Variable fuera de rango
Publicado por: kain589 en 10 de Abril de 2006, 11:15:40
Pues gracias por tu ayuda, ahora despues voy a probarlo, y cuadno consiga que me funcione subire el codigo por si a alguien le es util
Título: Re: Variable fuera de rango
Publicado por: fastyx en 10 de Abril de 2006, 20:56:32
Kain , me parece que el error de out of range esta relacionado con que vos definis un int1 y si el valor es mayor que 1 te va a dar ese error,

fijate que cuando definis solamente int el compilador asume que es int8 con lo que 51 esta dentro del rangoi( int8 va de 0 a 255)

espero haber sido de ayuda...
Título: Re: Variable fuera de rango
Publicado por: kain589 en 11 de Abril de 2006, 05:21:59
Gracias por tu ayuda, valor debe ser una variable de 1bit ya que guarda el bit que ha llegado al detector de infrarrojos; al final el fallo era el que decia mirazulado aunque cosas de la tecnica con ese mismo fallo en la version 3.242 compilaba sin darme error  :shock: aunque no iba el programa