#include	<avr\io.h>
#include	<avr\signal.h>
#include	<avr\interrupt.h>

SIGNAL (SIG_OVERFLOW0)
{
	static unsigned char count = 0;
	static unsigned char flag = 1;
	
	if (flag)
	{
		if (count > 7)
		{
			flag = 0;
			count = 0;
		}
		else
			PORTB = 1 << count;
	}
	
	if (!flag)
	{
		if (count > 7)
		{
			count = 0;
			flag = 1;
		}
		else
			PORTB = PORTB >> 1;
	}
	
	++count;
}

void InitTimer0(void) 
{	
	TCCR0 |= (5 << CS00) /*e.g. */;	\
	TIMSK |= (1 << TOIE0);	/*interrupt overflow*/	\
}

void InitPorts(void)
{
	DDRB = 0xFF;
}
int main()
{
	InitTimer0();
	InitPorts();
	
	while(1);
	
	return 0;
}