mikrocontroller.net

Forum: Compiler & IDEs Wie splitte ich ein Byte richtig auf?


Autor: Dominik (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,
bräuchte eure Hilfe, zur gunde licgt volgender code in c:

void checkbyte(char c)
{
    if (c & 0b11110000 == hw_GetTWIAddr() )
    {

        printf_P(PSTR("Funktioniert"));
        printf_P(PSTR("%c"), c);
    }
    else printf_P(PSTR("Läuft nicht, falsche Adresse"));
}


die Funktion soll das byte was vom Uart des contrllers kommt (char c) 
aufsplitten und mit einer adresse vergleichen. dabei sollen nur die 
ersten 4 bit verglichen werden. If abfrage...



vielen dank schonmal im vorraus

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Operatorenreihenfolge

> void checkbyte(char c)
> {
>     if ( ( c & 0b11110000 ) == hw_GetTWIAddr() )

Autor: Rufus Τ. Firefly (rufus) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Abgesehen davon, daß C keine binäre Schreibweise à la 0b11110000 kennt*, 
und vielleicht noch 'n Klammerpaar gesetzt werden sollte, wenn man nicht 
nachsehen will, ob & in der Operatorenrangfolge vor == kommt, macht das 
doch in etwas das, was da beschrieben wird.

Und wobei brauchst Du jetzt Hilfe? Rechtschreibung? Fragen Stellen?



*) es gibt ein paar Compiler, die das am Standard vorbei machen, aber 
ratsam ist das dennoch nicht.

Autor: Dominik (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ja vielen dank für die schnelle Antwort, werde es gleich mal 
ausprobieren ;-)


Gruß
Dominik

Autor: Timo P (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Welche Schreibweise kann man denn allgemein nutzen, wenn man einen Wert 
auf binäre Weise zuordnen will?

Glaube damals hieß der Pic-Compiler CC5x und ich meine der konnte das 
mal. Nun programmiere ich hauptsächlich AVRs. mit WINAVR, der kann das 
nicht.
Manchmal ist es übersichtlicher, ähnliches zu schreiben, wie: 
0b.1110.000 also 0xE0.

Autor: Timo P (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@dominic: welchen Compiler nutzt du? Funzt die binäre Zuweisung?

Autor: Timo P (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
hab meine Frage gerade selbst beantwortet. Ich könnte ein Makro 
schreiben, so dass auf eine Fkt. zugreift. Diese Fkt bekommt die einen 
Zeiger auf die Bitfolge und tätigt entsprechende Zuweisungen alla asci-> 
hex und var = hex

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.