//  Code modified from Charles Holbrow website, How to Make (Almost) Anything, 2013.



#include <avr/io.h>

#define bit_get(p,m) ((p) & (m)) 
#define bit_set(p,m) ((p) |= (m)) 
#define bit_clear(p,m) ((p) &= ~(m)) 
#define BIT(x) (0x01 << (x)) 

  // Button  PA5 (pin 8).  
  // LED     PB2 (pin 5).  

int main()
{
  
  bit_set(PORTA,BIT(5));  // Turn button pull up resistor on by setting PA5(input) high
  bit_set(DDRB,BIT(2));   // Enable output on the LED pin (PB2)


  while (1)
  {
    if(bit_get(PINA,BIT(5)))  // Button is up, turn off
      bit_clear(PORTB,BIT(2));
    else                      // Button is down, turn on
      bit_set(PORTB,BIT(2));
  }
}