Forum: Mikrocontroller und Digitale Elektronik Quelltextanalyse! Und ich komme nicht weiter...


von Markus (Gast)


Lesenswert?

Hallo,

ich versuche gerade zwecks Selbstschulung einen Beispielcode zu 
analysieren.
Ich verstehe nur nicht so ganz, was folgende Definitionen bedeuten:

volatile uint8_t   bFlag   = 0;
#define TIME0_M_TICK   1
#define WORKOUT_M_RUN  2
#define UART_M_STORE   4
#define UART_M_FINAL   8
#define UART_M_BYTE   16
#define UART_M_DUMP   32
#define TASTE_M_HIT   64

Die erste Zeile ist klar: ich definiere eine Variable mit dem Namen 
bFlag.
Aber was hat es denn mit den #define Variabeln auf sich?
Bedeuten die 1,2,4,8,16,32 und 64 etwa die Wertigkeiten eines Bytes, 
also die einzelnen Bits? Definiere ich das erste Bit als TIME0_M_TICK 
und das 7te Bit als TASTE_M_HIT?
Wenn ja, welche Bits von welchem Byte definiere ich denn?

Oder sagt bitte einfach mal kurz, wie ihr das interpretieren, was man da 
sieht?

Danke im voraus und Grüße

Markus

von Markus (Gast)


Lesenswert?

ach, ich vergaß: die Bezeichnungen TIME0_M_TICK, WORKOUT_M_RUN, etc. 
sind frei wählbar oder müssen diese so lauten?

Nochmals danke

Markus

von Andreas S. (andreas) (Admin) Benutzerseite


Lesenswert?

http://www.wi-bw.tfh-wildau.de/~hendrix/grundstudium/c/skript/praeprozessor.html

Was die Definitionen in diesem konkreten Fall bedeuten hängt vom Rest 
des Programms ab.

von Walter (Gast)


Lesenswert?

ja, das sind wohl die Bits eines Registers oder einer Variablen.
Wo die verwendet werden: musst du einfach im dazugehörigen Programm 
suchen

Grüße
Walter

von Nooby (Gast)


Lesenswert?

überall, wo z.B. in Deinem quelltext TIME0_M_TICK auftaucht, wird es vom 
compiler durch eine "1" ersetzt. TIME0_M_TICK   soll aber die lesbarkeit 
erhöhen und bietet die möglichkeit, diesen wert vor dem kompilieren 
schnell zu ändern und ihn nicht überall im quelltext einzelnd zu suchen 
und zu ändern.

von Besucher (Gast)


Lesenswert?

es sind keine variablen mit der wertigkeit, sondern konstanten...

von Peter D. (peda)


Lesenswert?

Man sollte sich immer vor Augen halten, daß #define eine reine 
Textersetzung ist, also weder Code, noch Variablen noch sonstwas 
erzeugt.

Dann kann man es ziemlich gut verstehen.

Wenn man einfach mal ins Listing schaut, sieht man auch, daß sämtliche 
#define Zeilen weder ne Adresse noch Codebytes haben.


Peter

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
Noch kein Account? Hier anmelden.