Advertisement
Guest User

Untitled

a guest
Oct 17th, 2017
66
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.69 KB | None | 0 0
  1. #define SHIFT_DATA 2
  2. #define SHIFT_CLK 3
  3. #define SHIFT_LATCH 4
  4. #define EEPROM_D0 5
  5. #define EEPROM_D7 12
  6. #define EEPROM_WE 13
  7.  
  8. #define NONE 0
  9. #define READ INPUT
  10. #define WRITE OUTPUT
  11.  
  12. int mode = NONE;
  13.  
  14. void setup() {
  15. pinMode(SHIFT_DATA, OUTPUT);
  16. pinMode(SHIFT_CLK, OUTPUT);
  17. pinMode(SHIFT_LATCH, OUTPUT);
  18. pinMode(EEPROM_WE, OUTPUT);
  19.  
  20. digitalWrite(SHIFT_DATA, LOW);
  21. digitalWrite(SHIFT_CLK, LOW);
  22. digitalWrite(SHIFT_LATCH, LOW);digitalWrite(EEPROM_WE, HIGH);
  23.  
  24.  
  25. writeEEPROM(0, 0);
  26.  
  27. for (int i = 0; i < 2048; i++) {
  28. writeEEPROM(i, i);
  29. delay(50);
  30. }
  31. }
  32.  
  33. void writeEEPROM(int address, int data) {
  34. for (int pin = EEPROM_D0; pin <= EEPROM_D7; pin++) {
  35. pinMode(pin, OUTPUT);
  36. }
  37. setAddress(address, false);
  38. for (int pin = EEPROM_D0; pin <= EEPROM_D7; pin++) {
  39. digitalWrite(pin, data & 0x01);
  40. data = data >> 1;
  41. }
  42.  
  43. digitalWrite(EEPROM_WE, LOW);
  44. delayMicroseconds(1);
  45. digitalWrite(EEPROM_WE, HIGH);
  46. }
  47.  
  48. byte readEEPROM(int address) {
  49. for (int pin = EEPROM_D0; pin <= EEPROM_D7; pin++) {
  50. pinMode(pin, INPUT);
  51. }
  52. setAddress(address, true);
  53. byte data = 0;
  54. for (int pin = EEPROM_D7; pin >= EEPROM_D0; pin--) {
  55. data = (data << 1) + digitalRead(pin);
  56. }
  57. return data;
  58. }
  59.  
  60. void setAddress(int address, bool outputEnable) {
  61. shiftOut(SHIFT_DATA, SHIFT_CLK, MSBFIRST, (address >> 8) | (outputEnable ? 0x00 : 0x80));
  62. shiftOut(SHIFT_DATA, SHIFT_CLK, MSBFIRST, address);
  63.  
  64. digitalWrite(SHIFT_LATCH, 0);
  65. digitalWrite(SHIFT_LATCH, 1);
  66. digitalWrite(SHIFT_LATCH, 0);
  67. }
  68.  
  69. // the loop function runs over and over again forever
  70. void loop() {
  71. for (int i = 0; i < 2048; i++) {
  72. readEEPROM(i);
  73. delay(50);
  74. }
  75. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement