#include<avr/io.h>
#include<util/delay.h>

#define DELAY 0
#define DELAY_STEP 3

void Forward()
{
	PORTB = (1<<PB2);
	_delay_ms(5);
	PORTB = 0;
	_delay_ms(DELAY);
	PORTB = (1<<PB3);
	_delay_ms(5);
	PORTB = 0;
	_delay_ms(DELAY);
	PORTB = (1<<PB1);
	_delay_ms(5);
	PORTB = 0;
	_delay_ms(DELAY);
	PORTB = (1<<PB0);
	_delay_ms(5);
	PORTB = 0;
	_delay_ms(DELAY);
}

void Reverse()
{
	PORTB |= (1<<PB0);
	_delay_ms(DELAY_STEP);
	PORTB = 0;
	_delay_ms(DELAY);
	PORTB |= (1<<PB1);
	_delay_ms(DELAY_STEP);
	_delay_ms(DELAY);
	PORTB |= (1<<PB3);
	_delay_ms(DELAY_STEP);
	PORTB = 0;
	_delay_ms(DELAY);
	PORTB |= (1<<PB2);
	_delay_ms(DELAY_STEP);
	_delay_ms(DELAY);
}


int main ()
{
	DDRB = (1<<PB0) | (1<<PB1) | (1<<PB2) | (1<<PB3);
	PORTB = 0;

	while(1)
	{
		Forward();
	}

	return 0;
}
