#include <avr/io.h>
#include <util/delay.h>



/* Обращает все порты в 0 */
void clear()
{
	PORTB = PORTB >> 8 << 8;
	PORTD = PORTD >> 2 << 2;
}

/* 
	Устанавливает число в диапозоне от 0 до 99 
	show(число, разряд, 00 или 0)
*/
void show(int n, int m, int N)
{
	if(m == 1)
	{
		PORTD = 0b00000001;
		if (n == 0)PORTB = 0b11100111;
		if (n == 1)PORTB = 0b10000100;
		if (n == 2)PORTB = 0b11010011;
		if (n == 3)PORTB = 0b11010110;
		if (n == 4)PORTB = 0b10110100;
		if (n == 5)PORTB = 0b01110110;
		if (n == 6)PORTB = 0b01110111;
		if (n == 7)PORTB = 0b11000100;
		if (n == 8)PORTB = 0b11110111;
		if (n == 9)PORTB = 0b11110110;
	}
	if (m == 2)
	{
		PORTD = 0b00000010;
		if (n == 0 && N == 0)PORTB = 0x00;
		if (n == 0 && N == 1)PORTB = 0b01111110;
		if (n == 1)PORTB = 0b00010010;
		if (n == 2)PORTB = 0b10111100;
		if (n == 3)PORTB = 0b10110110;
		if (n == 4)PORTB = 0b11010010;
		if (n == 5)PORTB = 0b11100110;
		if (n == 6)PORTB = 0b11101110;
		if (n == 7)PORTB = 0b00110010;
		if (n == 8)PORTB = 0b11111110;
		if (n == 9)PORTB = 0b11110110;
	}
}

/*
	Прелоудер
*/
void preload()
{
	for (int i = 0; i < 25; ++i)
	{
		PORTD = 0x01;
		PORTB = 0b00000001;
		_delay_ms(0.5);
		PORTD = 0x02;
		PORTB = 0b00000010;
		_delay_ms(0.5);
	}	
	for (int i = 0; i < 25; ++i)
	{
		PORTD = 0x01;
		PORTB = 0b00100001;
		_delay_ms(0.5);
		PORTD = 0x02;
		PORTB = 0b00010010;
		_delay_ms(-.55);
	}
	for (int i = 0; i < 175; ++i)
	{
		PORTD = 0x01;
		PORTB = 0b01100001;
		_delay_ms(0.5);
		PORTD = 0x02;
		PORTB = 0b00110010;
		_delay_ms(0.5);
	}
	for (int i = 0; i < 25; ++i)
	{
		PORTD = 0x01;
		PORTB = 0b01100000;
		_delay_ms(0.5);
		PORTD = 0x02;
		PORTB = 0b00110000;
		_delay_ms(0.5);
	}
	for (int i = 0; i < 25; ++i)
	{
		PORTD = 0x01;
		PORTB = 0b01000000;
		_delay_ms(0.5);
		PORTD = 0x02;
		PORTB = 0b00100000;
		_delay_ms(0.5);
	}

	clear();
}