// Abhay Prahaladhan
// helloButton
// Based on hello.ftdi.44.echo.c by Neil Gershenfeld
// and blinking.led.c by Phillipa Mothersill


#include <avr/io.h>

#define output(directions,pin) (directions |= pin) // set port direction for output
#define input(directions,pin) (directions &= (~pin)) // set port direction for output
#define set(port,pin) (port |= pin) // set port pin
#define clear(port,pin) (port &= (~pin)) // clear port pin
#define pin_test(pins,pin) (pins & pin) // test for port pin

#define led1_port PORTA
#define led1_direction DDRA
#define led1 (1<<PA7)


#define button_port PORTA
#define button_direction DDRA
#define button (1<<PA3)
#define button_pins PINA


int main(void) {
    //initialize output pins
    set(button_port, button);
    input(button_direction, button);
    
    set(led1_port, led1);
    output(led1_direction, led1);
   
    clear(led1_port,led1);
    
    //main loop
    while (1) {
        if(0 == pin_test(button_pins, button)){
            set(led1_port,led1); //LED ON
        } else {
            clear(led1_port,led1); //LED OFF
        }
    }
}
