Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Вопросы к первой контрольной точке.docx
Скачиваний:
0
Добавлен:
12.02.2026
Размер:
2.47 Mб
Скачать

8) Прерывания, вектор прерываний.

Прерывания – это аппаратные события, которые прекращают нормальный ход программы для выполнения какой-либо приоритетной задачи. При этом событие может быть как внутренним (от встроенной периферии самого микроконтроллера – таймеров, портов ввода-вывода, АЦП и других), так и внешним – например, появление на входе импульса от нажатой кнопки.

При возникновении прерывания микроконтроллер завершает текущую команду, сохраняет в стеке содержимое счетчика команд и совершает переход на адрес соответствующего вектора прерывания. По этому адресу, как правило, находится команда безусловного (JMP или RJMP) перехода к подпрограмме обработки прерывания. За каждым аппаратным прерыванием микроконтроллера закреплен свой адрес, и все вместе они образуют таблицу векторов прерываний, которая расположена в самом начале памяти программ. Поскольку у каждого микроконтроллера набор периферии разный, вектор прерываний также будет отличаться.

Т.е. вектор прерываний – ссылка на место в программе, отвечающее за обработку прерываний.

Поскольку прерывание нарушает стандартный ход выполнения программы и может возникнуть в любой момент времени, необходимо сохранить текущие данные. Для этого необходимо использовать стек, туда нужно переместить все регистры, используемые в обработчике прерывания, чтобы не потерять хранящиеся там данные. Также необходимо сохранять регистр флагов SREG, в котором хранится результат логических операций.

9) Основы языка Assembler для микроконтроллеров семейства avr. Синтаксис, классификация команд.

Язык ассемблера – система обозначений, используемая для представления в удобно читаемой форме программ, записанных в машинном коде. Команде языка ассмеблер один к одному соответствуют командам процессора. Фактически они представляют собой более удобную для человека символьную форму записи (мнемокоды) команд и их аргументов.

Каждая модель (или семейство) процессоров имеет свой набор команд и соответствующий ему язык ассемблера.

Комментарии - Обозначаются двумя способами - с помощью символа «;» или «//». Для объемных комментариев, занимающих несколько строчек, целесообразно использовать такую структуру: /* текст комментария */.

Операторы:

  • .def позволяет присвоить любому регистру микроконтроллера некоторые осмысленное символьное имя

  • .equ позволяет присвоить выражению или константе некоторую символьную метку.

  • .include позволяет подключать в тело программы часть кода из другого текстового файла.

  • .macro – оператор макроподстановки. В языках ассемблера макрос – символьное имя, заменяемое при обработке препроцессором на последовательность программных инструкций.

Операнды – адреса регистров, битов (любых ячеек памяти).

Типы ассемблерных команд:

  • Команды логических операций;

  • Команды арифметических операций и команды сдвига;

  • Команды операций с битами;

  • Команды пересылки данных;

  • Команды передачи управления;

  • Команды управления системой.

1. Команды логических операций. Позволяют выполнять стандартные логические операции над байтами, такие как логическое умножение (И), логическое сложение (ИЛИ), операцию исключающее ИЛИ, вычисление обратного (дополнительного до единицы) и дополнительного (дополнение до двух) кода числа. Сюда также можно отнести команды очистки/установки регистров. Операции выполняются между регистрами общего назначения или между регистром и константой; результат сохраняется в РOН.

2. Арифметические команды и команды сдвига. В эту группу входят команды, которые позволяют выполнять такие базовые операции, как сложение, вычитание, сдвиг (влево и вправо), инкремент и декремент.

3. Команды операций с битами. В эту группу входят команды, выполняющие установку или сброс заданного бита РOН или PBB.

4. Команды пересылки данных. Команды этой группы предназначены для пересылки содержимого ячеек, находящихся в адресном пространстве памяти данных.

5. Команды передачи управления. В эту группу входят команды перехода, вызова подпрограмм и возврата из них и команды типа «проверка/пропуск», пропускающие следующую за ними команду при выполнении некоторого условия. Также к этой группе относятся команды сравнения, формирующие флаги регистра SREG и предназначенные, как правило, для работы совместно с командами условного перехода.

6. Команды управления системой. NOP – пустая команда-заглушка; SLEEP – перевод МК в режим пониженного энергопотребления; WDR – сброс сторожевого таймера.