#include <avr/io.h>
#include <stdio.h>
#include <util/delay.h>
#include <avr/interrupt.h>
#include "mlib.h"
#define F_CPU 1000000UL

uint8_t fst = 0;
uint8_t hours = 0, minute = 0, second = 0;  //  time
uint8_t number = 0, month = 0, year = 0;  //   date 

void setup()
{
	/*
		Port setup
	*/
	DDRB = 0b11111111;
	DDRD = 0b01000011;

	preload();

	/*
		Timer setup
	*/
	TCCR1B = 0b00000100;
	TIMSK  = 0b10000000;
	TCNT1 = 26473;
	/*
		Button setup
	*/
	GIMSK = 0b11000000;
	MCUCR = 0b00001111;
	sei();
}

ISR(INT0_vect)
{

}

ISR(INT1_vect)
{
	sei();
	_delay_ms(10);
	if (PIND << 4 >> 7 == 1)
	{
		for (int i = 0; i < 750; ++i)
		{
			show(hours%10, 1, 0);
			_delay_ms(0.5);
			show(hours/10, 2, 0);
			_delay_ms(0.5);
		}
		clear();
		_delay_ms(5);
		for (int i = 0; i < 750; ++i)
		{
			show(minute%10, 1, 1);
			_delay_ms(0.5);
			show(minute/10, 2, 1);
			_delay_ms(0.5);
		}
		clear();
	}
}

ISR(TIMER1_OVF_vect)
{
	TCNT1 = 26473;
	second+=10;
	if (second == 60) minute++, second = 0;
	if (minute == 60) minute = 0, hours++;
	if (hours == 24) hours = 0;
}

int main(void)
{
	setup();
    while(1)
    {
		/*PORTD = 0b01000000;
		_delay_ms(100);
		PORTD = 0x00;
		_delay_ms(100);*/
    }
}
