habe mal eine Struktur daraus gemacht, wie es im Programm aussehen könnte. Noch nicht getestet.
Auf dieser Basis lässt sich vielleicht weiterarbeiten.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







Zitieren

Lesezeichen