habe mal eine Struktur daraus gemacht, wie es im Programm aussehen könnte. Noch nicht getestet.

Code:
Dim Vorzeichen As Integer
Dim Exponent As Integer
Dim Ergebnis As Single
Dim Fertig As Bit
Dim Zähler As Byte                 '***** Feldzähler
Dim Zeichen(4) As Byte
Dim Temp As Byte
Dim Sendeanforderung As String * 1

Const True = 1
Const False = 0


On Urxc Hole_bytes

Enable Interrupts

Main:

Sendeanforderung = "!"
Do
  '..
  '..
  '**** Aufforderung zum Senden
  Printbin Sendeanforderung   '**** ohne Chr(10) und Chr(13)
  '**** Sender sendet nun
  '***** eventuell nur temporär einschalten, falls noch andere Interrupts laufen
  'enable urxc
  i=1 '**** Feldzähler initialisieren
  While Fertig = True
      '***** geht in Bascom nicht in einer Zeile!
      '***** braucht man wahrscheinlich Integer-Variablen für die Zwischenwerte
      '***** muss ich noch klären
      Ergebnis = Zeichen(2) * 65535 + Zeichen(3) * 256 + Zeichen(4)
      Ergebnis = Ergebnis / 8388480       '**** warum?
      Ergebnis = Ergebnis * 2 ^ Exponent
      Ergebnis = Ergebnis * Vorzeichen
      Print Ergebnis
      Fertig = False
  Wend
  'disable urxc

Loop

End

Hole_bytes:
Temp = Udr                    '**** 1 Zeichen aus Register empfangen, ist ascii
Select Case Zähler
    Case 1
        If Temp.7 = 1 Then    '**** größer 128
          Vorzeichen=-1
          Exponent = Temp - 128
          Exponent = Exponent * 2
        else
          Vorzeichen = 1
          Exponent = Temp * 2
        endif
        Zeichen(zähler) = Temp
        Incr Zähler
    Case 2
        If Temp.7 = 1 Then
            Incr Exponent
        Else
            Zeichen(Zähler) = Temp + 128       '**** du hast chr(..), warum?
        End If
        Exponent = Exponent - 128
        Incr Zähler
    Case 3 To 4
         Zeichen(zähler) = Temp
         Incr Zähler
         Fertig = True
End Select

Return
Auf dieser Basis lässt sich vielleicht weiterarbeiten.