#include <avr/io.h>
#include <inttypes.h>
#include <avr/eeprom.h>


#define MR  PORTB &= ~(1<<PB3); PORTB |= (1<<PB3)
#define SH  PORTB |=  (1<<PB2); PORTB &= ~(1<<PB2)
#define OUT PORTB |=  (1<<PB1); PORTB &= ~(1<<PB1)
#define D_H  PORTB |=  (1<<PB0)
#define D_L  PORTB &= ~(1<<PB0)



void ledout(unsigned short szam){
  MR;
  for(signed char i=15; i>=0; i--){
    if (szam & (1<<i)) D_H;
	else D_L;
	SH;
  }
  OUT;

}

unsigned short bar(char hosz){
  unsigned short tar=0;
  hosz=16-hosz;
  for(signed char i=15; i>=hosz; i--){
    tar|=1<<i;
    
  }
  return tar;
}






int main()
{   
    DDRB=0xFF;
    
    uint8_t puffer=0;
    EECR=0b00000000;
    
    eeprom_write_byte((uint8_t*) 10, 6);

    loop_until_bit_is_clear(EECR, EEPE);
    loop_until_bit_is_clear(SPMCSR, SPMEN);
    EEAR=10;
    EEDR=3;
    EECR|=_BV(EEMPE);
    EECR|=_BV(EEPE);

    loop_until_bit_is_clear(EECR, EEPE);
    EEAR=10;
    EECR|=_BV(EERE);
    loop_until_bit_is_clear(EECR, EERE);
    puffer=EEDR;

    ledout(bar(puffer));
}
