Si el dato no es un string lo podés manejar tranquilamente.
Osea, recibir 0xff o 255 o 0b11111111 es lo mismo.
long x;
int hi,lo;
x = make16(hi,lo);
Partamos de la base que toda transmisión por I2C se hace en bloques de 8 bits.
Yo no uso CCS así que no sé como trabaje dicho compilador con respecto al I2C. De todas maneras para generar una variable de 16 bits (que sería lo que vos querés hacer al unir los dos datos) creo que existe la función make16, tendrías que ver en la ayuda del CCS. y sino recurrir a lo siguiente.Código: C
int16 resultado; int8 dato2; int8 dato3; resultado = (dato2 * 256) + dato3;
En CCS se utiliza la función make16, que se encarga de convertir datos de 8 bits (char o int) a datos de 16 bits, para ello puedes utilizar lo siguiente.Código: [Seleccionar]long x;
int hi,lo;
x = make16(hi,lo);
Por ejemplo si:
hi=0x10
lo=0x03
Entonces
x=0x1003
Puedes leer un poco más en la ayuda de CCS
No entiendo. Para hacer cálculos matemáticos es indistinto si los tenés en HexaDecimal o en Decimal. Da lo mismo hacer 0xFF + 128 que 255 + 128.