
- •5.3. Микроконтроллер avr at90s8515 семейства Classic
- •Организация памяти микроконтроллера
- •Память программ
- •Память данных
- •Использование внешнего озу
- •Регистры общего назначения
- •Регистры ввода/вывода
- •Энергонезависимая память данных
- •Сторожевой таймер
- •Последовательный периферийный интерфейс spi
- •Прерывания
- •Обработка прерываний
- •Программирование микроконтроллеров
- •Защита программного кода и данных
- •Система команд и способы адресации памяти данных
- •Прямая адресация
- •Прямая адресация одного регистра общего назначения
- •Прямая адресация двух регистров общего назначения
- •Прямая адресация регистра ввода/вывода
- •Прямая адресация озу
- •Косвенная адресация
- •Простая косвенная адресация
- •Относительная косвенная адресация
- •Косвенная адресация с преддекрементом
- •Косвенная адресация с постинкрементом
- •Система команд
- •Операнды
- •Типы команд
- •Команды арифметических и логических операций
- •Команды пересылки данных
- •Команды передачи управления
- •Команды операций с битами
- •Команды управления системой
- •Пример программы и её оформление
- •Микропроцессорная система управления на базе мк at90s8515
- •7. Микроконтроллер экр1847вг6
- •8. Частотно-регулируемые привода
- •Режимы управления асинхронными электродвигателями
- •Преобразователь частоты 1336Plus
Прямая адресация озу
Как следует из названия, данный способ используется при обращении ко всему адресному пространству памяти данных.
В системе команд имеется только две команды, использующие этот способ адресации. Это команды пересылки байта между одним из РОН и ячейкой ОЗУ - "LDS Rd,k" и "STS k,Rr" . Каждая из этих команд занимает в памяти программ два слова (32 бита). В старшем слове содержится код операции и адрес регистра общего назначения (в разрядах 8 ÷ 4). В младшем слове находится адрес ячейки памяти (k), к которой происходит обращение (рис. 5.13).
Старшее слово |
31 |
30 |
29 |
28 |
27 |
26 |
25 |
24 |
23 |
22 |
21 |
20 |
19 |
18 |
17 |
16 |
КОП |
r/d4÷r/d0 |
КОП |
||||||||||||||
Младшее слово |
15 |
14 |
13 |
12 |
11 |
10 |
9 |
8 |
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
Прямой адрес ячейки памяти (ОЗУ) 0÷65535 |
Рис. 5.13. Прямая адресация ОЗУ
Косвенная адресация
При косвенной адресации адрес ячейки памяти находится в одном из индексных регистров X, Y и Z. В зависимости от дополнительных манипуляций, которые производятся над содержимым индексного регистра, различают следующие разновидности косвенной адресации: простая косвенная адресация, относительная косвенная адресация, косвенная адресация с преддекрементом и косвенная адресация с постинкрементом.
Простая косвенная адресация
При использовании команд простой косвенной адресации обращение производится по адресу ячейки памяти, который находится в индексном регистре (рис. 5.14). Никаких действий с содержимым индексного регистра при этом не производится.
Микроконтроллер поддерживает 6 команд (по 2 для каждого индексного регистра) простой косвенной адресации: "LD Rd, X/Y/Z" (пересылка байта из ОЗУ в РОН) и "ST X/Y/Z, Rr" (пересылка байта из РОН в ОЗУ). Адрес регистра общего назначения содержится в разрядах 8…4 слова команды.
Старшее слово (команда) |
31 |
30 |
29 |
28 |
27 |
26 |
25 |
24 |
23 |
22 |
21 |
20 |
19 |
18 |
17 |
16 |
КОП |
r/d4÷r/d0 |
КОП |
||||||||||||||
Младшее слово |
15 |
14 |
13 |
12 |
11 |
10 |
9 |
8 |
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
Адрес ячейки ОЗУ (0÷65535), содержащейся в X, Y или Z |
Рис. 5.14. Простая косвенная адресация
Относительная косвенная адресация
При использовании команд относительной косвенной адресации адрес ячейки памяти, к которой производится обращение, получается суммированием содержимого индексного регистра (Y или Z) и константы, задаваемой в команде. Иллюстрация данного способа адресации приведена на рис. 5.15.
Соответственно микроконтроллеры поддерживают 4 команды относительной косвенной адресации (две для регистра Y и две для регистра Z): "LDD Rd,Y+q/Z+q", (пересылка байта из ОЗУ в РОН) и "STD Y+q/Z+q,Rr" (пересылка байта из РОН в ОЗУ). Адрес регистра общего назначения содержится в разрядах 8...4, а величина смещения - в разрядах 13, 11, 10, 2...0. Поскольку под смещение отводится только 6 бит, оно не может превышать значение 64.
15 |
14 |
13 |
12 |
11 |
10 |
9 |
8 |
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
КОП |
q5 |
КОП |
q4, q3 |
КОП |
r/d4÷r/d0 |
КОП |
q2÷q0 |
где: q 5÷q0 - величина смещения 0≤q≤63.
Рис. 5.15. Относительная косвенная адресация