/*
 * ATtiny13 LED Flasher
 * File: main.c
 */
 
#include <avr/io.h>
#include <util/delay.h>
 
#define LED1  0x0
#define LED2  0x1
#define LED3  0x2
#define LED4  0x3
#define LED5  0x4
#define LED6  0x5



int main(void)
{
  	int mode; 
  	DDRB = (1<<LED1)|(1<<LED2)|(1<<LED3)|(1<<LED4)|(1<<LED5)|(1<<LED6); 
   	// kill all leds
  	//PORTB &= ~((1<<LED1)|(1<<LED2)|(1<<LED3)|(1<<LED4)|(1<<LED5)|(1<<LED6));
    
	const int msecsDelayPost = 150;
    //PORTB ^= (1<<LED2);
	int mm;
	while(1){
	for(mm=0; mm<2; mm++) {
    for (mode = 0; mode < 5; mode++) 
	{
		if (mode == 0) {PORTB |= (1<<LED1);} else 
		if (mode == 1) {PORTB |= (1<<LED1)|(1<<LED2);} else 
		if (mode == 2) {PORTB |= (1<<LED1)|(1<<LED2)|(1<<LED3);} else 
		if (mode == 3) {PORTB |= (1<<LED1)|(1<<LED2)|(1<<LED3)|(1<<LED4);} else 
		if (mode == 4) {PORTB |= (1<<LED1)|(1<<LED2)|(1<<LED3)|(1<<LED4)|(1<<LED5);} 
		//if (mode == 5) {PORTB |= (1<<LED1)|(1<<LED2)|(1<<LED3)|(1<<LED4)|(1<<LED5)|(1<<LED6);}
        _delay_ms (50);
    }
    for (mode = 0; mode < 5; mode++) 
	{
		if (mode == 0) {PORTB &= ~(1 << LED1);} else 
		if (mode == 1) {PORTB &= ~(1 << LED2);} else 
		if (mode == 2) {PORTB &= ~(1 << LED3);} else 
		if (mode == 3) {PORTB &= ~(1 << LED4);} else 
		if (mode == 4) {PORTB &= ~(1 << LED5);} 
		//if (mode == 5) {PORTB &= ~(1 << LED6);}
        _delay_ms (50);
    }
	//vissza
    for (mode = 1; mode < 6; mode++) 
	{
		if (mode == 1) {PORTB |= (1<<LED5);} else 
		if (mode == 2) {PORTB |= (1<<LED5)|(1<<LED4);} else 
		if (mode == 3) {PORTB |= (1<<LED5)|(1<<LED4)|(1<<LED3);} else 
		if (mode == 4) {PORTB |= (1<<LED5)|(1<<LED4)|(1<<LED3)|(1<<LED2);} else 
		if (mode == 5) {PORTB |= (1<<LED5)|(1<<LED4)|(1<<LED3)|(1<<LED2)|(1<<LED1);} 
		//if (mode == 5) {PORTB |= (1<<LED1)|(1<<LED2)|(1<<LED3)|(1<<LED4)|(1<<LED5)|(1<<LED6);}
        _delay_ms (50);
    }
    for (mode = 5; mode > 0; mode--) 
	{
		if (mode == 1) {PORTB &= ~(1 << LED1);} else 
		if (mode == 2) {PORTB &= ~(1 << LED2);} else 
		if (mode == 3) {PORTB &= ~(1 << LED3);} else 
		if (mode == 4) {PORTB &= ~(1 << LED4);} else 
		if (mode == 5) {PORTB &= ~(1 << LED5);} 
		//if (mode == 5) {PORTB &= ~(1 << LED6);}
        _delay_ms (50);
    }
  	//PORTB &= ~((1 << LED1) | (1 << LED2) | (1 << LED3) | (1 << LED4) | (1 << LED5));
	
	}
	
	int rr;
	for(mm=0; mm<10; mm++) {

    for (mode = 0; mode < 30; mode++) 
	{
		rr = (mode/3)-(mode/4);

		PORTB = (1<<LED1+rr);
        _delay_ms (msecsDelayPost);
    }

	}
	}
    return 0;
}

