Eine if Abfrage ist automatisch eine Abfrage auf ungleich 0.
Somit reicht es wenn du PINA und PINA4 mittels "und" verknüpfst.
Code:
if (PINA & (1<<PA4))
PINA ist der gesamte Port
PA4 (und die anderen Bezeichnungen) ist in den Libs definiert (PA4 => 4)
Der Ausdruck "(1<<PA4)" bedeutet also das du die "1" um 4 Stellen nach links schiebst => 0001 0000
Das ergibt dann:
als Beispiel wenn PINA = 0xff
Code:
PINA: 1111 1111
PA4: & 0001 0000
-------------------
Ergebnis: 0001 0000
If wird somit ausgeführt weil das Ergebnis nicht "0" ist, sondern 16.
Für solche Dinge ist der Simulator nicht schlecht geeignet. Du kannst es Schritt für Schritt abarbeiten lassen (oder mit Debugger) und schauen was passiert.
MfG Hannes
Lesezeichen