#include <avr/io.h>
#include <avr/interrupt.h>
#include <util/delay.h>
void init_btn()
{
// Set pin 2 as input
DDRD &= ~(1 << PD2);
// Set pin 2 as pullup
PORTD |= (1 << PD2);
// when to trigger interrupt
// none = on low, 0 = on change, 1 = on down, 1 & 0 = on up,
EICRA |= (1 << ISC01);
// enable interrupts for int0
EIMSK |= (1 << INT0);
// enable global interrupts
sei();
}
// Interrupt service routine (ISR) for INT0
ISR(INT0_vect)
{
// Flip pin state
PORTB ^= (1 << PB5);
}
int main()
{
// onboard led pin > output
DDRB |= (1 << PB5);
// init button
init_btn();
// loop forever
while (1);
return 0;
}
nano:12
nano:11
nano:10
nano:9
nano:8
nano:7
nano:6
nano:5
nano:4
nano:3
nano:2
nano:GND.2
nano:RESET.2
nano:0
nano:1
nano:13
nano:3.3V
nano:AREF
nano:A0
nano:A1
nano:A2
nano:A3
nano:A4
nano:A5
nano:A6
nano:A7
nano:5V
nano:RESET
nano:GND.1
nano:VIN
nano:12.2
nano:5V.2
nano:13.2
nano:11.2
nano:RESET.3
nano:GND.3
btn1:1.l
btn1:2.l
btn1:1.r
btn1:2.r