#define F_CPU 8000000UL // Внутреннего генератора 8МГц.
#include <avr/io.h>     // Стандартная библиотека.
#include <util/delay.h> // Библиотека задержек.
#include <avr/interrupt.h> //Библиотека прерываний.
#define S 1000
int puls [10] = {(0b00111111), (0b00000110), (0b01011011),
	            (0b01001111),(0b01100110), (0b01101101),
	            (0b01111101),(0b00000111),(0b01111111),
                (0b01101111),};
int r=0;
ISR (INT0_vect) // Устанавливаем вектор прерывания INT0.
    {
	 if (PIND == 0b11111011) // Если на порту PD2 минус, останавливаем
	                         // программу в основном цикле while
		{
		     PORTB = 0b10000000; // и включаем светодиод.
		}
		else                     // В противном случае
		{
			PORTB = 0b01111111;  // светодиод выключен.
		}
	}

int main(void)
{ 
	DDRB = 0b11111111;  // Настраиваем порт B на выход.
	DDRD = 0b00000000;  // Настраиваем порт D на вход.
	PORTD = 0b00000100; // Подтягиваем PD2 внутренним резистором к +5в.
	MCUCR = (0<<ISC01) | (0<<ISC00); //Если низкий уровень INT0 генерируем запрос прерывания.
	GICR |= (1<<INT0);  // Разрешаем работать прерыванию.
	GIFR = (1<<INTF0);
    asm("sei");         // Разрешаем глобальное прерывание. 
	while (1)
	{
		 for(r=0;r<=9;r++)      //******************************
		{                       //    От 0 до 9 шагаем         *
			PORTB = puls [r];   //                             *
			_delay_ms(S);       //******************************
		}
    }
	}
	