Материал: 8-разрядные микроконтроллеры Atmel

Внимание! Если размещение файла нарушает Ваши авторские права, то обязательно сообщите нам

ATMEL

ÊÒÖ-ÌÊ

Микроконтроллеры конфигурации B позволяют использовать дополнительную внешнюю память данных. Внешняя память будет адресоваться оставшимся до 64К пространством адресов, т.е. оно будет начинаться следом за пространством адресов встроенной SRAM. При использовании внешней SRAM емкостью 64К буду т потеряны 4К внешней памяти, поскольку адреса этого объема будут зан яты встроенной памятью. При обращении по адресам памяти данных за пределами встро енной SRAM используются те же команды, что для обращения к встроенно й SRAM. При обращеíèè ê âñòроенной памяти данных выводы стробов управления вне шней памятью данных (RD и WR) остаются неактивными во время всего цикла обращения.

Работа внешней SRAM разрешается установкой бита SRE в регистре MCUCR. По сравнению с обращением к встроенной памяти данных, обр ащение к внешней памяти данных требует дополнительного цикла на каждый ба йт. Это означает, что для выполнения команд LD, ST, LDS, STS, PUSH и POP требуется дополнительный так товый цикл. Если стек размещен во внешней SRAM, то прерывания, вызов подпрограмм и возвраты потребуют два дополнительных цикла, поскольку в стеке будет опускаться и подниматься содержимое двухбайтового счетчика команд. Е сли интерфейс с внешней SRAM используется с состоянием ожидания, то на каждый байт не обходимо еще два дополнительных тактовых цикла. Это приводит к следующему эффекту. Командам пересылки данных необходимо два дополнительных тактовы х цикла, тогда как при обработке прерывания, вызове подпрограммы и при возврате из подпрограмм потребуется на четыре тактовых цикла больше, чем это указ ано в описании системы команд.

При адресации памяти данных используются пять режимов ад ресации: непосредственная адресация, косвенная со смещением, косв енная, косвенная с преддекрементом и косвенная с постдекрементом. Регистры с R26 по R31 регистрового файла работают как X, Y и Z регистры указатели косвенной адре сации.

Косвенной адресации со смещением доступны 63 адреса относ ительно базовых адресов, находящихся в регистрах Y или Z. При использовании косвенной адресации с автоматическим преддекрементом и постдекрементом автом атически декрементируются и инкрементируются адреса записанные в регистры X, Y и Z. Всем и этими режимами перекрывается все адресное пространство данных, включая 32 регистра общего назначения и 64 регистра I/O. Подробное описание всех режимов адресации приведено в следующем разделе.

Режимы адресации памяти программ и данных

При обращении к Flash памяти программ и памяти данных (SRAM, регис тровому файлу и памяти I/O) AVR Enhanced RISC микроконтроллерами ATmega603/103 используются мощные и эффективные режимы адресации. В дан ном разделе описываются режимы адресации, поддерживаемые AVR архитект урой. На рисунках OP обозначает часть слова команды, соответствующую операц ионному коду.

6 4

ÊÒÖ-ÌÊ

НЕПОСРЕДСТВЕННАЯ АДРЕСАЦИЯ, ОДИНОЧНЫЙ РЕГИСТР Rd

 

 

 

РЕГИСТРОВЫЙ ФАЙЛ

15

 

 

0

4

0

ÎÐ

 

 

d

 

 

 

 

d

31

Рис.8 Непосредственная адресация одного регистра. Операнд содержится в регистре d (Rd).

НЕПОСРЕДСТВЕННАЯ АДРЕСАЦИЯ, ДВА РЕГИСТРА Rd и Rr

 

 

 

 

РЕГИСТРОВЫЙ ФАЙЛ

15

9

5 4

0

0

 

ÎÐ

r

 

d

 

 

 

 

 

d

r

31

Рис.9 Непосредственная регистровая адресация двух регистров. Операнды содержатся в регистрах r (Rr) и d (Rd).

Результат сохраняется в регистре d (Rd).

НЕПОСРЕДСТВЕННАЯ АДРЕСАЦИЯ I/O

 

 

 

 

 

 

ПАМЯТЬ I/O

15

5

0

0

 

 

 

 

ÎÐ

n

 

P

 

 

 

 

 

 

 

 

 

 

 

 

 

63

Рис. 10 Непосредственная адресация I/O

Адрес операнда содержится в 6 битах слова команды. Величин а n определяет адрес регистра источника или регистра назначения.

6 5

ATMEL

 

 

ÊÒÖ-ÌÊ

НЕПОСРЕДСТВЕННАЯ АДРЕСАЦИЯ ДАННЫХ

 

 

 

 

 

ПРОСТРАНСТВО ДАННЫХ

31

20 19 16

$0000

ÎÐ

 

Rr/Rd

 

 

 

 

 

МЛАДШИЕ 16 БИТ

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

$FFFF

Рис. 11 Непосредственная адресация данных 16-разрядный адрес данных содержится в 16 младших разрядах 32-р азрядной команды. Rd/Rr определяют регистр источник или регистр назначения.

КОСВЕННАЯ АДРЕСАЦИЯ ДАННЫХ СО СМЕЩЕНИЕМ

ПРОСТРАНСТВО ДАННЫХ

 

$0000

15

0

 

РЕГИСТР Y ИЛИ Z

 

 

 

 

+

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

5

10

6 5

0

 

 

 

 

 

 

 

 

 

ÎÐ

n

 

a

 

 

 

 

 

 

 

 

 

 

$FFFF

Ðèñ. 12

Косвенная адресация данных со смещением

Адрес операнда вычисляется суммированием содержимого р егистра Y или Z с 6 битами

адреса, содержащимися в слове команды.

КОСВЕННАЯ АДРЕСАЦИЯ ДАННЫХ

 

 

 

 

 

 

 

 

 

ПРОСТРАНСТВО ДАННЫХ

 

 

 

 

$0000

 

15

 

 

0

 

 

 

 

 

 

 

 

 

РЕГИСТР Х, Y ИЛИ Z

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

$FFFF

Рис. 13 Косвенная адресация данных Адрес операнда содержится в регистре X, Y или Z

6 6

ÊÒÖ-ÌÊ

КОСВЕННАЯ АДРЕСАЦИЯ ДАННЫХ С ПРЕДДЕКРЕМЕНТОМ

ПРОСТРАНСТВО ДАННЫХ

 

$0000

15

0

 

РЕГИСТР X, Y ИЛИ Z

 

 

+

 

 

-1

 

 

$FFFF

Ðèñ. 14

Косвенная адресация данных с преддекрементом

Перед выполнением операции регистр X, Y или Z декрементирует ся. Декрементированное

содержимое регистра X, Y или Z является адресом операнда.

КОСВЕННАЯ АДРЕСАЦИЯ ДАННЫХ С ПОСТИНКРЕМЕНТОМ

 

 

ПРОСТРАНСТВО ДАННЫХ

 

 

$0000

15

 

0

 

РЕГИСТР X, Y ИЛИ Z

 

 

-1

+

 

 

$FFFF

Рис. 15 Косвенная адресация данных с постинкрементом

После выполнения операции регистр X, Y или Z инкрементируетс я. Адресом операнда является содержимое X, Y или Z регистра предшествовавшее инк рементированию.

АДРЕСАЦИЯ КОНСТАНТЫ С ИСПОЛЬЗОВАНИЕМ КОМАНД LPM и ELPM

 

 

ПАМЯТЬ ПРОГРАММ

 

 

 

 

$0000

15

1

0

 

 

 

 

 

 

 

 

 

 

 

 

РЕГИСТР Z

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

$7FFF/$FFFF

Рис. 16 Адресация константы кода памяти

Адрес байта константы определяется содержимым регистра Z. Старшие 15 битов определяют слово адреса (от 0 до 32К). Состояние младшего бит а определяет выбор младшего байта (LSB = 0) или старшего байта (LSB = 1). При использован ии команды ELPM младший бит (RAM Page) регистра Z - RAMPZ используется для выбора стр аницы памяти (RAMPZ0 = 0:младшая страница, RAMPZ0 = 1:старшая страница). Команд а ELPM не используется микроконтроллером ATmega603.

6 7

ATMEL

 

 

 

ÊÒÖ-ÌÊ

НЕПОСРЕДСТВЕННАЯ АДРЕСАЦИЯ ПАМЯТИ ПРОГРАММ, КОМАНДЫ JMP и CA LL

 

 

 

 

ПАМЯТЬ ПРОГРАММ

 

 

 

 

 

 

$0000

31

21 20

16

 

 

 

 

 

 

 

OP

 

 

6 MSBs

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

МЛАДШИЕ 16 БИТ

 

 

 

 

 

 

 

 

15

 

 

 

0

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

$7FFF/$FFFF

Рис. 17 Непосредственная адресация памяти программ Выполнение программы продолжается с адреса, записанного непосредственно в адресе команды.

КОСВЕННАЯ АДРЕСАЦИЯ ПАМЯТИ ПРОГРАММ, КОМАНДЫ IJMP и ICALL

 

ПАМЯТЬ ПРОГРАММ

 

 

 

$0000

15

0

 

 

 

 

 

 

 

 

 

 

РЕГИСТР Z

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

$7FFF/$FFFF

Рис. 18 Косвенная адресация памяти программ

Выполнение программы продолжается с адреса, содержащего ся в регистре Z (т.е. счетчик команд загружается содержимым регистра Z).

ОТНОСИТЕЛЬНАЯ АДРЕСАЦИЯ ПАМЯТИ ПРОГРАММ, КОМАНДЫ RJMP и RCALL

 

ПАМЯТЬ ПРОГРАММ

 

$0000

15

0

 

 

 

ÐÑ

 

 

 

 

 

 

+

15

12

11

0

 

ÎÐ

 

k

 

 

 

 

 

 

 

 

 

 

$7FFF/$FFFF

Рис. 19 Относительная адресация памяти программ

Выполнение программы продолжается с адреса PC + k + 1. Значение относительного адреса может быть от -2048 до 2047.

6 8

Источник: https://studfile.net/preview/16521258/