Рефераты. Микроконтроллеры семейства AVR фирмы Atmel

▪ Rd, Rr – регистры общего назначения с номерами d и r соответственно;

▪ (Rd), (Rr) – байты в регистрах Rd и Rr соответственно;

▪ Rd.b – разряд b (b = 0 – 7) регистра Rd, бит в разряде Rd.b;

▪ $ - указатель шестнадцатеричного кода;

▪ ^, ˅,             - знаки логических операций И, ИЛИ, исключающее ИЛИ соответственно;

▪ (   ), (   ), (   ) – знаки операций НЕ, сдвиг кода вправо, сдвиг кода влево соответственно.

Арифметические операции – сложение и вычитание – могут выполняться с числами без знака в двоичном коде и с числами со знаком в дополнительном двоичном коде. В отличие от микроконтроллеров многих других семейств, в которых вычитание сводится к сложению с числом с изменённым знаком (X–Y = X + (-Y)), в микроконтроллерах семейства AVR вычитание выполняется с помощью аппаратного двоичного вычитателя.

При выполнении арифметических и логических операций кроме кода результата формируются значения признаков результата. При выполнении операций сравнения (команды №№ 18, 19 и 27) формируются только значения признаков результата.

Значения признаков результата представлены состоянием разрядов регистра состояния SREG (№$33F). Используются шесть признаков результата, которым присвоены имена C (SREG.0), Z(SREG.1) N (SREG.2), V (SREG.3, S (SREG.4) и H (SREG.5). В табл. 2.1 – 2.3 признаки, значения которых формируются при выполнении команд, отмечены знаком «+» или указано их название.

При выполнении разных операций значение признаков формируется по разным правилам.

Признак C принимает единичное значение:

▪ при появлении единицы переноса из старшего разряда при выполнении операции сложения (команды №№ 14, 15 и 32);

▪ при появлении единицы займа в старший разряд при выполнении операции сложения (команды №№ 4, 16, 17, 18, 19, 25, 26, 27 и 33);

▪ при выходе единицы за пределы разрядной сетки при выполнении операции сдвига (команды №№ 7, 8, 9, 10 и 11).

Единичное значение признака C при выполнении операций сложения и вычитания с числами без знака свидетельствует о получении неправильного результата операции  вследствие переполнения разрядной сетки.

Признак Z принимает единичное значение при получении нулевого результата операции. При выполнении операции вычитания с учётом займа (команды №№ 17, 19 и 26) Z = 1, если нулевой результат получен при выполнении данной и предшествующей операций.

Признак N имеет значение, равное значению старшего разряда кода результата. При выполнении арифметических операций с числами со знаком и отсутствии переполнения разрядной сетки он представляет знак результата.

Признак V принимает единичное значение, если при выполнении арифметической операции с числами со знаком возникло переполнение разрядной сетки.

Признак 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.                 Белов А.В. Самоучитель разработчика устройств на микроконтроллерах AVR . – Санкт-Петербург, «Наука и техника» 2010 г.

2.                 #"_GoBack">


Страницы: 1, 2, 3, 4, 5, 6, 7, 8



2012 © Все права защищены
При использовании материалов активная ссылка на источник обязательна.