/*****************************************************
Chip type           : ATmega8515
Program type        : Application
Clock frequency     : 1,000000 MHz
*****************************************************/

#include <mega8515.h>
#include <delay.h>

unsigned int N=0;

//Внешнее прерывание 0
interrupt [EXT_INT0] void ext_int0_isr(void)
{
  //Устраняем дребезг контаков
  delay_us(100);
  //При каждом нажатии кнопки увеличиваем яркость
  N++;
  if (N==6){	//Обнуляем переменную, отключаем ШИМ, выводим на выходе "0"
    TCCR0=0x00;
    PORTB.0=0;
    N=0;
  }else if (N==5){	//Отключаем ШИМ, выводим на выходе "1" (можно вывести ШИМ, близкий к 100%)
    TCCR0=0x00;
    PORTB.0=1;
  }else{		//Выводим ШИМ
    TCCR0=0x69;
    OCR0=N*50;	//В этом регистре содержится значение ШИМ 0-го таймера
  };
}

void main(void)
{
// Port B initialization
// Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=Out 
// State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=0 
PORTB=0x00;
DDRB=0x01;

// Timer/Counter 0 initialization
// Clock source: System Clock
// Clock value: 1000,000 kHz
// Mode: Fast PWM top=FFh
// OC0 output: Non-Inverted PWM
TCCR0=0x69;
TCNT0=0x00;
OCR0=0x00;

// External Interrupt(s) initialization
// INT0: On
// INT0 Mode: Falling Edge
// INT1: Off
// INT2: Off
GICR|=0x40;
MCUCR=0x02;
EMCUCR=0x00;
GIFR=0x40;

// Global enable interrupts
#asm("sei")

while (1)
      {
      };
}
