Курсовая работа: Микроконтроллеры семейства AVR фирмы Atmel
  Признак S = NV представляет
знак результата при выполнении арифметических операций с числами со знаком вне
зависимости от переполнения разрядной сетки. При переполнении разрядной сетки
(V = 1) знак результата противоположен значению в старшем разряде кода
результата.
Признак H принимает
единичное значение при наличии единицы переноса из разряда D3 в разряд D4 при
выполнении операции вычитания и при передаче единицы из разряда D3 в разряд D4
при выполнении операции кода влево.
6.4 Команды с
обращением по адресу SRAM
По командам с
обращением по адресу в адресном пространстве SRAM выполняются операции
пересылки (копирования) байта между регистром общего назначения и элементом,
которому соответствует адрес в адресном пространстве SRAM. Таким элементом
может быть регистр общего назначения (адреса от $00 до $1F), регистр
ввода-вывода (адреса от $20 до $5F), ячейка памяти в SRAM (адреса от $60 до
максимального адреса в SRAM), ячейка памяти в ERAM(адреса от максимального
адреса в SRAM +1 до максимального адреса в ERAM).
Команды с обращением по
адресу в адресном пространстве SRAM описаны в табл. 2.4 и 2.5.
Машинные коды команд №№
34 и 35 имеют формат «2 слова», машинные коды остальных команд – формат
«слово». Команды выполняются за 2 такта, а при обращении к ячейкам в ERAM–за 3
такта. В случае необходимости в цикл выполнения команды при обращении к ERAM может
быть введён дополнительный такт ожидания.
В табл.2.4 и 2.5
используются следующие новые обозначения:
▪ ЯчА – регистр
общего назначения, регистр ввода-вывода, ячейка памяти в SRAM, ячейка памяти в
ERAM, к которым производится обращение с использованием адреса А из адресного
пространства SRAM;
▪ (ЯчА) – байт в
ЯчА;
▪X, Y, Z – пара
регистров общего назначения X (R26, R27), Y (R28, R29), Z (R30, R31)
соответственно;
▪ (X), (Y), (Z) –
слово в паре регистров X, Y, Z соответственно;
▪ СТЕК – ЯчА, к
которой производится обращение с использованием адреса, хранящегося в регистре
– указателе стека SP;
▪ (СТЕК) – байт в
СТЕК, е;
▪ (SP) – код
числа в регистре SP.
В командах №№ 34 и 35
реализуется прямая адресация. Адрес байта (A = k) указывается в коде команды.
В командах №№ 36 – 57
реализуется косвенная адресация. Адрес байта находится в паре регистров X, Y или
Z. При выполнении команд №№ 48 – 53 до выполнения пересылки адрес в паре
регистров аппаратно уменьшается на единицу. При выполнении команд №№ 54 – 57
адрес, по которому производится обращение, равен адресу в паре регистров Y или
Z, увеличенному на единицу q, которое указано в коде команды. Адрес в паре
регистров остаётся без изменения.
В командах №№ 58 и 59 в
качестве кода адреса используется код, находящейся в регистре-указателе стека.
При запуске микроконтроллера в регистр-указатель стека заносится код числа 0.
Для нормальной работы стека в регистр – указатель стека в начале программы
необходимо занести код другого числа. Обычно в качестве такого числа используют
старший адрес в SRAM. Например, для микроконтроллера типа 8515 таким адресом
является число $025F.
6.5 Команды с
обращением к регистрам ввода-вывода
По командам с
обращением к регистрам ввода-вывода выполняются операции пересылки
(копирования) байта между регистром общего назначения и регистром ввода-вывода
с использованием для выбора регистра ввода-вывода его номера ($00 - $3F).
Команды с обращением к регистрам ввода-вывода описаны в табл. 6. Машинные коды
команд имеют формат «слово». Команды выполняются за один такт.
В табл. 6 используются
следующие новые обозначения:
▪ PrP – регистр
ввода-вывода с номером P;
▪ (PrP) – байт в
регистре PrP.
При записи мнемокода
команды вместо конкретного номера регистра может использоваться его
символическое имя. Все регистры ввода-вывода имеют штатные имена. У
микроконтроллеров разных типов регистры ввода-вывода, имеющие одинаковые имена,
могут иметь разные имена. При записи в мнемокодах имён регистров вместо их
номера необходимо использовать версию AVR-Ассемблера для микроконтроллера
данного типа.
6.6 Команда с
обращением к FlashROM
По команде с обращением
к FlashROM выполняется пересылка (копирование) байта из половины ячейки памяти
в FlashROM в регистр общего назначения R0. Команда описана в табл. 2.7.
Машинный код команды имеет формат «слово». Команда выполняется за три такта.
До выполнения команды
необходимо адрес, соответствующий ячейке памяти в FlashROM, в которой хранится
константа, умножить на 2 и записать в пару регистров Z (№№ $30, $31).
При умножении на 2
(сдвиг кода влево на один разряд) в младшем разряде регистра ZL ($30)
оказывается цифра 0. При нулевом значении младшего разряда выбирается байт из
младшей половины ячейки FlashROM. Для выбора байта из старшей половины ячейки
необходимо число, код которого находится в паре регистров Z, увеличить на 1 с
использованием команды № 33 с мнемокодом ADIWR30, 1 или ADIWZL, 1.
Запись констант в
FlashROM выполняется при программировании микроконтроллера.
6.7 Команды операций с
битами
Команды операций с
битами описаны в табл. 2.8 и 2.9. Машинные коды всех команд имеют формат
«слово». Команды №№ 65 и 66 выполняются за 2 такта, остальные команды – за 1
такт.
В табл. 2.8
используется следующее новое обозначение:
▪ PrP.b – разряд
b (b = 0 – 7) регистра ввода-вывода с номером P (P = $00 - $1F (!)), бит в разряде
PrP.b.
По командам №№ 63 и 64
выполняется пересылка (копирование) бита между указанным разрядом регистра
общего назначения и разрядом Tрегистра SREG.
По командам №№ 65 и 66
устанавливается в требуемое состояние (0 или 1 соответственно) указанный разряд
регистра ввода-вывода, а по командам №№ 67 и 68 – указанный разряд регистра
SREG.
При записи мнемокода
команд №№ 65 и 66 вместо номера регистра (P) может быть указанно его
символическое имя, а вместо номера разряды (b) –символическое имя разряда. В микроконтроллерах
семейства AVR разряды многих регистров ввода-вывода имеют штатные имена. Эти
имена приводятся в тексте при рассмотрении устройств, в которых эти разряды
используются.
В микроконтроллерах
некоторых типов разряды одноимённых регистров с одинаковыми именами имеют
разные номера. При использовании штатных имён регистров ввода-вывода в штатных
имён разрядов в них необходимо использовать версию AVR Ассемблера для
микроконтроллера соответствующего типа.
При назначении штатного
имени разряда подразумевалось, что этот разряд принадлежит определённому
регистру ввода-вывода, однако в мнемокоде команд №№ 65 и 66 необходимо
указывать и имя/номер регистра и имя разряда.
Требуемое значение бита
(0 или 1) в разрядах регистров ввода-вывода с номерами от $20 до
$3Fустанавливается с использованием команд регистровых операций с мнемокодами
CBR (№ 29) и SBR (№ 31) соответственно.
В табл. 10 приведены
мнемокоды команд, по которым устанавливаются в определённое состояние (0 или 1)
разряды регистра SREG без указания в мнемокоде команды номера разряда.
6.8 Команды управления
ходом программы
В группу команд
управления ходом программы входят команды безусловного и условного переходов,
перехода в энергосберегающий режим, перезапуска сторожевого таймера и
«холостая» команда.
В табл. 11 описаны
команды безусловного перехода (№№ 85 и 86), безусловного перехода с возвратом
(№№ 87 и 88), возврата из подпрограммы (№89) и возврата из прерывающей
программы (№90). В таблице используются следующие новые обозначения:
▪ PC – счётчик команд;
▪ (PC) – код
числа в счётчике команд;
▪ k – приращение
числа в счётчике команд.
При записи программы на
языке ассемблера в мнемокодах команд №№85 и 87 вместо приращения k указывается
метка (символический адрес), записанная перед мнемокодом команды, к выполнению
которой нужно перейти. Приращение вычисляется и помещается в машинный код
команды в процессе ассемблирования.
Машинные коды команд,
описанные в табл. 11, имеют формат «слово». Команды безусловного перехода (№№
85 и 86) выполняются за 2 такта, команды безусловного перехода а возвратом (№№
87 и88) – за 3 такта, команды возврата (№№89 и 90) – за 4 такта.
Группа команд условного
перехода делится на две группы. В командах первой подгруппы в качестве условия
используется равенство нулю или равенство единице одного из битов в регистре
SREG. Условия и мнемокоды команд первой подгруппы приведены в табл. 12. Если
условие выполняется, совершается переход по адресу, который формируется с
использованием приращения k, указанного в коде команды ((PC) + 1 +k→PC;
-64 ≤k≤ 63).
Если условие не
выполняется, происходит переход к следующей команде в программе ((PC) + 1→PC).
При записи программы на
языке ассемблера в мнемокоде команд вместо приращения k указывается метка
(символический адрес), записанная перед мнемокодом команды, к выполнению
которой нужно перейти, если условие выполняется.
Машинные коды команд
первой подгруппы имеют формат «слово». При выполнении условия команда
выполняется за 2 такта, при выполнении условия – за 1 такт.
Если условие не
выполняется, совершается переход к очередной команде в программе ((PC) +1→PC).
Если условие выполняется, происходит переход к выполнению команды, следующей за
очередной ((PC) + 1 + 1/2→PC). Приращение числа в счётчике команд (1 или
2) определяется форматом машинного кода очередной команды (1 слово или 2 слова
соответственно).
Машинные коды команд
условного перехода второй подгруппы имеют формат «слово». Команды выполняются
за один такт, если условие не выполняется, за 2 такта, если условие выполняется
и очередная команда (K1) имеет формат «слово», или за 3 такта, если условие не
выполняется и очередная команда (K1) имеет формат «2 слова».
Страницы: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13 |