mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Bitzugriff vereinfachen / definieren


Autor: Igor Metwet (bastel-wastel)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo, ich habe gleich noch eine Frage:

Kann man mit dem GCC-Compiler die Bitzugriffe etwas vereinfachen?

Bei vielen Compilern (CodeVision, CC5x,..) kann man ja mit
variableX.0 
direkt auf ein Bit lesend und schreibend zugreifen.
mit
#define MeinBit variableX.0

kann man das ganze ja schön definieren. Natürlich ist das nicht ANSI-C 
konform aber durchaus praktisch. Gibt einen Trick bei den #defines, mit 
denen man sowas bei GCC-Code "nachrüsten" kann?

Hintergrund:
Ich möchte meine Bits gerne definieren, damit ich im Quelltext nur noch 
so etwas wie:
if(MeinBit1)MeinBit2 = 1;

verwenden muss. Oder komme ich im Quelltext um die Operatoren
http://www.mikrocontroller.net/articles/Bitmanipulation
nicht herum? Lesend und schreibend auf ein benanntes Bit wäre schon sehr 
vorteilhaft.

Autor: Hähh? (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Bei CodevisionAVR geht das aber nur bei Portzugriffen, man kann 
lediglich die einzelnen Bits eines I/O-Ports auf diese Weise ansprechen. 
Bei einer beliebigen Variable funktioniert das definitiv nicht. Woher 
hast du die Information, dass man bei CodevisionAVR das so machen 
könnte?

Das einzige, was bei CodevisionAVR in Richtung Bitzugriff geht, ist die 
Definition von Bitvariablen. Man kann aber maximal 8 lokale Bitvariablen 
definieren, wenn es mehr sein sollen, müssen das globale Variable sein.

Verwunderte Grüße, Hähh?

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Igor Metwet wrote:
> mit
>
> #define MeinBit variableX.0
> 
>
> kann man das ganze ja schön definieren. Natürlich ist das nicht ANSI-C
> konform aber durchaus praktisch. Gibt einen Trick bei den #defines, mit
> denen man sowas bei GCC-Code "nachrüsten" kann?

Ja, den gibt es, hier ein Beispiel:

Beitrag "Re: LCD nicht nur für einen Port in C"


Peter

Autor: Igor Metwet (bastel-wastel)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Hähh?
Sorry, beim CC5X funktioniert der Variablenzugriff so. Beim CV habe ich 
auch in Codebeispielen dien Punkt-Zugriff gesehen. Wahrscheinlich war es 
aber ein PORT-Zugriff und ich habe das auf Variablen geschlossen.

@Peter:
Danke. Das funktioniert wunderbar !!
Genau das habe ich gesucht.

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.