
- •6.050702 «Електромеханвка»,
- •Создание нового проекта
- •Организация памяти
- •Сведения о портах ввода/вывода
- •Команды языка Assembler, необходимые для выполнения заданий
- •Контрольные вопросы
- •Описание stk500
- •Порядок выполнения работы
- •Индивидуальные задания
- •Контрольные вопросы
- •Организация памяти мк AtMega16
- •Введение
- •Команды работы с памятью
- •Индивидуальные задания
- •Контрольные вопросы:
- •Система прерываний AtMega16. Таймер/счетчик
- •Введение
- •Индивидуальные задания
- •Индивидуальные задания
- •Контрольные вопросы
- •Управление скоростью «бега» огонька по светодиодной панели микроконтроллера AtMega16
- •Порядок выполнения работы
- •Варианты заданий для студентов
- •Контрольные вопросы
- •Основы работы в среде разработки CodeVisionAvr. Широтно-импульсная модуляция (шим) микроконтроллера AtMega16
- •Введение
- •Среда разработки CodeVisionAvr. Пример генерации начального кода программы
- •Пример программы с комментариями
- •Индивидуальные задания
- •Usart: универсальный синхронный и асинхронный последовательный приемопередатчик микроконтроллера AtMega16
- •1. Введение
- •Генерация внутренней синхронизации – генератор скорости связи
- •Работа с удвоением скорости связи (u2x)
- •Режим синхронной связи
- •Форматы посылки
- •1.1.5 Бит паритета
- •1.1.6. Инициализация усапп
- •1.1.9. Передача данных
- •1.1.10. Передача посылок с 5…8 битами данных
- •1.2. Конфигурирование Atmega16
- •1.2.1. Конфигурирование порта d
- •1.2.2. Описание регистров усапп
- •1.3. Генерация начального кода программы в среде разработки CodeVisionAvr
- •1.4. Работа с терминалом
- •1.5. Описание и листинг программы
- •Контрольные вопросы:
Контрольные вопросы
Структура и возможности интегрированной среды разработки программ AVR-Studio.
Время выполнения команд (понятие такта, машинного цикла).
Возможности стенда STK500.
Какой порт микроконтроллера выведен на светодиоды?
Какой порт микроконтроллера выведен на кнопки?
Организация памяти мк 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 производят загрузку данных по адресу в регистр, при этом операнды меняются местами.