die internen pullups (eingebaute widerstände an den ports) werden folgendermaßen deaktiviert:

als beispiel nehme ich den pin 1 am port b, du musst das programm an den fettgedruckten stellen entsprechend anpassen.

DDRB |= 0x02; // hier den entsprechenden hex wert eintragen. pin0 = 0x01, pin 1 = 0x02, pin 2 = 0x04, pin 3 = 0x08, pin 4 = 0x10, pin 5 = 0x20, pin 6 = 0x40, pin 7 = 0x80.
PORTB &= ~(0x02);

dann das auslesen nochmal ausprobieren.