Hallo

Normalerweise schaltet man einen Taster zwischen Pin und GND. Der Pin wird dann als Eingang mit aktiviertem PullUp definiert. Ohne Taster ergibt die Abfrage eine 1 (5V über PullUp), mit Taster gedrückt erhält man 0 (Pin an GND):

// Initialisierung
DDRA &= ~3; // ADC0+1 auf Eingang (ist zwar default nach dem Einschalten, aber sicher ist sicher :)
PORTA |= 3; // PullUp einschalten

Nun kann man so die Tasten einlesen:

// Abfrage
uint8_t x;
x=PINA & 3;

Ohne Tasten ist x==3 weil beide Pins high sind (PullUps). Wenn eine Taste gedrückt wird, wird das entsprechende Bit zu 0:

Taste gedrückt an ADC0 -> x==2 (3-1)
Taste gedrückt an ADC1 -> x==1 (3-2)
Beide Tasten -> x==0 (3-(2+1))

Ein Beispiel:

while(PINA & 2); // wartet bis Taste an ADC1 gedrückt wird

Verwirrt? Ich hoffe nicht.

Gruß

mic