No enteindo cual es tu pregunta, o que queres hacer, que esperas recibir del lado de la PC ?, por que no enviar el float directo a la PC y que este se encarge de "modificarlo"
Sino lo que podes hacer es usar el sprintf() para pasar el float a string, y enviar el string. Ademas no recuerdo si CCS y XC8 se manejan con el formato IEEE 754, o tiene su propio formato. Por que recuerdo si no mal recuerdo para facilitar el calculo en los micros vi en un documento de Microchip que tenian en otro lugar el bit de signo.
el inconveniente que tengo es que solo he logrado enviar los datos del sensor de temperatura MLX90614 al PC sin decimales
Es que al enviar los 4 bytes que conforman el float, estas enviando el exponente, el signo y la mantisa. En resumen estas enviando todo, tal ves luego en la PC no estas armandolo bien.
CCS usa el estilo de Microchip (32bits), segun el manual de CCS, para que se entienda:
IEEE 754 ( lo que manejan las PC y esta normalizado ) :
+-+--------+-----------------------+
|S| Exp | Mantisa |
+-+--------+-----------------------+
31 30 23 22 0
Microchip/CCS:
+--------+-+-----------------------+
| Exp |S| Mantisa |
+--------+-+-----------------------+
31 24 22 0
Y que tal ves por eso no puedas hacer una conversion directa, como para ponerlo en el "float" de la PC.
Las razones para usar el modelo de Microchip son obvias, el exponente es de 8 bits y entra en un registro justo de esa forma. Pero podrias llegar a tener problemas con la compatibilidad.
EDIT: Me base en el manual de CCS, que muestra que:
1 : 0x7F 0x00 0x00 0x00
-1: 0x7F 0x80 0x00 0x00
Segun el manual de XC8, este cumple con el IEEE 754, como es el unico que posee y puedo probar, decidi probarlo y si, en la version de 32bits cumple con el formato IEEE 754, que qeuda:
1 : 0x3F 0x80 0x00 0x00
-1: 0xBF 0x80 0x00 0x00