Hola Sandra
pues has tenido el mismo problema que yo

. La cosa esta en que los float no admiten operación bitwise esto es operaciones que afecten bit a bit. Veo que andas haciendo el mismo código que yo.
La solución si no puedes con el enemigo unetele, asi que el shift es lo mismo que dividir por dos y el not en caso de que necesites tambien negativos es 255- lo que lees. asi lo he dejado yo y como veo estas haciendo lo mismo te quedara apenas preciso.
OWRITE DQ0, 1, [$CC, $44] ' Send Calculate Temperature command
REPEAT
DELAYMS 25 ' Wait until conversion is complete
OREAD DQ0, 4, [C0] ' Keep reading low pulses until
UNTIL C0 <> 0 ' the DS1820 is finished.
OWRITE DQ0, 1, [$CC, $BE] ' Send Read ScratchPad command
OREAD DQ0, 2,[Temp0L,Temp0H, C0, C0, C0, C0, C0, CPerD0]
if temp0l.0=1 then 'revisa si se tiene el valor adicional de 0.5 grados dado por s^-1
temp=0.5
else
temp = 0
endif
if temp0H = 0 then
' Calculate the temperature in degrees Centigrade
Temp0L = (temp0l/2)+ temp
temp0l = temp0l -0.25
temp = (CPerD0 - C0)
temp = temp/CPerD0
temp0l = temp0l + temp
PRINT AT 1,1, "+",DEC2 Temp0l , AT 1,8,"C"
else
temp0l = (255-temp0l)+1
' Calculate the temperature in degrees Centigrade
Temp0L = (temp0l/2) +temp
temp0l = temp0l -0.25
temp = (CPerD0 - C0)
temp = temp/CPerD0
temp0l = temp0l + temp
PRINT AT 1,1, "-",DEC2 Temp0l , AT 1,8,"C"
endif
lo hice separado porque el float exige que sea asi de ponerlo todo en una sola línea también tendrás error. ESpero te sirva y le sirva a los demás.
PD: esto fue para protón. Temp es una variable temporal adicional, para las operaciones intermedias.