Zunächst:
> > Das "andi" verknüpft den Inhalt des Registers R16 logisch mit der Konstanten
0xF0
Das ist falsch, sollte vielmehr heißen: ...R16 bitweise mit der
Konstanten...
Zum Problem:
in r16, pina
andi r16, 0xC0
subi r16, 0xC0
breq led1_aus
...
d.h. PinA einlesen, alle Bits ausser Bit6 und Bit7 wegschneiden. Dann
0xC0 (= 0b1100 0000) subtrahieren, wenn 0 dabei rauskommt (und 0 ergibt
sich nur dann, wenn beide Bits gesetzt waren) nach led1_aus
verzweigen... Und wenn du sicher bist, daß an PinA0-5 keine High-Pegel
anliegen können, dann kannst du dir das "andi" auch noch sparen.
bei 3Eingängen:
in r16, pina
andi r16, 0xE0
subi r16, 0xE0
breq led1_aus
A propos: Wenn es keine low-current-LEDs sind, dann schließe sie besser
gegen Vcc an, anstatt gegen Masse. Damit schaltet die LED bei
high_-Pegel _aus. Muß natürlich dann im Code berücksichtigt werden. So
verhinderst du ein vorzeitiges Ableben des AVRs, da dieser mehr Strom
senken als liefern kann.
Schmittchen.