TODOPIC
Microcontroladores PIC => Lenguaje C para microcontroladores PIC => Mensaje iniciado 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
-
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 !!
-
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
-
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...
-
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