Also beginnen wir mal mit der Abfrage auf logisch 0...
die geht genauso wie die Abfrage auf logisch 1, nur mit einem ! davor
Weiter geht's mit deinem Code, der in dieser Form nicht funktionieren kann (hauptsächlich wegen der fehlerhaften Abfrage auf logisch 0).Code:!(PINB & (1<<PINB1))
Außerdem passen die Kommentare nicht so ganz, daher habe ich versucht das nochmal etwas übersichtlicher darzustellen:
Dabei werden 2 Dinge offensichtlich:Code://PORTB 1234 // 0001 // 0010 // 0011 // 0100 // 0101 // 0110 // 0111 // 1000 // 1001 // 1010 // 1011 // 1100
1. Das wären die Zahlen von 1 bis 12 im Binärformat...
2. wenn die Bits nicht "rückwärts" angeordnet wären![]()
Kannst du das noch ändern, oder ist die Zuordnung so festgelegt?
Denn falls die Reihenfolge anders wäre, könnte man deine Funktion bis auf das hier reduzieren:
Code:int anzahl_Zyl(void) //fragt BP1-PB4 ab und giebt Einstellung Zylinderanzahl zurück { DDRB |= 0x00; return ((PINB & 0x1E) >> 1); }







Zitieren
Lesezeichen