Гребнев В.В. - Микроконтроллеры семейства AVR фирмы Atmel (1044208), страница 6
Текст из файла (страница 6)
Признак Х принимает единичное значение при получении нулевого результата операции. Прп выполнении операции вычитания с учетом займа (команды Хо% 17, 19 и 26) Х - 1, если нулевой результат получен при выполнении данной и предшествующей операций. Система команд Признак Х имеет значение, равное значению старшего разряда кода результата.
При выполнении арифметических операций с числами со знаком и отсутствии переполнения разрядной сетки он представляет знак результата. Признак Ч принимает единичное значение, если при выполнении арифметической операции с числами со знаком возникло переполнение разрядной сетки.
Признак Я -ХО+ Ч представляет знак результата при выполнении арифметических операций с числами со знаком вне зависимости от переполнения разрядной сетки. При переполнении разрядной сетки (Ч 1) знак результата противоположен значению в старшем разряде кода результата.
Признак Н принимает единичное значение прн наличии единицы переноса из разряда ВЗ в разряд Р4 при выполнении операции сложения, при наличии единицы займа в разряд РЗ из разряда 04 при выполнении операции вычитания и прп передаче единицы из разряда 03 в разряд В4 при выполнении операции сдвига кода влево. 2.3. Команды с обращением ло адресу ВШАМ По командам с обращением по адресу в адресном пространстве ЯКАМ выполняются операции пересылки (копирования) байта между регистром общего назначения и элементом, которому соответствует адрес в адресном пространстве ЯКАМ. Таким элементом может быть регистр общего назначения (адреса от $00 до $1Г), регистр ввода-вывода (адреса от $20 до $5Г), ячейка памяти в ЯКАМ (адреса от $60 до максимального адреса в ЯКАМ), ячейка памяти в ЕКАМ (адреса от максимального адреса в ЯКАМ +1 до максимального адреса в ЕКАМ) (см.
п. 1.5). Команды с обращением по адресу в адресном пространстве ЯКАМ описаны в табл. 2А и 2.5. Машинные коды команд ХоМо 34 и 35 имеют формат "2 слова", машинные коды остальных команд — формат "слово". Команды выполняются за 2 такта, а при обращении к ячейкам в ЕКЛМ вЂ” за 3 такта. В случае необходимости в цикл выполнения команды при обращении к ЕКАМ может быть введен дополнительный такт ожидания. В табл, 2А и 2.5 используются следующие новые обозначения: ° ЯчА — регистр общего назначения, регистр ввода-вывода, ячейка памяти в ЯКАМ, ячейка памяти в ЕКАМ, к которым производится обращение с использованием адреса Л нз адресного пространства ЯКАМ; ° (ЯчА) — байт в ЯчЛ; Глава 2 зг ° Х, У, 2'.
— пара регистров общего назначения Х (К26, 227), У (К28, К29), Х (КЗО, 231) соответственно; ° (Х), (У), (Х) — слово в паре регистров Х, У, Х соответственно; ° СТЕК вЂ” ЯчА, к которой производится обращение с использованием адреса, хранящегося в регистре-указателе стека 8Р; ° (СТЕК) — байт в СТЕК, е; ° (8Р) — код числа в регистре БР. В командах ХоМо 34 и 35 реализуется прямая адресация. Адрес байта (А = 1) указывается в коде команды. В командах ХвХв 36 — 57 реализуется косвенная адресация. Адрес байта находится в паре регистров Х, У или Х. При выполнении команд ХвХв 42 — 47 после выполнения пересылки адрес в паре регистров аппаратно увеличивается на единицу.
При выполнении команд ХоХо 48 — 53 до выполнения пересылки адрес в паре регистров аппаратно уменьшается на единицу. При выполнении команд Хо% 54 — 5? адрес, по которому производится обращение, равен адресу в паре регистров У или 2, увеличенному на число с1, которое указано в коде команды. Адрес в паре регистров остается без изменения. В командах ХвХв 58 и 59 в качестве кода адреса используется код, находящийся в регистре-указателе стека.
При запуске микроконтроллера в регистр-указатель стека заносится код числа О. Для нормальной работы стека в регистр-указатель стека в начале программы необходимо занести код другого числа. Обычно в качестве такого числа используют старший адрес в ЖАМ. Например, для микроконтроллера типа 8515 таким адресом является число $025Г (см. рис. 1.2). 2.4. Команды с обращением к регистрам ввода-вывода По командам с обращением к регистрам ввода-вывода выполня1отся операции пересылки (копирования) байта между регистром общего назначения и регистром ввода-вывода с использованием для выбора регистра ввода-вывода его номера ($00 - $3Г).
Команды с обращением к регистрам ввода-вывода описаны в табл. 2.6. Машинные коды команд имеют формат "слово". Команды выполняются за один такт. В табл. 2.6 используются следующие новые обозначения: ° РгР— регистр ввода-вывода с номером Р; ° (РгР) — байт в регистре РгР. При записи мнемокода команды вместо конкретного номера регистра может использоваться его символическое имя. Все регистры ввода- вывода имеют штатные имена. Имена регистров ввода-вывода и их зз :нстема команд номера приведены в приложении П4. У микроконтроллеров разных -.ппов регистры ввода-вывода, имеющие одинаковые имена, могут иметь разные номера. При записи в мнемокодах имен регистров вместо их омера необходимо использовать версию АЪ'К-Ассемблера для микро..онтроллера данного типа.
2.5. Команда с обращением к йазЬВОМ По команде с обращением к ИайКОМ выполняется пересылка копирование) байта из половины ячейки памяти в НайКОМ в регистр .5щего назначения КО. Команда описана в табл. 2.7. Машинный код . оманды имеет формат "слово". Команда выполняется за три такта. До выполнения команды необходимо адрес, соответствующий ячейке .—.амяти в ИавЬКОМ, в которой хранится константа, умножить на 2 и аписать в пару регистров Х (№№ $30, $31). При умножении на 2 (сдвиг кода влево на один разряд) в младшем разряде регистра Ц. ($30) оказывается цифра О. При нулевом значении ~падшего разряда выбирается байт из младшей половины ячейки НайКОМ.
Для выбора байта из старшей половины ячейки необходимо -:псло, код которого находится в паре регистров Х, увеличить на 1 с использованием команды Хо 33 с мнемокодом АВ1% КЗО, 1 или АИЖ;Ц., 1. Запись констант в Г1айКОМ выполняется при программировании чикроконтроллера.
2.6. Команды операций с битами Команды операций с битами описаны в табл. 2.8 и 2.9. Машинные коды всех команд имеют формат "слово". Команды ХоХо 65 и 66 выполняются за 2 такта, остальные команды — за 1 такт. В табл. 2.8 используется следующее новое обозначение: в РгРЬ вЂ” разряд Ь (Ь = 0 — 7) регистра ввода-вывода с номером Р (Р = $00 - $1Г (!)), бит в разряде РгРЬ. По командам ХоХо 63 и 64 выполняется пересылка (копирование) бита между указанным разрядом регистра общего назначения и разрядом Т регистра ЯКЕС.
По командам Х.Хо 65 и 66 устанавливается в требуемое состояние (О или 1 соответственно) указанный разряд регистра ввода-вывода, а по командам ХоХо 67 и 68 — указанный разряд регистра ЯКЕ( . При записи мнемокодов команд ХоМо 65 и 66 вместо номера регистра (Р) может быть указано его символическое имя (см.
приложение П4), а вместо номера разряды (Ь) — символическое имя разряда. В микроконтроллерах семейства АЧК разряды многих регистров ввода-вывода Глава 2 имеют штатные имена. Эти имена приводятся в тексте при рассмотрении устройств, в которых эти разряды используются.
Штатные имена разрядов регистров ввода-вывода, управляющих работой различных устройств микроконтроллера и отражающих состояние этих устройств приведены в приложении П5. В микроконтроллерах некоторых типов разряды одноименных регистров с одинаковыми именами имеют разные номера. Прп использовании штатных имен регистров ввода-вывода и штатных имен разрядов в них необходимо использовать версию АЧК Ассемблера для микроконтроллера соответствующего типа. При назначении штатного имени разряда подразумевалось, что этот разряд принадлежит определенному регистру ввода-вывода, однако в мнемокоде команд №№ 65 и 66 необходимо указывать и пмя/номер регистра и имя разряда.
Требуемое значение бита (О или 1) в разрядах регистров ввода-вывода с померюш от $20 до $3Г устанавливается с использованием команд регистровых операций с мнемокодами СВК (№ 29) и ЯВВ. (№ 31) соответственно. В табл. 2.9 приведены мпемокоды команд, по которым устанавливается в определенное состояние (О пли 1) разряды регистра ЖЕС без указания в мнемокоде команды номера разряда. 2. 7. Команды управления ходом программы В группу команд управления ходом программы входят команды безусловного и условного переходов, перехода в энергосберегающий режим, перезапуска сторожевого таймера и "холостая" команда. В табл. 2.10 описаны команды безусловного перехода (№№ 85 и 86), безусловного перехода с возвратом (№№ 87 и 88), возврата из подпрограммы (№ 89) и возврата из прерывающей программы (№ 90).
В таблице используются следующие новые обозначения: ° РС вЂ” счетчик команд; в (РС) — код числа в счетчике команд; в к — приращение числа в счетчике команд. При записи программы на языке ассемблера в мнемокодах команд №№ 85 и 87 вместо приращения 1с указывается метка (символический адрес), записанная перед мпемокодом команды, к вьшолпешпо которой нужно перейти. Приращение вычисляется и помещается в машинпьш код команды в процессе ассемблирования.
Машинные коды команд, описанные в табл. 2.10, имеют формат "слово". Команды безусловного перехода (№№ 85 и 86) выполняются за 2 такта, команды безусловного перехода с возвратом (№№ 87 и 88) — за 3 такта, команды возврата (№№ 89 и 90) — за 4 такта. 35 Система команд Группа команд условного перехода делится на две подгруппы. В командах первой подгруппы в качестве условия используется равенство нулю или равенство единице одного из битов в регистре ЖЕС. Условия и мнемокоды команд первой подгруппы приведены в табл.
2.11. Если условие выполняется, совершается переход по адресу, который формируется с использованием приращения К указанного в коде команды ((РС) + 1 + 1с РС; -64~К<63). Если условие не выполняется, происходит переход к следующей команде в программе ((РС) + 1- РС). Фрагмент структурной схемы программы с командой условного перехода нз первой подгруппы изображен на рис. 2.1. -б4 с,бт Рнс. 2.2. Рис. 2Л. При записи программы на языке ассемолсра в мнемокоде команд, описанных в табл.