All pastes #2096967 Raw Edit

Anonymous

public text v1 · immutable
#2096967 ·published 2011-12-28 14:31 UTC
rendered paste body
/**

**/

//NEVER USE pin 0 and 1 as they are serial RX/TX and 13 as it is the attached LED that needs to be desoldered.
const int resetPin = 3;
const int clockPin = 4;
const int dataPin = 5;

const int version=0.2;
byte data1 =0;

//Define variables to hold the data
//for each shift register.

byte switch_var = 0x80; // 10000000(2)

void setup() {
	Serial.begin(115200);
	
	int pin;
	pinMode (0,INPUT);
	pinMode (1,OUTPUT);

	for (pin=2; pin <= 9; pin++) {
		pinMode (pin, INPUT);
	}

//define pin modes
	pinMode(resetPin, OUTPUT);
	pinMode(clockPin, OUTPUT);
	pinMode(dataPin, OUTPUT);

	digitalWrite(clockPin,0); //initialize clock
	digitalWrite(resetPin,0); //reset (clear) mode
}

void loop() {
	Serial.println("WELCOME");
	resetCounter();
	uint32_t addr;

	/** address size **/
	for (addr =0;addr < 131072; addr++){
		setAdress(addr);
		readDigitalAndPrint();
	}

	Serial.println("ROM has been read.");
	Serial.end();
}

void
setAdress(uint32_t address) {
	uint8_t bits;
	for (bits=0;bits<24;bits++) {
		digitalWrite(dataPin,address & 1);
		address = address >> 1;
		digitalWrite(clockPin,0);
		__asm__("nop\n\t""nop\n\t""nop\n\t""nop\n\t""nop\n\t");
		__asm__("nop\n\t""nop\n\t""nop\n\t""nop\n\t""nop\n\t");
		__asm__("nop\n\t""nop\n\t""nop\n\t""nop\n\t""nop\n\t");
		__asm__("nop\n\t""nop\n\t""nop\n\t""nop\n\t""nop\n\t");
		digitalWrite(clockPin,1);
	}
}

void
readDigitalAndPrint() {
	data1 = 0;
	int i=0;
	int pin=9;
	for (i=0; i <8;i++){
		if (digitalRead(pin) == HIGH) {
			bitWrite(data1, (pin-2), HIGH);
		}
		pin--;
	}
	Serial.write(data1);
}

void
resetCounter() {
	digitalWrite(resetPin, LOW);
	/** EACH NOP is 62.5 ns **/
	__asm__("nop\n\t""nop\n\t""nop\n\t""nop\n\t""nop\n\t");
	__asm__("nop\n\t""nop\n\t""nop\n\t""nop\n\t""nop\n\t");
	__asm__("nop\n\t""nop\n\t""nop\n\t""nop\n\t""nop\n\t");	
	digitalWrite(resetPin, HIGH); 
}