
#define F_CPU 1000000UL  // частота 1 MHz

#include <avr/io.h>      // библиотека I/O
#include <util/delay.h>  // библиотеки пауз

void led1(void) // светодиод 1
{
	DDRB = 0x00; // сделать все входами (погасить светодиоды все)
	PORTB = 0xF0; // сделать 4 первых пина входами Z, остальные подтянуты к +
	DDRB = 0x03; // сделать В0 и В1 выходами
	PORTB = 0x02; // сделать В0=0, а В1=1 (зажечь лед1)
}

void led2(void) // светодиод 2
{
	DDRB = 0x00; // сделать все входами (погасить светодиоды все)
	PORTB = 0xF0; // сделать 4 первых пина входами Z, остальные подтянуты к +
	DDRB = 0x03; // сделать В0 и В1 выходами
	PORTB = 0x01; // сделать В0=1, а В1=0 (зажечь лед2)
}

void led3(void) // светодиод 3
{
	DDRB = 0x00; // сделать все входами (погасить светодиоды все)
	PORTB = 0xF0; // сделать 4 первых пина входами Z, остальные подтянуты к +
	DDRB = 0x06; // сделать В1 и В2 выходами
	PORTB = 0x04; // сделать В1=0, а В2=1 (зажечь лед3)
}

void led4(void) // светодиод 4
{
	DDRB = 0x00; // сделать все входами (погасить светодиоды все)
	PORTB = 0xF0; // сделать 4 первых пина входами Z, остальные подтянуты к +
	DDRB = 0x06; // сделать В1 и В2 выходами
	PORTB = 0x02; // сделать В1=1, а В2=0 (зажечь лед4)
}

void led5(void) // светодиод 5
{
	DDRB = 0x00; // сделать все входами (погасить светодиоды все)
	PORTB = 0xF0; // сделать 4 первых пина входами Z, остальные подтянуты к +
	DDRB = 0x0C; // сделать В2 и В3 выходами
	PORTB = 0x08; // сделать В2=0, а В3=1 (зажечь лед5)
}

void led6(void) // светодиод 6
{
	DDRB = 0x00; // сделать все входами (погасить светодиоды все)
	PORTB = 0xF0; // сделать 4 первых пина входами Z, остальные подтянуты к +
	DDRB = 0x0C; // сделать В2 и В3 выходами
	PORTB = 0x04; // сделать В2=1, а В3=0 (зажечь лед6)
}

void led7(void) // светодиод 7
{
	DDRB = 0x00; // сделать все входами (погасить светодиоды все)
	PORTB = 0xF0; // сделать 4 первых пина входами Z, остальные подтянуты к +
	DDRB = 0x05; // сделать В0 и В2 выходами
	PORTB = 0x04; // сделать В0=0, а В2=1 (зажечь лед7)
}

void led8(void) // светодиод 8
{
	DDRB = 0x00; // сделать все входами (погасить светодиоды все)
	PORTB = 0xF0; // сделать 4 первых пина входами Z, остальные подтянуты к +
	DDRB = 0x05; // сделать В0 и В2 выходами
	PORTB = 0x01; // сделать В0=1, а В1=0 (зажечь лед8)
}

void led9(void) // светодиод 9
{
	DDRB = 0x00; // сделать все входами (погасить светодиоды все)
	PORTB = 0xF0; // сделать 4 первых пина входами Z, остальные подтянуты к +
	DDRB = 0x0A; // сделать В1 и В3 выходами
	PORTB = 0x08; // сделать В1=0, а В3=1 (зажечь лед9)
}

void led10(void) // светодиод 10
{
	DDRB = 0x00; // сделать все входами (погасить светодиоды все)
	PORTB = 0xF0; // сделать 4 первых пина входами Z, остальные подтянуты к +
	DDRB = 0x0A; // сделать В1 и В3 выходами
	PORTB = 0x02; // сделать В1=1, а В3=0 (зажечь лед10)
}

void led11(void) // светодиод 11
{
	DDRB = 0x00; // сделать все входами (погасить светодиоды все)
	PORTB = 0xF0; // сделать 4 первых пина входами Z, остальные подтянуты к +
	DDRB = 0x09; // сделать В0 и В3 выходами
	PORTB = 0x08; // сделать В0=0, а В3=1 (зажечь лед11)
}

void led12(void) // светодиод 12
{
	DDRB = 0x00; // сделать все входами (погасить светодиоды все)
	PORTB = 0xF0; // сделать 4 первых пина входами Z, остальные подтянуты к +
	DDRB = 0x09; // сделать В0 и В3 выходами
	PORTB = 0x01; // сделать В0=1, а В3=0 (зажечь лед12)
} 

void led(unsigned char x) // функция для работы всех остальных в цикле, спасибо DEMSON =)
{
	if (x==1) // Если х = 1, то
	{ 
		led1(); // запускаем функцию ЛЕД1
		return; // выход (все остальные ИФ работают также)
	}
	if (x==2)
	{ 
		led2();
		return;
	}
	if (x==3)
	{ 
		led3();
		return;
	}
	if (x==4)
	{ 
		led4();
	return;
		}
	if (x==5)
	{ 
		led5();
		return;
	}
	if (x==6)
	{ 
		led6();
		return;
	}
	if (x==7)
	{ 
		led7();
		return;
	}
	if (x==8)
	{ 
		led8();
		return;
	}
	if (x==9)
	{ 
		led9();
		return;
	}
	if (x==10)
	{ 
		led10();
		return;
	}
	if (x==11)
	{ 
		led11();
		return;
	}
	if (x==12)
	{ 
		led12();
		return;
	}
} // закрывающая скобка функции ЛЕД

unsigned char x;

int main(void) // галвная функция программы
{
	x = 1;
	
while(!0) // Бесконечный цикл
{
 	led(x);
	_delay_ms(500);
	x++;
	
	if (x==13)
		x = 1;
			
  
  
  
  
 
 
 // _delay_ms(500);      // Пауза 600 милиСек.
   

 
} // скобка для while(!0) 
} // скобка для main(void)