iuser schrieb:
> Ich arbeite mit einem STK500. Die Taster liefern ein 0 Signal wenn sie
> gedrückt sind.
Gut
>
> PIND & (1<<PD0) frägt ja auch nach 0 ab wenn ich mich nicht irre.
Du irrst.
1 | if( PIND & (1<<PD0) )
|
2 | xxxx
|
xxxx wird ausgeführt wenn der Pin auf 1 ist. Eine Abfrage auf 0 wäre
1 | if( !(PIND & (1<<PD0)) )
|
2 | xxxx
|
(man beachte das !, welches die Bedingung verneint)
> if ((PIND & (1<<PD0)) && (PIND & (1<<PD1)))
> {
> PORTB |= (1<<0); // PINB.0 zurücksetzen - LED an
Eben nicht.
Wenn
PORTB=255;
alle LED ausschaltet, dann kann das setzen eines 1 Bits nicht plötzlich
die LED einschalten.
Du schaltest hier tatsächlich die LED aus ....
> }
> else
> {
> PORTB &= ~(1<<0); // PINB.0 setzen - LED aus
... und hier ein.
> }
> wenn ich nur eine Bedingung drin habe funktioniert es ja auch :(
>
> if(PIND & (1<<PD0)) {PORTB |= (1 << 0);}
> else {PORTB &= ~(1 << 0);}[/c]
Da steht
1 | wenn die Taste nicht gedrückt ist
|
2 | dann schalte die LED aus
|
3 | ansonsten
|
4 | schalte die LED ein
|
In Summe ergibt das wieder die von dir erwartete Logik: Die LED geht an,
wenn du auf die Taste drückst.
> Total verwirrt gerade
Deine Denkweise ist genau verkehrt rum.
Bei nur einem Taster und einer LED heben sich die beiden Denk-Fehler
gegenseitig auf und es passiert das was du erwartest.
Nur in dem Moment in dem du anfängst Dinge zu kombinieren, passt es dann
mit der falsch-rum-Denkweise nicht mehr.