Forum: Mikrocontroller und Digitale Elektronik LED mit Button schalten


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
von thorloff (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Moin! Ich versuche gerade mittels eines Buttons eine LED 
ein-/auszuschalten.

Controller ist der ATMega168a.
Button ist an PD2 angeschlossen.
LED ist an PB0 angeschlossen.

Der Code funktioniert, aber ich habe ein kleines Verständnisproblem.
Ich frage den Status des PD2 folgendermaßen ab:
1
if( (PIND & (1 << 2)) == 0 )
2
   // do stuff

Mit (1 << 2) erzeuge ich ja eine 8-Bit Bitmaske der Form 00000100
Interessanterweise funktioniert das auch so:
1
if( (PIND & (1 << PD2)) == 0 )
2
   // do stuff

Warum kann ich hier auch PD2 einsetzen? Ich dachte PD2 ist ein 8-Bit 
Register der Form 00000100

von Karl M. (Gast)


Bewertung
0 lesenswert
nicht lesenswert
thorloff schrieb:
> Moin! Ich versuche gerade mittels eines Buttons eine LED
> ein-/auszuschalten.
> Controller ist der ATMega168a.
> Button ist an PD2 angeschlossen.
> LED ist an PB0 angeschlossen.
>
> Der Code funktioniert, aber ich habe ein kleines Verständnisproblem.
> Ich frage den Status des PD2 folgendermaßen ab:if( (PIND & (1 << 2)) ==
> 0 )
>    // do stuff
>
> Mit (1 << 2) erzeuge ich ja eine 8-Bit Bitmaske der Form 00000100
> Interessanterweise funktioniert das auch so:if( (PIND & (1 << PD2)) == 0
> )
>    // do stuff
>
> Warum kann ich hier auch PD2 einsetzen? Ich dachte PD2 ist ein 8-Bit
> Register der Form 00000100

Nun ganz einfach, das PD2 ist eine Konstante, in Form eines defines.

Schau doch einfach mal in seine Definition <io.h>.

von thorloff (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Karl M. schrieb:
> das PD2 ist eine Konstante, in Form eines defines

Danke, das erklärt es, ich habe es für ein Register gehalten.

von thorloff (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Karl M. schrieb:
> Schau doch einfach mal in seine Definition <io.h>.

Ja muss ich machen, die Frage hätte sich wohl erübrigt wenn ich das 
vorher getan hätte :-)

Beitrag #5746817 wurde von einem Moderator gelöscht.
Beitrag #5746819 wurde von einem Moderator gelöscht.
Beitrag #5746820 wurde von einem Moderator gelöscht.

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]
  • [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.