Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //input for ROM
- int IN_1 = 0; //LSB
- int IN_2 = 1;
- int IN_3 = 2;
- int IN_4 = 3;
- //output from ROM
- int OUT_1 = 4; //LSB
- int OUT_2 = 5;
- int OUT_3 = 6;
- int OUT_4 = 7;
- int OUT_5 = 8;
- int OUT_6 = 9;
- int OUT_7 = 10;
- int OUT_8 = 11;
- //output for seg decoder
- int OUTPUT1 = A0; //LSB
- int OUTPUT2 = A1;
- int OUTPUT3 = A2;
- int OUTPUT4 = A3;
- int counter = 0;
- void setup() {
- Serial.begin(9600);
- pinMode(IN_1, OUTPUT);
- pinMode(IN_2, OUTPUT);
- pinMode(IN_3, OUTPUT);
- pinMode(IN_4, OUTPUT);
- pinMode(OUT_1, INPUT);
- pinMode(OUT_2, INPUT);
- pinMode(OUT_3, INPUT);
- pinMode(OUT_4, INPUT);
- pinMode(OUT_5, INPUT);
- pinMode(OUT_6, INPUT);
- pinMode(OUT_7, INPUT);
- pinMode(OUT_8, INPUT);
- pinMode(OUTPUT1, OUTPUT);
- pinMode(OUTPUT2, OUTPUT);
- pinMode(OUTPUT3, OUTPUT);
- pinMode(OUTPUT4, OUTPUT);
- }
- void loop() {
- checkROM();
- Serial.print("COUNTER: ");
- Serial.println(counter);
- int input1, input2, input3, input4;
- switch(counter){
- case 0:
- input1 = 0;
- input2 = 0;
- input3 = 0;
- input4 = 0;
- break;
- case 1:
- input1 = 1;
- input2 = 0;
- input3 = 0;
- input4 = 0;
- break;
- case 2:
- input1 = 0;
- input2 = 1;
- input3 = 0;
- input4 = 0;
- break;
- case 3:
- input1 = 1;
- input2 = 1;
- input3 = 0;
- input4 = 0;
- break;
- case 4:
- input1 = 0;
- input2 = 0;
- input3 = 1;
- input4 = 0;
- break;
- case 5:
- input1 = 1;
- input2 = 0;
- input3 = 1;
- input4 = 0;
- break;
- case 6:
- input1 = 0;
- input2 = 1;
- input3 = 1;
- input4 = 0;
- break;
- case 7:
- input1 = 1;
- input2 = 1;
- input3 = 1;
- input4 = 0;
- break;
- }
- digitalWrite(IN_4, input4);
- digitalWrite(IN_3, input3);
- digitalWrite(IN_2, input2);
- digitalWrite(IN_1, input1);
- Serial.print("Input address: ");
- Serial.print(input4);
- Serial.print(input3);
- Serial.print(input2);
- Serial.println(input1);
- checkROM();
- delay(500);
- checkROM();
- //get address from D region
- int add_1 = digitalRead(OUT_1);
- int add_2 = digitalRead(OUT_2);
- int add_3 = digitalRead(OUT_3);
- Serial.print("D-region address: ");
- Serial.print(add_3);
- Serial.print(add_2);
- Serial.println(add_1);
- // get operation (two bits)
- // massave ba to? yep
- int op_1 = digitalRead(OUT_4);
- int op_2 = digitalRead(OUT_5);
- Serial.print("Operation: ");
- Serial.print(op_2);
- Serial.println(op_1);
- //set address of D-region
- digitalWrite(IN_4, HIGH);
- digitalWrite(IN_3, add_3);
- digitalWrite(IN_2, add_2);
- digitalWrite(IN_1, add_1);
- Serial.print("D-region address: ");
- Serial.print("1");
- Serial.print(add_3);
- Serial.print(add_2);
- Serial.println(add_1);
- Serial.print("D-region");
- checkROM();
- //get four bit outputs
- int output_1; //lsb
- int output_2;
- int output_3;
- int output_4;
- // delay(250);
- if(op_2 == HIGH){
- //LSB
- int carry = LOW;
- if(digitalRead(OUT_5) == HIGH && digitalRead(OUT_1) == HIGH){
- output_1 = LOW;
- carry = HIGH;
- } else if((digitalRead(OUT_5) == HIGH && digitalRead(OUT_1) == LOW) ||
- (digitalRead(OUT_5) == LOW && digitalRead(OUT_1) == HIGH)){
- output_1 == HIGH;
- } else { //both are LOW
- output_1 = LOW;
- }
- //2ND SB
- if(digitalRead(OUT_6) == HIGH && digitalRead(OUT_2) == HIGH){
- if(carry = HIGH){
- output_2 = HIGH;
- } else{
- output_2 = LOW;
- }
- carry = HIGH;
- } else if((digitalRead(OUT_6) == HIGH && digitalRead(OUT_2) == LOW) ||
- (digitalRead(OUT_6) == LOW && digitalRead(OUT_2) == HIGH)){
- if(carry = HIGH){
- output_2 = LOW;
- carry = HIGH;
- } else{
- output_2 = HIGH;
- carry = LOW;
- }
- } else { //both are LOW
- if(carry = HIGH){
- output_2 = HIGH;
- carry = LOW;
- } else{
- output_2 = LOW;
- carry = LOW;
- }
- }
- //3RD SB
- if(digitalRead(OUT_7) == HIGH && digitalRead(OUT_3) == HIGH){
- if(carry = HIGH){
- output_3 = HIGH;
- } else{
- output_3 = LOW;
- }
- carry = HIGH;
- } else if((digitalRead(OUT_7) == HIGH && digitalRead(OUT_3) == LOW) ||
- (digitalRead(OUT_7) == LOW && digitalRead(OUT_3) == HIGH)){
- if(carry = HIGH){
- output_3 = LOW;
- carry = HIGH;
- } else{
- output_3 = HIGH;
- carry = LOW;
- }
- } else { //both are LOW
- if(carry = HIGH){
- output_3 = HIGH;
- carry = LOW;
- } else{
- output_3 = LOW;
- carry = LOW;
- }
- }
- //4TH SB
- if(digitalRead(OUT_8) == HIGH && digitalRead(OUT_4) == HIGH){
- if(carry = HIGH){
- output_4 = HIGH;
- } else{
- output_4 = LOW;
- }
- carry = HIGH;
- } else if((digitalRead(OUT_8) == HIGH && digitalRead(OUT_4) == LOW) ||
- (digitalRead(OUT_8) == LOW && digitalRead(OUT_4) == HIGH)){
- if(carry = HIGH){
- output_4 = LOW;
- carry = HIGH;
- } else{
- output_4 = HIGH;
- carry = LOW;
- }
- } else { //both are LOW
- if(carry = HIGH){
- output_4 = HIGH;
- carry = LOW;
- } else{
- output_4 = LOW;
- carry = LOW;
- }
- }
- }
- if(op_2 == LOW && op_1 == LOW){
- output_1 = digitalRead(OUT_5);
- output_2 = digitalRead(OUT_6);
- output_3 = digitalRead(OUT_7);
- output_4 = digitalRead(OUT_8);
- } else if (op_2 == LOW && op_1 == HIGH){
- output_1 = digitalRead(OUT_1);
- output_2 = digitalRead(OUT_2);
- output_3 = digitalRead(OUT_3);
- output_4 = digitalRead(OUT_4);
- }
- checkROM();
- //display outputs
- digitalWrite(OUTPUT4, output_4);
- digitalWrite(OUTPUT3, output_3);
- digitalWrite(OUTPUT2, output_2);
- digitalWrite(OUTPUT1, output_1);
- counter++;
- if(counter > 7) counter = 0;
- delay(500);
- }
- void checkROM(){
- Serial.print("ROM OUTPUTS: ");
- Serial.print(digitalRead(OUT_8));
- Serial.print(digitalRead(OUT_7));
- Serial.print(digitalRead(OUT_6));
- Serial.print(digitalRead(OUT_5));
- Serial.print(digitalRead(OUT_4));
- Serial.print(digitalRead(OUT_3));
- Serial.print(digitalRead(OUT_2));
- Serial.print(digitalRead(OUT_1));
- Serial.println();
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement