Forum: Mikrocontroller und Digitale Elektronik LED mit Button schalten


von thorloff (Gast)


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)


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)


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)


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.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.