16bit daten byteweise übertragen

Gast #1545382
hallo zusammen

ich möchte 16bit integer Werte über eine serielle Schnittstelle bytweise 
übertragen. Zuerst HighByte dann LowByte. Also muss ich den Integer in 
zwei Char(Byte) "casten" bzw. aus zwei Byte einen Int machen. Gibt es 
eine funktion in der C-Standartbibliothek? Oder kennt jemand einen Weg 
dieses Problem ohne "grossen" Rechenaufwand zu lösen.

danke im voraus
Gast
U8 b1, b2;
U16 bVal;

aufdröseln:
b1 = (U8)(bVal/0x100);
b2 = (U8)(bVal%0x100);


zusammenschrauben:
bVal = (U16)b1;
bVal *= 0x100;
bVal += (U16)b2;
Gast
Du musst dein Integer in 2 Byte "casten". Das Low Byte ist einfach, dass 
high Byte muss noch um 8 nach rechts geschoben werden und schon kannst 
du die Bytes übertragen.

Beispiel:

int data;
byte high_data, low_data;

void .....
{
 low_data = data; // oberer Teil wird einfach abgeschnitten
 high_data = data>>8; // könnte sein, dass das hier nicht funktioniert.
                      // mußt du mal testen.
}
Ich habe dafür diesen Weg bevorzugt:

typedef union abc_t_t{
  USIGN16 _Word;
  struct{
   USIGN8  _low:  8;
   USIGN8  _high: 8;
  }Char;
}abc_t;

************************

abc_t var;

var._Word = 0x1235;

write_serial(var._low);
write_serial(var._high);

LG

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 16 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.