Die Port's des ATMEGA 32 sind, wenn sie als Eingang beschaltet wurden hochohmig.
Also schaltet man üblicherweise einen Widerstand gegen Plus (=Pull Up Widerstand) oder gegen Minus (=Pull Down Widerstand) um den Eingang auf ein definiertes Potential zu bringen.

Du schaltest also einen Widerstand von + , an den gewünschten Eingang des Controllers.
Mit dem Taster wird der Eingang dann bei betätigung nach GND durchgeschaltet.

Nun hat aber der ATMEGA 32 auch schaltbare, interne Pull Up Widerstände (ca. 47kOhm).
Wenn der Port mit dem DDRx Register als Eingang definiert ist, wäre ja das PORTx Register ohne Funktion, weil die Port Abfragen ja über das PINx Register laufen.
Wenn Du aber in das PORTx Register für den jeweiligen Port eine 1 schreibst wird der interne Pull Up Widerstand des ATMEGA 32 aktiviert und der extern angeschaltete Widerstand braucht nicht eingebaut zu werden.

Das Ganze steht aber auch so im Datenblatt.

Wenn das dann immer noch nicht geht, hast Du vermutlich einen Fehler in deiner restlichen Hardware oder deine Software ist fehlerhaft.

Hast Du auch die Fuses richtig gesetzt ? - ist eine häufige Fehlerquelle.