Разработка программной и аппаратной поддержки к методическим указаниям Программирование микроконтроллеров
Категория реферата: Рефераты по информатике, программированию
Теги реферата: сочинения по русскому языку, культурология
Добавил(а) на сайт: Случевский.
Предыдущая страница реферата | 11 12 13 14 15 16 17 18 19 20 21 | Следующая страница реферата
Рассмотрим некоторые примеры:
1) ST X, Rn ;поместить данные из Rn в по адресу указанному в регистре Х;
2) ST X+, Rn ;тоже что и в 1), но впоследствии X инкрементируется;
3) ST -X, Rn ;предварительно X декрементируется;
В предыдущих трех примерах вместо Х могут быть Y или Z.
4) STD Y+c, Rn ; к значению Y прибавляется константа смещения ’c’ и по
этому адресу записываются данные из Rn. Y при это остается неизменен.
Вместо Y может быть только Z.
Команды пересылки данных.
Пересылка данных из одного места в другое является для AVR очень простой операцией, так как имеется очень большое количество команд, предназначенных для выполнения этой задачи. Ни одна команда пересылки данных не оказывает влияния на биты регистра состояния.
Команда LPM – загрузка данных из таблиц, хранящихся в памяти программ.
В этой команде младший бит индексного регистра Z используется для указания
байта, который будет читаться, если 0 – читается младший байт, 1 – старший.
Оставшиеся 14 байт используются для указания адреса слова.
Команда MOV – копирует содержимое одного РОН в другой. LDI – загружает в один из 16 старших РОН байт, содержащийся в команде. IN и OUT – доступ к регистрам ввода/вывода, начиная с нулевого адреса. Полный список всех команд пересылки данных можно найти в ПРИЛОЖЕНИИ 1, Таблица А.3.
На рис.2.16 наглядно показано схематическое выполнение команды LPM.
Рис. 2.16. Команда LPM.
Команды арифметических и логических операций.
Основными арифметическими операциями являются сложение и вычитание
двух чисел. Эти команды по большей части очевидны. Сложение и вычитание
содержимого двух регистров производиться при помощи команд ADD и SUB.
Модификации этих команд, которые учитывают значение флага переноса, позволяют выполнить операции над 8-, 16-, 24- и даже 32-разрядными числами
со знаком, хранящимися в регистрах.
Поясним функции флагов отрицательного результата N (negative), переполнения V (overflow) и знака S (sign), так как они имеют некоторые особенности и сложны для понимания при первоначальном знакомстве.
Флаг отрицательного результата N просто копирует значение бита 7 результата, который показывает, является результат положительным или отрицательным числом.
Флаг переполнения V в регистре SREG указывает на переполнение во время сложения или вычитания чисел со знаком. Рассмотрим пример:
ADD R1, R2
Флаг V будет установлен в 1, если в регистрах R1 и R2 содержаться положительные числа, а результат их сложения окажется больше 127, или оба числа отрицательны, а результат будет меньше –128. Рассмотрим пример с конкретными значениями:
LDI R1, 100 ;100 = 0b01100100
LDI R2, 100 ;Занести 0b01100100 R1 и R2
ADD R1, R2 ;R1 = R1 + R2 = 200 = 0b11001000
Десятичное число 200 в двоичной записи имеет значение бита 7 равное
1, что указывает на получение отрицательного результата. Следовательно, после выполнения операции сложения флаг N будет установлен в 1. Но в данном
случае вместе с флагом N будет так же установлен в 1 флаг V, указывая, что
произошло переполнение при обработке чисел со знаком.
Если содержимое R1 = R2 = - 100, то результатом сложения этих чисел будет 0b00111000 в двоичной системе счисления, что является положительным числом. При этом флаг N будет сброшен в 0,показывая, что результата положителен, однако будет установлен флаг V, означающий, что на самом деле это не так.
Использование флага S = N ^ V позволяет рассматривать результат как 9- разрядное число со знаком, где старшим (знаковым) разрядом как раз и является флаг S. Как было отмечено при описании флага V, он устанавливается в 1, когда бит 7 результата имеет неправильное значение, то есть результат не представлен правильным числом со знаком в дополнительном коде. Выполнив операцию «ИСКЛЮЧИТЕЛЬНОЕ ИЛИ» над значением флага V и бита 7 результата, который храниться в бите N, вы получите реальный знак результата. В первом примере (100 + 100) происходит установка в 1 флагов V и N, в результате флаг S будет равняться нулю (1 ^ 1 = 0). Во втором примере (- 100 - 100) флаг N сбрасывается в 0, а флаг V устанавливается в 1, поэтому флаг S будет равняться единице, указывая на то, что результат отрицательный.
Флаг S должен использоваться со старшим байтом числа. При операциях с
16-, 24- и 32-разрядными числами значение флага S надо проверять только
после завершения последней операции со старшим байтом числа. При операциях
с младшими байтами используется флаг переноса С, как обычно при выполнении
сложения и вычитания.
Команды ветвления
Команды относительного перехода RJMP и вызова подпрограммы RCALL
являются основными для изменения выполнения последовательности команд в МК.
При этом содержимое программного счетчика изменяется на величину смещения, которое задается в 12 младших битах кода команды.
МК может выполнять команды ветвления по значению определенных битов в
регистре состояния SREG. Поскольку номер бита и его значение должны быть
указанны в коде команды, то диапазон возможных адресов перехода составляет
+/- 63 относительно текущего адреса. Это означает, что применение команд
условных ветвлений весьма ограничено, но эту проблему можно решить при
помощи ветвления к команде, которая затем выполнит необходимый безусловный
переход.
Еще один класс команд ветвления – это команды пропуска. После проверки указанного условия, данные команды либо выполняют следующую команду, либо пропускают ее.
Рекомендуем скачать другие рефераты по теме: социальная работа реферат, изложение язык.
Предыдущая страница реферата | 11 12 13 14 15 16 17 18 19 20 21 | Следующая страница реферата