www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik mal wieder bits


Autor: oswald (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
#define WARTEPIN PINA
#define WARTEBIT 2

while ( !(WARTEPIN & (1 << WARTEBIT)) ) ;


versteh ich nicht.

es werden doch WARTEPIN (also PINA) logisch AND mit 00000100
verknuepft? Aber WARTEPIN ist doch in dem Fall nur ein Register???

Autor: Patrick M. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

erstmal ist "2" in Binär 00000010.
Dazu kommt, dass in PINA (in binärer Form) Die Portzustände von PINA
stehen.
Das kann man ganz gut verknüpfen.

Grüße

Autor: Rufus Τ. Firefly (rufus) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Oswald hat das mit dem 00000100 schon richtig ausklamüsert.

  (1 << 2) ist 4

Autor: oswald (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
(1 << 2) das hier verschiebt doch eine 1 in Bin.: 00000001 um zwei
stellen nach links also: 00000100 ??

Autor: Werner B. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Patrick M.

aber eine 1 um 2 stellen nach links geschoben ergibt 4.
4 = (2^2) = 0b00000100

@oswald

PINA ist funktional ein derefernzierter zeiger auf eine 8-bit
(volatile) varible.
Konzept: (numerische Angaben frei erfunden)

 #define PINA  (*((volatile unsigned char *)0x2e))

 dann kann ich mit "unsigned char b = PINA;"  den Wert an den PINs
auslesen.

Aber wie gesagt ... stark vereinfacht.

Autor: Patrick M. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Habe ich leider übersehen beim vorbeihuschen ;-)

Grüße

Autor: Rolf Magnus (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> es werden doch WARTEPIN (also PINA) logisch AND mit 00000100
> verknuepft?

Ja. Durch diese Verknüpfung kann man testen, ob darin das Bit 2 gesetzt
ist oder nicht.

> Aber WARTEPIN ist doch in dem Fall nur ein Register???

Die I/O-Register des AVR lassen sich in C wie normale Variablen
verwenden.

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.