![]() ![]() ![]() ![]() ![]()
Раздел: Документация
0 ... 52 53 54 55 56 57 58 ... 195 Эти файлы (для каждой модели микроконтроллеров семейства) свободно распространяются фирмой Atmel вместе с документацией на микроконтроллеры (в частности, включаемые файлы для всех выпускаемых микроконтроллеров AVR входят в комплект бесплатно распространяемой интегрированной среды AVRStudio). Для РОН, используемых в индексных регистрах, в этих файлах определяются также дополнительные символические имена (Табл. 3.1). Таблица 3.1. Дополнительные символические имена индексных регистров
Названия этих включаемых файлов унифицированы и определяются следующим образом: <номер модели>61ег. inc Например, программа для микроконтроллера ATmegal28x должна содержать следующую директиву ассемблера: .include "ml28def.inc", Необходимо только помнить, что если для обращения к регистру ввода/вывода используются команды обмена с ОЗУ, то к символическому имени требуется прибавить число $20. Как говорилось выше, в микроконтроллерах семейства память программ является 16-битной. Поэтому большинство команд описываются 16-битным словом, которое называется также кодом операции (КОП). Код операции — это число, расположенное в памяти программ и определяющее действие, которое необходимо произвести между источником и приемником. Некоторые команды, у которых один из операндов является 16-битным адресом, занимают две ячейки памяти программ. Соответственно, код операции таких команд является 4-байтным числом. В ряде случаев значение операнда-источника может содержаться непосредственно в коде операции, а не в регистре. Это происходит в том случае, когда операндом-источником является константа. Некоторые константы, которые могут быть полезны при написании программ, определены в упомянутых включаемых файлах: IOEND SRAM START SRAM SIZE RAMEND XRAMEND E2END EEPROMEND EEADRBITS FLASHEND PAGESIZE NRWW START ADDR NRWW STOP ADDR RWW START ADDR RWW STOP ADDR FIRSTBOOTSTART SMALLBOOTSTART SECONDBOOTSTART THIRDBOOTSTART FOURTHBOOTSTART LARGEBOOTSTART значение верхнего адреса области РВВ; значение младшего адреса ОЗУ, доступного для хранения данных; объем ОЗУ в байтах; значение верхнего адреса внутреннего ОЗУ; •значение верхнего адреса внешнего ОЗУ (для моделей, не поддерживающих подключение внешнего ОЗУ, эта константа равна 0); •значение верхнего адреса EEPROM; то же, что и E2END; битов регистра адреса памяти программ число задействованных EEPROM; -значение верхнего адреса (в 2-байтных словах); -размер страницы памяти программ (в 2-байтных словах); -младший адрес области NRWW; -старший адрес области NRWW; -младший адрес области RWW; -старший адрес области RWW; -наименьший размер области загрузчика; -ТО же, ЧТО И FIRSTBOOTSTART, -вторая возможная величина области загрузчика; третья возможная величина области загрузчика; -наибольший размер области загрузчика; -ТО же, ЧТО И FOURTHBOOTSTART. 3.3. Типы команд Все множество команд микроконтроллеров AVR семейства Mega можно разбить на несколько групп: •команды логических операций; •команды арифметических операций и команды сдвига; •команды операций с битами; •команды пересылки данных; •команды передачи управления; •команды управления системой. Далее подробно описана каждая группа команд. 3.3.1.Команды логических операций Эти команды позволяют выполнять стандартные логические операции над байтами, такие как логическое умножение (И), логическое сложение (ИЛИ), операцию «Исключающее ИЛИ», а также вычисление обратного (дополнение до единицы) и дополнительного (дополнение до двух) кодов числа. К этой группе можно отнести также команды очистки/установки регистров и команду перестановки полубайтов. Операции производятся между регистрами общего назначения, либо между регистром и константой; результат сохраняется в РОН. Все команды из этой группы выполняются за один такт. 3.3.2.Команды арифметических операций и команды сдвига К данной группе относятся команды, позволяющие выполнять такие базовые операции, как сложение, вычитание, сдвиг (вправо и влево), инк-рементирование, декрементирование, а также умножение. Все операции производятся только над регистрами общего назначения. При этом микроконтроллеры AVR позволяют легко оперировать как знаковыми, так и беззнаковыми числами, а также работать с числами, представленными в дополнительном коде. Почти все команды рассматриваемой группы выполняются за один такт. Команды умножения и команды, оперирующие 2-байтными значениями, выполняются за два такта. 3.3.3.Команды битовых операций К данной группе относятся команды, выполняющие установку или сброс заданного бита РОН или РВВ. Причем для изменения битов регистра состояния SREG имеются отдельные команды (точнее говоря, эквивалентные мнемонические обозначения общих команд), так как проверка состояния битов именно этого регистра производится чаще всего. Условно к этой группе можно отнести также две команды передачи управления типа «проверка/пропуск», которые пропускают следующую команду в зависимости от состояния бита РОН или РВВ. Все задействованные биты РВВ имеют свои символические имена. Определения этих имен описаны в том же включаемом файле, что и определения символических имен адресов регистров (см. раздел 3.2). Соответственно, после включения в программу указанного файла в командах 0 ... 52 53 54 55 56 57 58 ... 195 |