blubb blabb schrieb:
> Hallo,
>
> eine kleine Verstaendnisfrage:
>
> Aus dem Tutorial:
>
1 | > #include <avr/io.h>
|
2 | > ...
|
3 | > /* Fuehre Aktion aus, wenn Bit Nr. 1 (das "zweite" Bit) in PINC gesetzt
|
4 | > (1) ist */
|
5 | > if ( PINC & (1<<PINC1) ) {
|
6 | > /* Aktion */
|
7 | > }
|
8 | >
|
>
> Diese if-Abfrage verstehe ich nicht ganz:
> Hier wird wasn an Port C anliegt verundet mit Linksshift von Port C.
Nicht mit Port C. Mit PINC1. Und wenn man sich auf die Suche macht, dann
findet sich in den Tiefen dessen, was über io.h includiert wird
#define PINC1 1
d.h. die Anweisung expandiert zu
if ( PINC & ( 1 << 1 ) ) {
...
}
und eine 1, binär 0b00000001, die man um 1 Stelle nach links schiebt,
ergibt eine Maske, 0b00000010, die genau an der Bitposition 1 eine 1
aufweist. Perfekt um das von PINC gelesene zu maskieren, so dass nur der
Zustand von Pin 1 am Eingansport PINC übrig bleibt.