- •Вопросы к первой контрольной точке:
- •1) Комбинационная логика, основные элементы (и, или, не), их схемы на кмоп транзисторах.
- •5) Регистры на основе d-триггеров. Параллельные регистры, последовательные (сдвиговые) регистры. Временная диаграмма работы сдвигового регистра.
- •6) Общая структура микроконтроллерного устройства, алу, программный счётчик.
- •7) Виды памяти микроконтроллеров (на примере семейства avr). Стек и его инициализация.
- •8) Прерывания, вектор прерываний.
- •9) Основы языка Assembler для микроконтроллеров семейства avr. Синтаксис, классификация команд.
- •10) Регистры ввода-вывода. Схема устройства вывода микроконтроллера, управляющие регистры, режимы работы.
8) Прерывания, вектор прерываний.
Прерывания – это аппаратные события, которые прекращают нормальный ход программы для выполнения какой-либо приоритетной задачи. При этом событие может быть как внутренним (от встроенной периферии самого микроконтроллера – таймеров, портов ввода-вывода, АЦП и других), так и внешним – например, появление на входе импульса от нажатой кнопки.
При возникновении прерывания микроконтроллер завершает текущую команду, сохраняет в стеке содержимое счетчика команд и совершает переход на адрес соответствующего вектора прерывания. По этому адресу, как правило, находится команда безусловного (JMP или RJMP) перехода к подпрограмме обработки прерывания. За каждым аппаратным прерыванием микроконтроллера закреплен свой адрес, и все вместе они образуют таблицу векторов прерываний, которая расположена в самом начале памяти программ. Поскольку у каждого микроконтроллера набор периферии разный, вектор прерываний также будет отличаться.
Т.е. вектор прерываний – ссылка на место в программе, отвечающее за обработку прерываний.
Поскольку прерывание нарушает стандартный ход выполнения программы и может возникнуть в любой момент времени, необходимо сохранить текущие данные. Для этого необходимо использовать стек, туда нужно переместить все регистры, используемые в обработчике прерывания, чтобы не потерять хранящиеся там данные. Также необходимо сохранять регистр флагов SREG, в котором хранится результат логических операций.
9) Основы языка Assembler для микроконтроллеров семейства avr. Синтаксис, классификация команд.
Язык ассемблера – система обозначений, используемая для представления в удобно читаемой форме программ, записанных в машинном коде. Команде языка ассмеблер один к одному соответствуют командам процессора. Фактически они представляют собой более удобную для человека символьную форму записи (мнемокоды) команд и их аргументов.
Каждая модель (или семейство) процессоров имеет свой набор команд и соответствующий ему язык ассемблера.
Комментарии - Обозначаются двумя способами - с помощью символа «;» или «//». Для объемных комментариев, занимающих несколько строчек, целесообразно использовать такую структуру: /* текст комментария */.
Операторы:
.def позволяет присвоить любому регистру микроконтроллера некоторые осмысленное символьное имя
.equ позволяет присвоить выражению или константе некоторую символьную метку.
.include позволяет подключать в тело программы часть кода из другого текстового файла.
.macro – оператор макроподстановки. В языках ассемблера макрос – символьное имя, заменяемое при обработке препроцессором на последовательность программных инструкций.
Операнды – адреса регистров, битов (любых ячеек памяти).
Типы ассемблерных команд:
Команды логических операций;
Команды арифметических операций и команды сдвига;
Команды операций с битами;
Команды пересылки данных;
Команды передачи управления;
Команды управления системой.
1. Команды логических операций. Позволяют выполнять стандартные логические операции над байтами, такие как логическое умножение (И), логическое сложение (ИЛИ), операцию исключающее ИЛИ, вычисление обратного (дополнительного до единицы) и дополнительного (дополнение до двух) кода числа. Сюда также можно отнести команды очистки/установки регистров. Операции выполняются между регистрами общего назначения или между регистром и константой; результат сохраняется в РOН.
2. Арифметические команды и команды сдвига. В эту группу входят команды, которые позволяют выполнять такие базовые операции, как сложение, вычитание, сдвиг (влево и вправо), инкремент и декремент.
3. Команды операций с битами. В эту группу входят команды, выполняющие установку или сброс заданного бита РOН или PBB.
4. Команды пересылки данных. Команды этой группы предназначены для пересылки содержимого ячеек, находящихся в адресном пространстве памяти данных.
5. Команды передачи управления. В эту группу входят команды перехода, вызова подпрограмм и возврата из них и команды типа «проверка/пропуск», пропускающие следующую за ними команду при выполнении некоторого условия. Также к этой группе относятся команды сравнения, формирующие флаги регистра SREG и предназначенные, как правило, для работы совместно с командами условного перехода.
6. Команды управления системой. NOP – пустая команда-заглушка; SLEEP – перевод МК в режим пониженного энергопотребления; WDR – сброс сторожевого таймера.
