/* * Control PB5 with the two buttons. One button disables, the other enables. * The board uses interrupts for this. */ #define F_CPU 16000000UL #define __AVR_ATmega328P__ #include #include // code for INT0 ISR(INT0_vect) { PORTB |= (1 << PORTB5); } // code for INT1 ISR(INT1_vect) { PORTB &= ~(1 << PORTB5); } int main(void) { DDRB = 0xff; // write to B DDRD = 0; // read from D PORTD |= (1 << PORTD2) | (1 << PORTD3); // pull up D2 and D3 PORTB = 0; // enable external interruprs EIMSK |= (1 << INT0); EIMSK |= (1 << INT1); // trigger when anything changes EICRA |= (1 << ISC00); // for INT0 EICRA |= (1 << ISC10); // for INT1 sei(); // interrupt magic macro while (1) { // do nothing } }