Segun veo de pasada en tu codigo que tu lees el adc lo divides por 2 luego lo alamacenas en una variable tipo float y finalmente comparas sino estoy equivocado.
Lo que yo digo es que leas el adc lo cargas el valor en un long, despues comparas con los otros long y de alli mandas a activar el pin que desees y luego el long que quieras utilizar del resultado de la comparacion los pasas a float para por ejemplo presentarlo en la lcd
El uso de float para realizar comparaciones no es aconsejable por la falta de presicion de estos y porque ademas para el pic es desastrozo porque se come la memoria.
Otra solucion ya algo desesperada usar un co prosesador matematico que haga el trabajo sucio
de la comparaciones con float si es que se puede
Nota: el enlace que te deje explica el porque no usar o como usar los float con un truquito
Se me prendio el bombillo
Y si en vez de hacer esto:
if ((float)temperaturadecimal < temperatura1)
output_high(pin_B0);
else
output_low(pin_B0);
Haces esto:
if (((float)temperaturadecimal - temperatura1)<0)
output_high(pin_B0);
else
output_low(pin_B0);
Que te parece
Saludos