Das sieht jetzt aber mehr nach einem Software-Problem aus, wenn Du beim Lesen statt der Daten die Adresse zurück bekommst.
Die Latch's können nicht zu langsam sein, selbst die langsamen CMOS-Typen sind 50ns schnell. Da ist der Mega32 selbst bei 20MHz viel zu langsam.
Ich tippe auf einen Fehler beim Umschalten auf Eingang / Ausgang ?

PS: Ich lege immer erst die Daten an das Port und schalte dann das Port auf Ausgang.
Wird zuerst das Port auf Ausgang geschaltet, liegt das letzte Bit-Muster an den Ausgangspins; dann wird das neue Bit-Muster ausgegeben
Daraus ergeben sich unnötige Bus-Aktivitäten.