I2C EEPROM bit-banging: Writes fine, but only if first bit is not set
You're reading the data after clock is low again. You'll have to do that between making the clock high and making it low. After the clock is low the slave is allowed to change the data line, not while it's high.



So reading should be like this:  

wait
SCL low
SDA high
for each bit (8 bits)
    SCL high                      &lt;--------
    wait
    check and store received bit  &lt;--------
    wait
    SCL low                       &lt;--------
    wait
    wait
do a NACK or ACK depending on if it is the last byte