#define DATA 12
#define CLK 10
#define LATCH 11
#define name value
#define DQ0 2
#define DQ7 9
void setAddress(int address, bool OE = false /* false, OE is HIGH*/) {
shiftOut(DATA, CLK, MSBFIRST, (address >> 8) | (OE ? 0x00 : 0x80)); // 0x__
shiftOut(DATA, CLK, MSBFIRST, address); // 0x __
digitalWrite(LATCH, 0);
digitalWrite(LATCH, 1);
digitalWrite(LATCH, 0);
}
byte readEEPROM(int address) {
setAddress(address, true);
byte data = 0;
for(uint8_t pin = DQ7; pin >= DQ0; pin--) {
data = (data << 1) + digitalRead(pin);
}
return data;
}
void setup() {
// put your setup code here, to run once:
pinMode(DATA, OUTPUT);
pinMode(CLK, OUTPUT);
pinMode(LATCH, OUTPUT);
Serial.begin(115200);
// setAddress(0x5931, false);
for(int base = 0; base <= 255; base += 16) { // 0-255 , 2048 is Max address
byte data[16];
for(int offset = 0; offset <= 15; offset++) {
data[offset] = readEEPROM(base + offset);
}
char buf[80];
sprintf(buf, "%03x : %02x %02x %02x %02x %02x %02x %02x %02x %02x %02x %02x %02x %02x %02x %02x %02x", base,
data[0], data[1], data[2], data[3], data[4], data[5], data[6], data[7],
data[8], data[9], data[10], data[11], data[12], data[13], data[14], data[15]);
Serial.println(buf);
}
Serial.println("** DONE **");
}
void loop() {
// put your main code here, to run repeatedly:
}