/*
 * AVRGCC2.c
 *
 * Created: 11.04.2014 17:18:55
 *  Author: B2
 */ 

// запаеная в плату на светодиод
#define LED_PORT_DDR        DDRD /* B */
#define LED_PORT_OUTPUT     PORTD  /* B */
#define LED_BIT             6 /* 0 */

#define LED2_PORT_DDR        DDRB 
#define LED2_PORT_OUTPUT     PORTB  
#define LED2_BIT             0 

#include <avr/io.h>
#include <avr/interrupt.h>
#include <avr/wdt.h>
#include <util/delay.h>


volatile unsigned char sec = 0, flag = 0, min = 0;

// обработчик прерывания
ICR(TIMER1_OVF_vect) 
{
    TCNT1H = 0;
    TCNT1L = 0;
    flag = 1;
}

void initTimer1(void)
{
    TCCR1A = 0; // выводы -нет, шим - нет
    TCNT1 = 0; // стартуем начиная с нуля
    TCCR1B = 3; // предделитель 64 (1024 - это 5)
    TIMSK |= _BV(TOIE1); // Прерывание по переполнению ТС1        
}

int main(void)
{
    LED_PORT_DDR |= _BV(LED_BIT); // pin D6 - output LED
    LED2_PORT_DDR |= _BV(LED2_BIT); // pin B0 - output LED2
    LED_PORT_OUTPUT &= ~_BV(LED_BIT);	// v 0 - светодиод горит
    LED2_PORT_OUTPUT &= ~_BV(LED2_BIT);	// v 0 - светодиод горит
    _delay_ms(500);
    LED_PORT_OUTPUT |= _BV(LED_BIT); // v 1 - светодиод не горит
    LED2_PORT_OUTPUT |= _BV(LED2_BIT); // v 1 - светодиод не горит

initTimer1();
asm ("sei");	
while(1)
    {
        if (flag == 1)
            {
		        flag = 0;
		        sec++;
		        if(sec>59) 
                    {
			            LED_PORT_OUTPUT &= ~_BV(LED_BIT); // Если таймер сработал - зажечь светодиод
			            LED2_PORT_OUTPUT &= ~_BV(LED2_BIT); // Если таймер сработал - зажечь светодиод
			            sec=0;
			            min++;
			            if(min>59) min=0;
			        }
		    }
    }
}

