// Pin konfigurasi
const int ledPin = 13; // LED terhubung ke pin 13
const int interruptPin = 2; // Pin interrupt (EXT INT 0)
// Variabel untuk status LED
volatile bool ledState = false;
void setup() {
// Konfigurasi pin
pinMode(ledPin, OUTPUT);
pinMode(interruptPin, INPUT_PULLUP); // Gunakan pull-up internal
// Konfigurasi External Interrupt
attachInterrupt(digitalPinToInterrupt(interruptPin), ISR_NMI, FALLING);
// Mulai komunikasi serial
Serial.begin(9600);
Serial.println("Simulasi Non-Maskable Interrupt: Tekan tombol untuk trigger LED.");
}
void loop() {
// Simulasi proses utama (program utama yang memakan waktu)
Serial.println("Program utama sedang berjalan...");
delay(1000); // Delay 1 detik
// Tetapkan status LED
if (ledState) {
digitalWrite(ledPin, HIGH);
} else {
digitalWrite(ledPin, LOW);
}
}
// Interrupt Service Routine (ISR)
void ISR_NMI() {
// ISR untuk Non-Maskable Interrupt
Serial.println("Non-Maskable Interrupt dipicu!");
ledState = !ledState; // Toggle LED
}