LED mit Button schalten

Gast #5746810
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
Gast #5746811
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>.
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

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren