www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik In Bascom einen Single in vier Bytes zerlegen


Autor: Niels Keller (niels-k)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich versuche mich gerade daran die beiden Datentypen Single und Integer 
in Bytes zu zerlegen, damit ich diese auf einen EEPROM speichern kann.

Das Ganze mache ich in Bascom.

Die Zerlegung eines Integers in zwei Bytes war kein Problem: In Low und 
Highanteile aufspalten. Diese 2 Bytes abspeichern, als Bytes wieder 
auslesen und anschließend mit High*256+Low wieder zum Integer 
zusammensetzen.

Wie aber geht das bei einem Single?
Das Komma kann an einer beliebigen Stelle liegen und somit würde ein 
Aufspalten mit Frac oder Int nicht viel bringen, da somit die Präzision 
sinken würde. Ich möchte aber verlustfrei konvertieren.

Hat einer eine Idee oder eine Lösung?

Autor: Bauteiltöter (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi,

ich habe eine Idee. Das müsste mit Overlayvariablen gehen.

Also

Dim S as single
Dim S_1 as byte at +1 s overlay
Dim S_2 as byte at +2 s overlay
Dim S_3 as byte at +3 s overlay
Dim S_4 as byte at +4 s overlay

Dabei ist dan S der Single und S_1 bis S_4 sind die 4 Bytes des Singles.

Aber ich weiß jetzt nicht ob das vom Syntax her richtig ist, da müsstest 
du nochmal in die Hilfe schauen.

MfG

Autor: Niels Keller (niels-k)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> Aber ich weiß jetzt nicht ob das vom Syntax her richtig ist, da müsstest
> du nochmal in die Hilfe schauen.


An eine solche Vorgehensweise hatte ich auch gedacht: Die Frage ist nur 
wie lautet der korrekte Syntax?

Ich habe es mal mit
dim Sbyte[4] as byte
dim Single_zahl as single at SByte overlay
probiert. Leider wird das vom Compiler nicht akzeptiert.

Oder war das anders gemeint?

Autor: Niels Keller (niels-k)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Es sind runde und keine eckigen Klammern - mmmmhhhh

Also:
dim Sbyte(4) as byte
dim Single_zahl as single at SByte overlay

Jetzt mal schauen, was ich damit anfangen kann - also wie ich es wieder 
zusammensetze.

Autor: Bauteiltöter (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
so ist es natürlich viel einfacher.
Das zusammensetzen ist genauso einfach. Du schreibst einfach die 4 Bytes 
in Sbyte und fertig. ;)

Autor: Niels Keller (niels-k)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Bauteiltöter wrote:
> so ist es natürlich viel einfacher.
> Das zusammensetzen ist genauso einfach. Du schreibst einfach die 4 Bytes
> in Sbyte und fertig. ;)

Vielen Dank.

Problem vollständig gelöst - was da war ein Problem ;-)

also genau wie beschrieben bin ich vorgegangen:
Sbyte(1)=s1
Sbyte(2)=s2
Sbyte(3)=s3
Sbyte(4)=s4

wobei s1 bis s4 Variablen vom Typ byte sind. Diese verändern dann die 
eigentliche Variable Single_zahl.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.