Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
1вопрос.docx
Скачиваний:
11
Добавлен:
16.11.2018
Размер:
251.77 Кб
Скачать

3 Структура памяті даних в мк авр, програмні способи доступу до памяті різних видів

Память данных микроконтроллеров AVR представляет собой отдельное адресное пространство с адресами от $0000 до $FFFF. To есть максимальный объем адресуемой памяти составляет 64 Кбайта. Однако большинство микроконтроллеров имеет гораздо меньшую память. В таких микроконтроллерах часть адресов не используется. Структура же памяти всегда одинакова. Оперативная память микроконтроллеров AVR делится на три области.

$0000—$001F — область памяти, совмещенная с регистрами общего назначения (РОН).

$0020—$005F — область памяти, совмещенная с регистрами ввода—вывода (РВВ).

$0060—$FFFF — не совмещенная ни с чем область памяти.

Эта последняя область предназначена просто для хранения данных. Эту область в свою очередь можно разделить на область внутреннего ОЗУ ($0060—RAMEND) и область внешнего ОЗУ (RAMEND+1—

$FFFF).

Под DAMEND понимается адрес последней ячейки внутреннего ОЗУ конкретного микроконтроллера.

44444444444444444

Система команд

Система команд микроконтроллеров AVR весьма развита и насчитывает в различных моделях от 90 до 133 различных инструкций. Большинство команд занимает только 1 ячейку памяти (16 бит). Большинство команд выполняется за 1 такт.

Всё множество команд микроконтроллеров AVR можно разбить на несколько групп:

команды логических операций;

команды арифметических операций и команды сдвига;

команды операции с битами;

команды пересылки данных;

команды передачи управления;

команды управления системой.

Управление периферийными устройствами осуществляется через адресное пространство данных. Для удобства существуют «сокращённые команды» IN/OUT

5. Методы адресации операндов в командах Ассемблера avr-контроллера

В AVR-микроконтроллере существует три области памяти, каждая со своей системой адресации, начинающаяся с нулевого адреса до конечного:

1. ПЗУ – постоянное запоминающее устройство, предназначенное для хранения машинных кодов управляющих программ. Сюда загружаются объектные hex-файлы, создаваемые пакетом AVR Studio. Ассемблерные команды не могут обращаться к ячейкам памяти ПЗУ.

2. EEPROM – энергонезависимое ОЗУ. Ассемблерные команды позволяют обращаться к ячейкам памяти EEPROM.

3. ОЗУ. Ячейки памяти ОЗУ используются во всех ассемблерных командах. Эта область состоит из 3-х подобластей, которые имеют последовательную сквозную адресацию.

3.1. Первая подобласть состоит из 32 регистров, которые имеют двоякую адресацию: по имени регистра (R0-R31) или по ее числовому адресу ( или от до ). Они используются для оперативного хранения результатов промежуточных вычислений.

3.2. Следующей подобластью ОЗУ являются регистры ввода/вывода, предназначенные для обмена информацией с периферийными устройствами (таймеры, компараторы, АЦП, порты дискретного ввода/вывода информации). Регистры ввода/вывода также как и регистры имеют двойную адресацию: по имени регистра ввода/вывода и по его числовому адресу. Числовой адрес регистра ввода/вывода также имеет двойное представление. Если регистр ввода/вывода используется в командах in или out, то адреса регистров ввода/вывода находятся в диапазоне с по или с по . Эти команды принадлежат к группе команд передачи данных. Если к регистрам ввода/вывода обращаются другие команды языка ассемблера, то используется адресация в диапазоне от до или от до .

Содержимое регистров и регистров ввода/вывода, определенное их именами, мы можем наблюдать в окне «Workspace». В этом окне приведена также двойная числовая адресация регистров ввода/вывода. Содержимое регистров и регистров ввода/вывода, определенное их числовыми адресами, мы можем наблюдать в окнах Memory, Register, I/O.

3.3. Область «Data». В этой области расположены ячейки памяти ОЗУ, которые используются для оперативного хранения результатов промежуточных операций. Эти ячейки имеют лишь числовую адресацию. Адрес младшей ячейки этой области или , размер этой области определяется типом контроллера.

При работе в пакете AVR Studio при установке курсора на любую ячейку памяти ОЗУ появляется всплывающая «подсказка», в которой расположено 4 элемента, разделенных знаком двоеточие. Слева от двоеточия стоит адрес ячейки памяти в 16-ой системе исчисления, а справа – содержимое ячейки памяти в 16-ой, 10-ой, 2-ой системах исчисления.

6. Прямая регистровая адресация с одним регистром Rd, При этом способе адресации данные находятся в регистре d(Rd), адрес которого содержится непосредственно в команде (рис. 1.4, а). Примером команд, использующих этот метод адресации, являются команды для

Рис. 1.4. Прямая регистровая адресация одного {а) и двух (б) регистров общего назначения работы со стеком (PUSH, POP), обмена тетрадами в регистре (SWAP), ряд команд арифметических и логических операций.

Прямая регистровая адресация с двумя регистрами Rd и Rr. Данный способ адресации применяется в командах, которые используют два регистра общего назначения: d(Rd) и r(Rr) (рис. 1.4, б). Этот вид адресации используют команды пересылки данных из регистра в регистр и большинство команд арифметических операций, ряд команд логических операций. При этих операциях результат операции сохраняется в регистре d (Rd).

Прямая адресация регистра ввода;вывода. Данный вид адресации используют для выполнения обмена между регистром ввода;вывода, расположенным в адресном пространстве ввода;вывода, и одним из регистров общего назначения по командам ESf и OUT

lds reg,number

sts reg,number

Эти команды работают с регистром (reg) и ячейкой памяти с номером (number). Команда lds грузит (load) значение из памяти в регистр, а команда sts соответственно устанавливает (set) значение регистра в память.

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

Звернення направлене до комірки пам’яті адреса якої знаходиться в індексному регістрі.

В ролі цих регістрів використовують:

R26 R27 } X

R28 R29 } Y

R30 R31 } Z

Приклад :

clr R31 ; // скидання в 0 }

ldi R30, 060h; // 060h } ініціалізація Z

LD R1 , Z;

Есть четыре типа косвенной адресации:

а) Без явного операнда, используя регистр Z: LPM

б) С явным указанием индексного регистра и регистра-получателя: LD Rn,i, где i - X,Y или Z

в) С явным указанием индексного регистра, регистра-получателя и смещения: LD Rn,i+q, где i - Y или Z, q - значение смещения относительно адреса в i

г) С предекрементом или постинкрементом индексного регистра: LD Rn,X+