63765 (695441), страница 2
Текст из файла (страница 2)
При описании операций в табл. 1—3 используются следующие обозначения:
Таблица 11
№ | Операция | Мнемокод команды | № | Операция | Мнемокод команды |
91 | I = 0 | BRID k | 92 | I = 1 | BRIE k |
93 | T = 0 | BRTC k | 94 | T = 1 | BRTS k |
95 | H = 0 | BRHC k | 96 | H = 1 | BRHS k |
97 | S = 0 | BRGE k | 98 | S = 1 | BRLT k |
99 | V = 0 | BRVC k | 100 | V = 1 | BRVS k |
101 | N = 0 | BRPL k | 102 | N = 1 | BRMI k |
103 | Z = 0 | BRNE k | 104 | Z = 1 | BREQ k |
105 | C = 0 | BRCC k | 106 | C = 1 | BRCS k |
107 | C = 0 | BRSH k | 108 | C = 1 | BRLO k |
109 | SREG.b=0 | BRBC b, k | 110 | SREG.b= 1 | BRBS b, k |
k = -64 – +63; b = 0 – 7 |
Таблица 12
№ | Операция | Мнемокод команды | № | Операция | Мнемокод Команды |
111 |
| SBRC | 112 |
| SBRS |
113 |
| SBIC | 114 |
| SBIS |
115 |
| CPSE | |||
d, r = 0 – 31; P = 0 – 31 (!); b = 0 – 7 |
Таблица 13
№ | Операция | Мнемокод команды |
116 | МК – режим энергосбережения | SLEEP |
117 | Перезапуск WDT | WDR |
118 | Нет | NOP |
■ RdRr — регистры общего назначения с номерами d и r соответственно;
■ (Rd), (Ri) — байты в регистрах Rd n R, соответственно;
■ Rd.b — разряд b (b = 0—7) регистра Rfi, бит в разряде Rd.b;
■ $ — указатель шестнадцатернчного кода;
■ ^, v, + - знаки логических операции И, ИЛИ, исключающее ИЛИ соответственно;
■ (‾)/( ),( ) — знаки операции НЕ, сдвиг кода вправо, сдвиг кода влево соответственно.
Арифметические операции — сложение и вычитание — могут выполняться с числами без знака в двоичном коде и с числами со знаком в дополнительном двоичном коде. В отличие от микроконтроллеров многих других семейств, в которых вычитание сводится к сложению с числом с измененным знаком (X-Y = X + (-Y )), в микроконтроллерах семейства AVR вычитание выполняется с помощью аппаратного двоичного вычитателя. Работа двоичного вычитателя рассмотрена в приложении П7.
При выполнении арифметических и логических операций кроме кода результата формируются значения признаков результата. При выполнении операций сравнения (команды М»№ 18, 19 и 27) формируются только значения признаков результата.
Значения признаков результата представлены состоянием разрядов регистра состояния SREG (№ S3F). Используются тесть признаков результата, которым присвоены имена С (SREG.O), Z (SREG.1) N (SREG.2), V (SREG.3), S (SREG.4) и Н (SREG.5). В табл. 1-3 признаки, значения которых формируются при выполнении команд, отмечены знаком "+" пли указано их значение.
При выполнении разных операций значение признаков формируются по разным правилам.
Признак С принимает единичное значение:
■ при появлении единицы переноса из старшего разряда при выполнении операции сложения (команды №№ 14, 15 и 32);
■ при появлении единицы займа в старший разряд при выполнении операции вычитания (команды №>№ 4, 16, 17, 18, 19, 25, 26, 27 и 33);
■ при выходе единицы за пределы разрядной сетки при выполнении операции сдвига (команды №№ 7, 8, 9, 10 и 11).
Единичное значение признака С при выполнении операций сложения и вычитания с числами без знака свидетельствует о получении неправильного результата операции вследствие переполнения разрядной сетки.
Признак Z принимает единичное значение при получении нулевого результата операции. При выполнении операции вычитания с учетом займа (команды №№ 17, 19 и 26) Z = 1, если нулевой результат получен при выполнении данной и предшествующей операций.
Признак N имеет значение, равное значению старшего разряда кода результата. При выполнении арифметических операции с числами со знаком и отсутствии переполнения разрядной сетки он представляет знак результата.
Признак V принимает единичное значение, если при выполнении арифметической операции с числами со знаком возникло переполнение разрядной сетки.
Признак S = N+V представляет знак результата при выполнении арифметических операций с числами со знаком вне зависимости от переполнения разрядной сетки. При переполнении разрядной сетки (V=l) знак результата противоположен значению в старшем разряде кода результата.
Признак Н принимает единичное значение при наличии единицы переноса из разряда D3 в разряд D4 при выполнении операции сложения, при наличии единицы займа в разряд D3 из разряда D4 при выполнении операции вычитания и при передаче единицы из разряда D3 в разряд D4 при выполнении операции сдвига кода влево.
Команды с обращением по адресу SRAM
По командам с обращением по адресу в адресном пространстве SRAM выполняются операции пересылки (копирования) байта между регистром общего назначения и элементом, которому соответствует адрес в адресном пространстве SRAM. Таким элементом может быть регистр общего назначения (адреса от $00 до $1F), регистр ввода-вывода (адреса от $20 до $5F), ячейка памяти в SRAM (адреса от $60 до максимального адреса в SRAM), ячейка памяти в ERAM (адреса от максимального адреса в SRAM +1 до максимального адреса в ERAM) (см. п. 1.5).
Команды с обращением по адресу в адресном пространстве SRAM описаны в табл. 4 и 5.
Машинные коды команд №№ 34 и 35 имеют формат "2 слова", машинные коды остальных команд — формат "слово". Команды выполняются за 2 такта, а при обращении к ячейкам в ERAM — за 3 такта. В случае необходимости в цикл выполнения команды при обращении к ERAM может быть введен дополнительный такт ожидания.
В табл. 4 и 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 реализуется прямая адресация. Адрес байта (А = к) указывется в коде команды.
В командах №№ 36—57 реализуется косвенная адресация. Адрес байта находится в паре регистров X, Y или Z. При выполнении команд №№ 42—47 после выполнения пересылки адрес в паре регистров аппаратно увеличивается па единицу. При выполнении команд №№ 48—53 до выполнения пересылки адрес в паре регистров аппаратно уменьшается на единицу. При выполнении команд №№ 54—57 адрес, по которому производится обращение, равен адресу в паре регистров Y или Z, увеличенному на число q, которое указано в коде команды. Адрес в паре регистров остается без изменения.
В командах №№ 58 и 59 в качестве кода адреса используется код, находящийся в регистре-указателе стека. При запуске микроконтроллера в регистр-указатель стека заносится код числа 0. Для нормальной работы стека в регистр-указатель стека в начале программы необходимо занести код другого числа. Обычно в качестве такого числа используют старший адрес в SRAM. Например, для микроконтроллера типа 8515 таким адресом является число $025F.
Команды с обращением к регистрам ввода–вывода
По командам с обращением к регистрам ввода-вывода выполняются операции пересылки (копирования) байта между регистром общего назначения и регистром ввода-вывода с использованием для выбора регистра ввода-вывода его номера ($00 - $3F). Команды с обращением к регистрам ввода-вывода описаны в табл. 6. Машинные коды команд имеют формат "слово". Команды выполняются за один такт.
В табл. 6 используются следующие новые обозначения:
■ РгР — регистр ввода-вывода с номером Р;
■ (РгР) — байт в регистре РгР.
При записи мнемокода команды вместо конкретного номера регистра может использоваться его символическое имя. Все регистры ввода-вывода имеют штатные имена. Имена регистров ввода-вывода и их номера приведены в приложении П4. У микроконтроллеров разных типов регистры ввода-вывода, имеющие одинаковые имена, могут иметь разные номера. При записи в мнемокодах имен регистров вместо их номера необходимо использовать версию AVR-Ассемблера для микроконтроллера данного типа.
Команда с обращением к FlashROM
По команде с обращением к FlashROM выполняется пересылка (копирование) байта из половины ячейки памяти в FlashROM в регистр общего назначения R0. Команда описана в табл. 7. Машинный код команды имеет формат "слово". Команда выполняется за три такта.
До выполнения команды необходимо адрес, соответствующий ячейке памяти в FlashROM, в которой хранится константа, умножить на 2 и записать в пару регистров Z (№№ $30, $31).
При умножении на 2 (сдвиг кода влево на один разряд) в младшем разряде регистра ZL ($30) оказывается цифра 0. При нулевом значении младшего разряда выбирается байт из младшей половины ячейки FlashROM. Для выбора байта из старшей половины ячейки необходимо число, код которого находится в паре регистров Z, увеличить на 1 с использованием команды № 33 с мнемокодом ADIW R30, 1 или ADIW ZL, 1.
Запись констант в FlashROM выполняется при программировании микроконтроллера.
Команды операций с битами
Команды операций с битами описаны в табл. 8 и 9. Машинные коды всех команд имеют формат "слово". Команды №№ 65 и 66 выполняются за 2 такта, остальные команды — за 1 такт.
В табл. 8 используется следующее новое обозначение:
■ РгР.b — разряд b (b = 0—7) регистра ввода-вывода с номером Р (Р = $00 - $1F (!)), бит в разряде РгР.Ь.