Hallo,
es gibt zwei möglichkeiten entweder per Makro oder Funktion.
Makros:
#define SEB(WO,BIT)(WO|=(1<<BIT))
#define CLB(WO,BIT)(WO&=~(1<<BIT))
#define CHKB(WO,BIT)(WO&(1<<BIT))
#define CHKBL(WO,BIT)(!(WO&(1<<BIT)))
WO entspricht z.B. PORTD oder der Portadresse somit gehts mit jedem
Compiler
BIT ist die zu lesende Bitnummer
wobei CHKB auf 1 prüft und CHKBL auf 0.....
CLB und SEB sind zum Löschen und Setzen einzelner Bits.
z.B.
if (CHKBL(PORTD,4))
{
//Anweisungen...wird ausgeführt sobald pin5 low ist
}
Diese haben den Vorteil das sie am Auftragsort in den Quellcode
eingefügt werden.
Die zweite möglichkeit ist diese Aufrufe in ne Funktion zu packen was
bei vielen Aufrufen den Quellcode erhebelich verkleinert allerdings auf
die Laufzeit geht. Diese ist in den meisten Fällen sowieso ausreichend
falls man keine sinnlosen Warteschleifen programmiert.
Ich entscheide immer abh. vom Projekt welche Art besser ist....
MfG
Rainer