#include <avr/io.h>
#include <stdint.h>

const uint8_t bitLED = 5;
const uint8_t bitSP  = 7;

//nastaví bit určeného registru:
void setbit(volatile uint8_t &reg, uint8_t bit)
{
  reg = reg | (1 << bit);
}

//nuluje bit určeného registru:
void clearbit(volatile uint8_t &reg, uint8_t bit)
{
  reg = reg & ~(1 << bit);
}

//neguje bit určeného registru:
void negbit(volatile uint8_t &reg, uint8_t bit)
{
  reg = reg ^ (1 << bit);
}

//vrací stav bitu určeného registru:
uint8_t getbit(volatile uint8_t reg, uint8_t bit)
{
  return (reg & (1 << bit)) >> bit;
}

int main(void)
{
  setbit(DDRB, bitLED);  //PB5 je vystup
  setbit(PORTB, bitSP);  //zapne pull-up PB7
	
  while (1)
  {
    if(!getbit(PINB, bitSP))  //test sepnuteho SP
	{
	  setbit(PORTB, bitLED);	  //rozsvit LED
	}
	else
	{
	  clearbit(PORTB, bitLED);  //zhasni LED
	}
  }
}

