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
Operatorenreihenfolge > void checkbyte(char c) > { > if ( ( c & 0b11110000 ) == hw_GetTWIAddr() )
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.
Ja vielen dank für die schnelle Antwort, werde es gleich mal ausprobieren ;-) Gruß Dominik
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.
@dominic: welchen Compiler nutzt du? Funzt die binäre Zuweisung?
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
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.