-
In der Portdefinition ist kein Fehler, aber deine Tasten sind nach High geschaltet. Die internen PullUp sind ausgeschaltet ("PORTD &= 0xf3;//die Eingänge auf low" ). "die Eingänge auf low" ist falsch, die Eingänge sind hochohmig. Du musst selbst für einen eindeutigen Pegel sorgen wenn der Taster offen ist, also ein PullDown-Widerstand, etwa 10k nach GND. Dann liegt der Eingang, wenn Taste offen, auf GND und wenn Taste gedrückt dann auf high. Mach dir mal eine Zeichnung von Eingang mit dem internen Widerstand, der Eingang darf nie offen sein da er von sich aus keinen eindeutigen Pegel annimmt.
-
Nur so nebenbei:
in dem Code steht 'switch(PIND | 0x0c)'. PIND|0x0C setzt aber das 2 sowie das dritte bit auf 1. Solle heißen: egal, welchen Wert PIND hat, nach der Operation |0x0C wird das Ergebniss auf keinem fall eine 0x04 bzw eine 0x08 sein, weshalb auch immer die default-Routine ausgefüht wird.
Versuch's mal lieber mit PIND&0x0C.
MfG Mark
-
Danke!
ich habe es hinbekommen!