Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
РГР.doc
Скачиваний:
1
Добавлен:
01.05.2025
Размер:
1.08 Mб
Скачать

Контрольные вопросы

  1. Структура и возможности интегрированной среды разработки программ AVR-Studio.

  2. Время выполнения команд (понятие такта, машинного цикла).

  3. Возможности стенда STK500.

  4. Какой порт микроконтроллера выведен на светодиоды?

  5. Какой порт микроконтроллера выведен на кнопки?

Организация памяти мк AtMega16

Освоение способов адресации памяти.

Введение

Организация памяти AVR выполнена по схеме гарвардского типа, в которой разделены не только адресные пространства памяти программ и памяти данных, но также и шины доступа к ним. Вся программная память AVR-микроконтроллеров выполнена по технологии FLASH и размещена на кристалле. Она представляет собой последовательность 16-разрядных ячеек и имеет емкость от 512 слов до 64 Kбайт слов в зависимости от типа кристалла. В микроконтроллере AtMega16 имеется 16 Кбайт FLASH-памяти программ и 512 байт энергонезависимой памяти данных EEPROM. Специальных команд обращения к EEPROM-памяти нет. Чтение и запись ячеек EEPROM выполняется через регистры ввода/вывода EEAR (регистр адреса), EEDR (регистр данных) и EECR (регистр управления).

Команды работы с памятью

Для чтения памяти программ используется команда

lpm

Если параметры не указаны, то она загружает в регистр R0 данные по адресу, записанному в регистре Z. Данная команда может пользоваться только Z регистром в качестве регистра адреса.

Чтобы задать таблицу данных в программной памяти, используется следующая директива:

metka:

.db 2, 4, 6, 3, 5, 8

Данная директива создает таблицу из 6 байт по адресу «metka*2». Умножение на 2 связанно с тем, что программная память организованна словами, однако загрузка из нее возможна и по байтам.

Следующая пара команд загружает в регистр Z адрес начала таблицы данных.

ldi ZH, high(TABLE*2)

ldi ZL, low(TABLE*2)

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

Прямая адресация позволяет адресоваться ко всей памяти данных. Косвенная адресация со смещением позволяет адресовать 63 ячейки, начиная с адреса, указанного в регистрах Y или Z.

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

Для SRAM существует 4 типа косвенной адресации данных: простая, с постинкрементом, с преддекрементом, со смещением. Для первых трех типов косвенной адресации данных адрес операнда содержится в регистре X, Y или Z. Для последнего типа (со смещением) адрес операнда вычисляется сложением содержимого регистров Y или Z с шестью битами адреса, содержащимися в слове команды. Сами же регистры остаются неизмененными.

Рассмотрим некоторые примеры:

1) ST X, Rn ; поместить данные из Rn в по адресу, указанному в регистре Х;

2) ST X+, Rn ; тоже что и в 1), но впоследствии X инкрементируется;

3) ST -X, Rn ; предварительно X декрементируется

В предыдущих трех примерах вместо Х могут быть Y или Z.

4) STD Y+c, Rn ; к значению Y прибавляется константа смещения ’c’, и по этому адресу записываются данные из Rn. Y при этом остается неизмененным. Вместо Y может быть только Z.

Соответствующие команды LD и LDD производят загрузку данных по адресу в регистр, при этом операнды меняются местами.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]