Atmega128: ISR()
исходный код программы на языке C для микроконтроллера Atmega128, осуществляющая мигание светодиода с частотой 1 секунда по прерыванию
#include <avr/io.h>
#include <avr/interrupt.h>
#include <util/delay.h>
void init() {
DDRD |= (1 << PD7); // Настройка порта PD7 на вывод
// Настройка таймера1
TCCR1B |= (1 << WGM12); // CTC режим работы таймера
TCCR1B |= (1 << CS12); // Установка предделителя 256
OCR1A = 15624; // Для частоты 1 Гц при тактовой частоте 1 МГц
TIMSK |= (1 << OCIE1A); // Разрешить прерывание по совпадению с OCR1A
sei(); // Включение прерываний
}
ISR(TIMER1_COMPA_vect) {
PORTD ^= (1 << PD7); // Инвертирование состояния PD7 (светодиод)
}
int main() {
init(); // Инициализация
while (1) {
// Основной цикл программы
// Можно здесь выполнять другие операции
}
return 0;
}