#include <avr/io.h> // Библиотека для работы с портами ввода-вывода
#include <util/delay.h> // Библиотека для работы с временной задержкой
#include <avr/interrupt.h>
#define F_CPU 1000000UL // Директива установки частоты микроконтроллера
volatile uint8_t counter = 0;
int main ()
{
DDRC &= ~(1 << PC0); // Настройка вывода PD5 на вход
// Настройка линии PD на выход
DDRD = 0b11111111;
PORTD = 0b00000000;
// Настройка прерывания по переднему фронту
EICRA |= (1 << ISC01) | (1 << ISC00);
// Разрешение внешнего прерывания INT0
EIMSK |= (1 << INT0);
// Разрешение глобальных прерываний
Serial.end();
sei();
// Главный цикл работы МК
while (1)
{
_delay_ms(500);
for(int i = 0; i < 8; i++){
// Включение напряжения на выводе PB0
PORTD |= (1 << i);
_delay_ms(500); // Пауза 500 мс (0.5 с)
}
for(int i = 0; i < 8; i++){
// Отключение напряжения на выводе PB0
PORTD &= ~(1 << i);
_delay_ms(500);
}
}
}
ISR(INT0_vect) {
counter++;
if(counter > 2){
counter = 0;
}
}