Hallo Decca,


int main(void) {
int i;

unsigned int keys;

'keys' braucht nur unsigned char=8bit, unsigned int (16bit) ist aber nicht falsch, mann sollte dennoch acht geben wenn '|' '~' oder '&' benutzt wird
mit Ports den wass geschied mit bits 8-15?

DDRB = 0xff; // PORTB als Ausgang
DDRD = 0x00; // PORTD als Eingang
PORTB = 0xff; // setzt alle Ausgangsport auf H-Pegel --> leds aus


for (i=0;i<10;i++) {

keys = ~PIND;

Ich nehme an, ein Tastendruck macht eingang PIND niedrich...
Hier wird 'keys' z.B hex 0xFB wenn Taste 3 von 8 gedruckt wird
(bit2 is '0')

if ( keys & 1 )

Ich nehme an dass hinten '& 1 )' ein '{' stehen sollte
Die 'if' wird immer ausgefuhrt wenn Taste 1 NICHT gedruckt ist. Denn
wenn Taste 1 nicht gedruckt ist wird bit0 in 'keys' '1'

PORTB &= ~(1<<PB0+i);

Mein compiler gibt hier eine Warnung. Besser wahre extra Haken.
PORTB &= ~(1<<(PB0+i));

}
}

Nirgendwo wird hier vom Program auf eine Tasendruck gewartet. Dass ganze Program sollte innerhalb (beim 8MHz oscillator) ungefahr 10 * 5 ist ungefahr 50 microseconden abgelaufen sein! Da muss man ja ganz schnell drucken!

Gruss,

Henk