#define SHIFT_DATA 2 #define SHIFT_CLK 3 #define SHIFT_LATCH 4 #define EPROM_D0 5 #define EPROM_D7 12 #define EPROM_OE 13 void setAddress(int address) { shiftOut(SHIFT_DATA, SHIFT_CLK, MSBFIRST, (address >> 8)); shiftOut(SHIFT_DATA, SHIFT_CLK, MSBFIRST, address); digitalWrite(SHIFT_LATCH, LOW); digitalWrite(SHIFT_LATCH, HIGH); digitalWrite(SHIFT_LATCH, LOW); } byte readEPROM(int address) { digitalWrite(EPROM_OE, HIGH); setAddress(address); delay(5); digitalWrite(EPROM_OE, LOW); byte data = 0; for (int pin = EPROM_D7; pin >= EPROM_D0; pin -= 1) { //delay(10); data = (data << 1) + digitalRead(pin); } return data; } void setup() { pinMode(SHIFT_DATA, OUTPUT); pinMode(SHIFT_CLK, OUTPUT); pinMode(SHIFT_LATCH, OUTPUT); pinMode(EPROM_OE, OUTPUT); Serial.begin(57600); Serial.println(""); byte newdata; for (int adr = 0; adr <= 4095; adr += 1) { newdata = readEPROM(adr); Serial.println(newdata); } } void loop() { // put your main code here, to run repeatedly: }