www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Hilfe beim Zusammenfügen zweier Bytes


Autor: oynix (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi,

wie kann ich die beiden Integer d0=12 und d1=34 zu dg=1234 
zusammenfügen?

Das eine ist das Low- das andere das High-Byte.

Danke für die Hilfe!

Autor: Gast (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
dg = d1 + (d0*10)

Wie wäre es damit?

Autor: Uwe ... (uwegw)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
dg=d0*255+d1;
oder
dg=(d0<<8)+d1;

Autor: 1.8T-Passat (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Variable = Low;
Variable += High<<8;

Autor: oynix (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
h... also wenn ich dg = d1 + (d0*10) oder dg=d0*255+d1 mit dem 
Taschenrechner berechne, kommt nicht 1234 raus.

Autor: Gast (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
h... dann versuchs doch mal mit *100
Ist ja nicht soo schwer.

Was passiert wenn d1=101 ?

Autor: oynix (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ich habe es jetzt mal mit die Variante von  1.8T-Passat  benutzt. Die 
funktioniert auch ganz gut.

Ein Problem habe ich aber noch:

wenn d0 den Maximalwert eines Bytes, also 255 annimmt, kann der Wert von 
dg maximal 255255 betragen.

Ich möchte bei einer Funktion 20 Sekunden warten, übermittle aber 20.000 
Millisekunden. Das ganze Rechne ich in Hexadezimalzahlen um (0x4E20) und 
Übertrage als d0 = 0x4E und als d1 = 0x20. Damit funktioniert noch 
alles.

Möchte ich aber 70 Sekunden warten, ist der Hex-Wert = 0x11170. Das 
verstehe ich nicht ganz, denn eigentlich müsste es ja bis 255255 (dez) 
noch einen 4-stelligen Hex-Code geben.

Autor: Lasse S. (cowz) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Nein!

Großes Missverständnis von Hex zu Dec Umrechnungen...

0xFFFF ist nicht 255255, sondern
0xFFFF (hex) = 65535 (dec)

Das Umwandeln kann sogar Google ("0xFFFF to decimal").


Gruß,
Lasse

Autor: oynix (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
stimmt, war ein Fehler. der größte zu übertragende Wert in Millisekunden 
ist also 65535 (dec).

Aber wenn ein Byte bis zu 255 groß sein kann, und ich schiebe zwei von 
denen zusammen, warum ist das dann weniger als 255255?

Autor: holger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>warum ist das dann weniger als 255255?

Weil du in Mathe nicht aufgepasst hast.

Autor: spess53 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
HI

>Aber wenn ein Byte bis zu 255 groß sein kann, und ich schiebe zwei von
>denen zusammen, warum ist das dann weniger als 255255?

Dann mach das mal in Hex: $FF und $FF gibt $FFFF -> 65535

MfG Spess

Autor: Martin K. (spyro07)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
die verschiedenen bitkombinationen belaufen sich in einem Register auf 
256. da du 2 davon hast heist das dann 256*256 = 65535

Autor: Walter (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
256*256 = 65535 ????

Autor: spess53 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi

>die verschiedenen bitkombinationen belaufen sich in einem Register auf
>256. da du 2 davon hast heist das dann 256*256 = 65535

Nö. 0..255. Aber 255*256+255=65535.

MfG Spess

Autor: Uwe ... (uwegw)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Walter schrieb:
> 256*256 = 65535 ????
Nein, 256*256 = 65536.

Es gibt bei 16bit insgesamt 65536 mögliche Bitkombinationen, 
entsprechend den Zahlen von 0 bis 65535.

Autor: DRJ (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
0x0000 = 0 (+1)
0x0001 = 1

0x000F = 15 (+1)
0x0010 = 16

0x00FF = 255 (+1)
0x0100 = 256

0x0FFF = 4095 (+1)
0x1000 = 4096

0xFFFF = 65535

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.