www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Wie am besten 2x8bit in 16bit und danach in Dezimal umwandeln mit Bascom?


Autor: Gregor (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

ich bekomme über uart zwei mal 8bit, also zwei bytes zugesendet.

Daraus muss ich ein 16 bit byte herstellen. das geht ja indem man die 
binären zahlen von den zwei bytes zusammenzählt, also einfach 
hintereinander schreibt.

Wie mache ich dann aus den 16 bits eine Dezimalzahl?

Also theoretisch weis ichs ja, aber ich muss das in Bascom 
programmieren.

Kann mir da jemand ein paar tips geben?

Gibt es in Bascom einen Befehl, mit dem das umrechnen funktioniert?

Danke

Gregor

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Gregor wrote:

> Daraus muss ich ein 16 bit byte herstellen. das geht ja indem man die
> binären zahlen von den zwei bytes zusammenzählt, also einfach
> hintereinander schreibt.

Was soll das Hintereinanderschreiben bewirken?
Garnichts.
Du mußt eine Operation durchführen:

wert = highbyte * 256 + lowbyte



> Wie mache ich dann aus den 16 bits eine Dezimalzahl?

Garnicht, Zahlen werden CPU-intern immer binär gespeichert.

Du mußt sie einfach nur ausgeben, dabei erfolgt automatisch die 
Umwandlung.


Peter

Autor: Gregor (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Peter,

entschuldige ich bin noch Anfänger und verstehe das noch nicht wirklich.

Ich habe mir folgendes gedacht:

ich bekomme zb. 2 bytes (aus einem String) zugeschickt: 38 und 34

Die sind ja in Binär geschrieben: 00100110 und 00100010

Und wenn ich die zwei hintereinanderschreibe dann folgt 
0010011000100010.

Dies wiederum in Dezimal lautet:9762

Und genau dass muss ich irgendwie in Bascom realisieren.

Autor: Thomas O. (kosmos)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
8 + 8 bits =  9 bits
8 x 8 bits = 16 bits

2x 8 bits zu übertragen brauchst du nur wenn du das ganze 
auseinanderhalten willst ansonsten addierst du das ganze in dem Fall 
reichen sogar 7 bit aus.

00100110
00100010
---------
01001000

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wenn es ASCII-Zeichen sind, dann mußt Du erstmal '0' abziehen, um den 
Zahlenwert zu erhalten und dann als Zehnerpotenzen zusammenführen:

wert = (Zehner - '0') * 10 + Einer - '0'


Peter

Autor: HildeK (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>ich bekomme zb. 2 bytes (aus einem String) zugeschickt: 38 und 34
>Die sind ja in Binär geschrieben: 00100110 und 00100010
>Und wenn ich die zwei hintereinanderschreibe dann folgt
>0010011000100010.
>Dies wiederum in Dezimal lautet:9762
>Und genau dass muss ich irgendwie in Bascom realisieren.

Mach genau das, was Peter Danneger geschrieben hat:

38*256 + 34 = 9762
Ich verstand dich so, dass du genau dieses Ergebnis haben willst.

Autor: John Small (linux_80)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wenn man schon Bascom hat, sollte man doch auch Makeint verwenden ;-)
zB.
Dim I As Integer
I = Makeint(uartbyte1 , uartbyte2)
man muss nur wissen welches Byte das 1. und welches 2. ist.
Dann kann man mit I weitermachen.

Autor: Gregor (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Danke Leute,

ihr seit die besten, stand ziemlich auf der Leitung ;o)

Gregor

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.