TODOPIC
Microcontroladores PIC => Lenguaje C para microcontroladores PIC => Mensaje iniciado por: lenders75 en 09 de Febrero de 2015, 12:18:00
-
Hola
Estoy intentando visualizar la lectura en voltios que me envia el XBEE en el LCD. Por ejemplo,recibo del XBEE Buffer [18]=00 y Buffer[19]=83 en hexadecimal . Esto le correpondería a una lectura de 0.15 v. Yo tendría que concatenralo auna variable para poder operar con ellos, me tendiía que quedar asi Prueba=0083. La pregunta es que no se como hacerlo.
#include <string.h> // incluyo esta libreria para la funcion strcat
float Tension;
char buffer[22]; // aqui recibo todo la trama del xbee
char prueba1;
char prueba2;
prueba1=buffer[18];
prueba2=buffer[19];
strcat(prueba1,prueba2);
tension=(float)prueba1*1.2/1023;
lcd_gotoxy(1,1);
printf(lcd_putc, "%X,%X,%X, %f" ,prueba1,buffer[18],buffer[19],tension );
Puse la parte del código que necesito para esto. Lo probe en la placa y me muestra unicamente las lecturas del XBEE. ME SALE 00, 00,83, 0.0
Alguien sabe como hacerlo.
-
es que no es un string para que uses strcat. Son 2 numeros.
int16 Prueba = (Buffer[18] << 8 ) + Buffer[19];
-
es que no es un string para que uses strcat. Son 2 numeros.
int16 Prueba = (Buffer[18] << 8 ) + Buffer[19];
Lo intente como me dices pero me visualiza 10 02 10 0.01 , el 02 10 corresponde a la lectura que me manda la trama y el primer 10 es la variable prueba que debería ser 0210 y me tendria que dar una lectura de 0.620
int16 Prueba;
float Tension;
Prueba = (Buffer[18] << 8 ) + Buffer[19];
tension=(float)Prueba*(1.2/1023);
lcd_gotoxy(1,1);
printf(lcd_putc, "%X,%X,%X,%f" ,prueba,lsb,msb,tension );
-
Ahora que me acuerdo CCS tiene la funcion make16()
Prueba = make16(Buffer[18],Buffer[19]);
Y con ese deberia de andar.. Seguro que el que te pase antes no anda por que presupone que es de 8bits, y al rotarlo 8 veces queda en nada. De todas formas es como lo toma el compilador.
Del manual de CCS:
Syntax: i16 = MAKE16(varhigh, varlow)
Parameters: varhigh and varlow are 8 bit integers.
Examples:
long x;
int hi,lo;
x = make16(hi,lo);
-
Ya me funciono con eso, ya me visualiza la lectura en voltios. Muchas gracias.