www.mikrocontroller.net

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


Autor: Markus (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Markus (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Andreas Schwarz (andreas) (Admin) Benutzerseite Flattr this
Datum:

Bewertung
0 lesenswert
nicht lesenswert
http://www.wi-bw.tfh-wildau.de/~hendrix/grundstudi...

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

Autor: Walter (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Nooby (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Besucher (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
es sind keine variablen mit der wertigkeit, sondern konstanten...

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht 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

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.