Martin schrieb:
>
1 | > while(1)
|
2 | >
|
3 | > if (PINA == 0b11111110) FunktionX();
|
4 | >
|
5 | > if (PINA == 0b11111101) FunktionY();
|
6 | > ;
|
7 | >
|
Untersuch mal, welche Anweisungen in deiner while Schleife enthalten
sind.
Tip: Dem Compiler ist deine Einrückung egal. Der richtet sich nach den
Sprachregeln.
Was du da machst, ist nicht besonders schlau.
Damit deine Funktionen aufgerufen werden, muss der komplette PINA den
richtigen Zustand haben. Das möchtest du aber eigentlich gar nicht. Du
möchtest eigentlich haben, dass die Funktion aufgerufen wird, wenn ein
ganz bestimmtes Bit den Wert 0 hat. Und zwar unabhängig davon, welchen
Wert die anderen Bits haben
1 | while(1)
|
2 | {
|
3 |
|
4 | if ( !( PINA & (1 << PA0) ) )
|
5 | FunktionX();
|
6 |
|
7 | if ( !( PINA & (1 << PA1) ) )
|
8 | FunktionY();
|
9 | }
|