Eine if Abfrage ist automatisch eine Abfrage auf ungleich 0.
Somit reicht es wenn du PINA und PINA4 mittels "und" verknüpfst.
PINA ist der gesamte PortCode:if (PINA & (1<<PA4))
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
If wird somit ausgeführt weil das Ergebnis nicht "0" ist, sondern 16.Code:PINA: 1111 1111 PA4: & 0001 0000 ------------------- Ergebnis: 0001 0000
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







Zitieren

Lesezeichen