Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #define SHIFT_DATA 2
- #define SHIFT_CLK 3
- #define SHIFT_LATCH 4
- #define EEPROM_D0 5
- #define EEPROM_D7 12
- #define EEPROM_WE 13
- #define NONE 0
- #define READ INPUT
- #define WRITE OUTPUT
- int mode = NONE;
- void setup() {
- pinMode(SHIFT_DATA, OUTPUT);
- pinMode(SHIFT_CLK, OUTPUT);
- pinMode(SHIFT_LATCH, OUTPUT);
- pinMode(EEPROM_WE, OUTPUT);
- digitalWrite(SHIFT_DATA, LOW);
- digitalWrite(SHIFT_CLK, LOW);
- digitalWrite(SHIFT_LATCH, LOW);digitalWrite(EEPROM_WE, HIGH);
- writeEEPROM(0, 0);
- for (int i = 0; i < 2048; i++) {
- writeEEPROM(i, i);
- delay(50);
- }
- }
- void writeEEPROM(int address, int data) {
- for (int pin = EEPROM_D0; pin <= EEPROM_D7; pin++) {
- pinMode(pin, OUTPUT);
- }
- setAddress(address, false);
- for (int pin = EEPROM_D0; pin <= EEPROM_D7; pin++) {
- digitalWrite(pin, data & 0x01);
- data = data >> 1;
- }
- digitalWrite(EEPROM_WE, LOW);
- delayMicroseconds(1);
- digitalWrite(EEPROM_WE, HIGH);
- }
- byte readEEPROM(int address) {
- for (int pin = EEPROM_D0; pin <= EEPROM_D7; pin++) {
- pinMode(pin, INPUT);
- }
- setAddress(address, true);
- byte data = 0;
- for (int pin = EEPROM_D7; pin >= EEPROM_D0; pin--) {
- data = (data << 1) + digitalRead(pin);
- }
- return data;
- }
- void setAddress(int address, bool outputEnable) {
- shiftOut(SHIFT_DATA, SHIFT_CLK, MSBFIRST, (address >> 8) | (outputEnable ? 0x00 : 0x80));
- shiftOut(SHIFT_DATA, SHIFT_CLK, MSBFIRST, address);
- digitalWrite(SHIFT_LATCH, 0);
- digitalWrite(SHIFT_LATCH, 1);
- digitalWrite(SHIFT_LATCH, 0);
- }
- // the loop function runs over and over again forever
- void loop() {
- for (int i = 0; i < 2048; i++) {
- readEEPROM(i);
- delay(50);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement