// ===========================================
// Simulasi Kontrol LED menggunakan Instruksi Mikroprosesor
// Instruksi: MOV, ADD, OUT
// Model Register: A, B, dan Accumulator
// ===========================================
int A = 0; // Register A
int B = 0; // Register B
int ACC = 0; // Accumulator
int ledPin = 2; // Output port (LED)
void setup() {
pinMode(ledPin, OUTPUT);
Serial.begin(9600);
Serial.println("=== Simulasi Kontrol LED dengan Set Instruksi Mikroprosesor ===");
// ===== Instruksi 1: MOV A, 1 =====
Serial.println("\nInstruksi 1: MOV A, 1");
A = 1;
Serial.print("Register A = "); Serial.println(A);
// ===== Instruksi 2: MOV B, 0 =====
Serial.println("Instruksi 2: MOV B, 0");
B = 0;
Serial.print("Register B = "); Serial.println(B);
// ===== Instruksi 3: ADD A, B =====
Serial.println("Instruksi 3: ADD A, B");
ACC = A + B;
Serial.print("Accumulator (A + B) = "); Serial.println(ACC);
// ===== Instruksi 4: OUT A =====
Serial.println("Instruksi 4: OUT A");
if (ACC == 1) {
digitalWrite(ledPin, HIGH); // LED ON
Serial.println("LED = ON");
} else {
digitalWrite(ledPin, LOW); // LED OFF
Serial.println("LED = OFF");
}
delay(2000);
// ===== Instruksi 5: SUB A, A (matikan LED) =====
Serial.println("\nInstruksi 5: SUB A, A");
ACC = A - A;
Serial.print("Accumulator = "); Serial.println(ACC);
Serial.println("Instruksi 6: OUT A");
digitalWrite(ledPin, LOW);
Serial.println("LED = OFF");
}
void loop() {
// Tidak ada proses berulang
}