Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- int dataPins[] = {2,3,4,5};
- int NUMBER_OF_DATA_PINS = 4;
- int addrPins[] = {7,8,9,10};
- int NUMBER_OF_ADDR_PINS = 4;
- int oe = 11;
- int we = 12;
- void setup(){
- for(int a = 0; a < NUMBER_OF_ADDR_PINS; a++){
- pinMode(addrPins[a], OUTPUT);
- }
- pinMode(oe,OUTPUT);
- pinMode(we,OUTPUT);
- }
- void setAddr(byte addr){
- for(int a = 0; a < NUMBER_OF_ADDR_PINS; a++){
- if((addr >> a) & 0x01){
- digitalWrite(addrPins[a],HIGH);
- }else{
- digitalWrite(addrPins[a],LOW);
- }
- }
- }
- void setData(byte data){
- for(int a = 0; a < NUMBER_OF_DATA_PINS; a++){
- digitalWrite(dataPins[a],OUTPUT);
- if((data >> a) & 0x01){
- digitalWrite(dataPins[a],HIGH);
- }else{
- digitalWrite(dataPins[a],LOW);
- }
- }
- }
- void writeData(byte addr, byte data){
- setAddr(addr);
- digitalWrite(we,LOW);
- setData(data);
- digitalWrite(we,HIGH);
- }
- byte readData(byte addr){
- byte data = 0x00;
- setAddr(addr);
- digitalWrite(oe,LOW);
- for(byte a = 0; a < NUMBER_OF_DATA_PINS; a++){
- pinMode(dataPins[a],INPUT);
- if(digitalRead(dataPins[a])){
- data |= (0x01 << a);
- }
- }
- digitalWrite(oe,HIGH);
- return data;
- }
- void loop(){
- for(int a = 0; a < 16; a++){
- writeData(a,a);
- }
- for(int a = 0; a < 16; a++){
- Serial.print("Looking at address: ");
- Serial.print(a,DEC);
- Serial.print(" Got back: ");
- Serial.println(readData(a),DEC);
- delay(1000);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement