Rambler's Top100

Режимы адресации AVR-микроконтроллеров


1. Организация памяти
2. Способы адресации

2.1. Непосредственная адресация

2.2. Прямая адресация

2.3. Косвенная адресация

2.4. Относительная адресация

2.5. Битовая адресация
Автор

1. Организация памяти

AVR-контроллеры построены по Гарвардской архитектуре, как большинство микроконтроллеров общего назначения. Это значит, что память делится у них на память данных и память программ. В памяти программ, как следует из названия, хранится исполняемый код программы. Также в ней могут располагаться и данные, доступные только для чтения, которые заносятся при программировании контроллера. В ходе выполнения программа не может модифицировать свой код.

Память данных делится на четыре раздела:


- регистровый файл;

- служебные регистры или "память ввода-вывода";

- собственно статическое ОЗУ (SRAM);

- EEPROM.

Память этих разделов доступна для чтения и записи за исключением некоторой части служебных регистров, доступных только для чтения.
EEPROM данных является разделом, не входящим ни в одно адресное пространство, поэтому мы рассмотрим её отдельно. А пока займёмся непосредственно режимами адресации.

Оглавление Оглавление

2. Способы адресации

2.1. Непосредственная адресация

Непосредственная адресация используется только при обращении к регистовому файлу:

a) Непосредственная регистровая, операнды - один регистр и константа.
15 12   11  7  3
Код операции Константа, 4 бита Rn Константа, 4 бита


б) Непосредственная регистровая, операнды - регистровая пара и константа.
15   7   5  3
Код операции Константа, 2 бита Rn Константа, 4 бита



Оглавление Оглавление

2.2. Прямая адресация

Прямая адресация применима ко всему пространству памяти данных. В AVR-контроллерах есть четыре вида прямой адресации:

a) Прямая регистровая, операнд - один регистр. Используется при обращении к регистровому файлу.
15 4 0
Код операции Rn


б) Прямая регистровая, операнды - два регистра. Используется при обращении к регистровому файлу.
15 9  4 0
Код операции Rn Rm


в) Прямая к памяти данных, операнды - регистр и 16-разрядный адрес байта в памяти данных. Используется при обращении к регистровому файлу.
31 20   19 16
Код операции Rn
16-разрядный адрес байта в памяти данных
15 0


г) Прямая к памяти программ (JMP, CALL) операнды - 16-разрядный адрес 16-разрядного слова в памяти программ.
31 20   19 16
Код операции
16-разрядный адрес слова в памяти программ
15 0


Оглавление Оглавление

2.3. Косвенная адресация

При косвенной адресации используются регистры X, Y или Z в качестве неявного операнда. Есть четыре типа косвенной адресации:


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

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

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

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


Оглавление Оглавление

2.4. Относительная адресация

Относительная адресация используется только в командах RJMP и RCALL. Адрес следующей команды вычисляется относительно текущего значения счётчика комманд, используя формулу PC=PC+k+1, где -2048<=k<=2047.

15 12   11 0
Код операции Константа


Оглавление Оглавление

2.5. Битовая адресация

Есть два вида битовой адресации:


а) С непосредственным указанием бита (используется только при обращении к слову состояния SREG).

б) С обращением к биту, используя адрес содержащего его элемента памяти данных, например SBR Rn,b

Битовая адресация используется только при обращении к регистровому файлу и к I/O-регистрам.

Оглавление Оглавление

© Берёзкин С.Е., 2001 г.

stlab@rambler.ru



Оглавление

Главная

Микроконтроллеры



Рейтинг@Mail.ru bigmir)net TOP 100 Rambler's Top100 AllBest.Ru Яндекс цитирования