Könnte es daran liegen: Portd=&B00000100 ?

Soweit ich weiss, schaltet man damit den internen Pullup ein.
Das scheint mir grundsätzlich nicht falsch, ich würde aber trotzdem mal versuchen Portd=&B00000000 zu setzen.
Begründen kann ich das allerdings nicht.