Bitmanipulation mit Konstante

Gast #1723303
Lesenswert?
• ▲
▼
Hallo zusammen,

ich habe derzeit ein etwas 'exotisches' Problem:

Ich habe verschiedene defines, mit der ich verschiedene Varianten einer 
Firmware auswählen kann.

Ich möchte mir nun ein Byte im Flash mit der bit-kodierten Variante 
anlegen.

Auf Basis von
#define SOUND_TO_LIGHT
#define ALT_COLORS
sollte nun ein Byte im Flash mit dem Wert von beispielsweise 0b01001000 
entstehen.

Ich habe schon mit Konstanten und und defines experimentiert - komme 
aber mit der Umwandlung nicht klar.

Es wäre nett, wenn einer einen Tipp hätte.


Viele Grüße,
Henne
Persönliche Seite #1723318
Lesenswert?
• ▲
▼
sowas?
1
const ee_version ... = 0
2
#ifdef SOUND_TO_LIGHT
3
    | (1 << 0)
4
#endif
5
#ifdef ALT_COLORS
6
    | (1 << 6)
7
#endif
8
;

oder sauberer:
1
#ifdef SOUND_TO_LIGHT
2
#define HAVE_SOUND_TO_LIGHT 1
3
#else
4
#define HAVE_SOUND_TO_LIGHT 0
5
#endif
6

7
#ifdef ALT_COLORS
8
#define HAVE_ALT_COLORS 1
9
#else
10
#define HAVE_ALT_COLORS 0
11
#endif
12

13
const ee_version ... = (HAVE_SOUND_TO_LIGHT << 0) | (HAVE_ALT_COLORS << 6);

oder direkt die Masken definieren.
Gast #1724605
Lesenswert?
• ▲
▼
@Johann:
Deine zweite Variante hat mir die Augen geöffnet - Vielen Dank :-)

Bei dem Taggen meiner Firmwares habe ich allerdings festgestellt, dass 
ich ein älteres Programm unverändert nicht mehr kompilieren kann, da ich 
zwischenzeitlich WinAVR zur Unterstützung eines neueren AVRs geupdated 
hatte und nun der Code zu groß ist. Ich geh hier mal auf die Suche, um 
das hoffentlich wieder in den Griff zu bekommen..


Viele Grüße,
Hendrik

Antwort schreiben

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.

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.