
и подключим её к выводу порта В, к нулевому разряду. Откроем мастер Code Wizard AVR, и создадим новый проект:

Источник тактовых импульсов по умолчанию установлен системным, частоту таймера устанавливаем равной 3906 кГц, и поставим галочку прерывания по переполнению. Щас я объясню что почём.
Таймер 0 восьмибитный, то есть он считает с 0 до 255, при превышении числа 255 происходит переполнение, вырабатывается прерывание и значение таймера сбрасывается в 0. При генерации прерывания основная программа останавливается и происходит переход на подпрограмму обработчик прерывания по вектору записанному в начале памяти программ. Для каждого события отведён свой вектор. Основная программа не замечает прерываний, но она может ими управлять.
Давайте реализуем это всё на практике.
Далее заполним наш бесконечный цикл:

В бесконечном цикле программа проверяет нажатие кнопки, и переключает прерывания, разрешая или запрещая их. обратите внимание на команду #asm("sei")/#asm("cli"), это инструкция компилятору для вставки в данном месте команды ассемблера разрешения/запрещения прерывания. Таким образом мы запускаем/останавливаем бегущие огни.
Подробнее с прерываниями можно ознакомиться в даташите на ATmega8, даташит можно найти в "Справочнике" на нашем сайте.
Продолжение следует...
Александр
Камрад, рассмотри датагорские рекомендации
🌼 Полезные и проверенные железяки, можно брать
Опробовано в лаборатории редакции или читателями.