
- •Программирование микроконтроллеров avr на языке ассемблера
- •Рецензенты:
- •Введение
- •1. Архитектура однокристальных микроконтроллеров семейства avr
- •2. Технические характеристики микроконтроллера aTmega32
- •3. Разработка программного обеспечения микроконтроллеров avr
- •3.1. Этапы разработки программного обеспечения однокристальных микроконтроллеров
- •3.2. Правила записи констант и выражений
- •3.3. Программная модель микроконтроллеров avr
- •3.4. Регистр статуса
- •3.5. Команды ассемблера
- •3.6. Директивы ассемблера
- •3.7. Настройка указателя стека
- •3.8. Работа с портами ввода-вывода
- •3.9. Работа с оперативной памятью данных
- •4. Интегрированная среда проектирования
- •4.1. Создание проекта в интегрированной среде проектирования avr studio 4.16
- •4.2. Отладка программы в avr studio 4.16
- •4.3. Загрузка программы в энергонезависимую память программ
- •Заключение
- •Библиографический список
- •Содержание
- •191028, Санкт-Петербург, ул. Моховая, 26
Федеральное агентство по образованию
Государственное образовательное учреждение
высшего профессионального образования
«Санкт-Петербургский государственный университет
технологии и дизайна»
В. Ю. Иванов, Е. Г. Маежов
Программирование микроконтроллеров avr на языке ассемблера
Утверждено Редакционно-издательским советом
университета в качестве учебного пособия
Санкт-Петербург
2009
УДК 519.711.3:519.6
ББК 22.18
И
Рецензенты:
доктор технических наук, профессор кафедры автоматики и вычислительной техники ГМА им. адмирала С.О. Макарова
С. В. Смоленцев
кандидат технических наук,
старший преподаватель кафедры № 22 военного инженерно-технического университета
Д. А. Емельянов
Иванов В. Ю., Маежов Е. Г.
И Программирование микроконтроллеров AVR на языке ассемблера:
учеб. пособие / В. Ю. Иванов, Е. Г. Маежов. – СПб.: СПГУТД, 2009. – 72 с.
ISBN 978-5-7937-0464-9
В пособии рассматривается программирование однокристальных микроконтроллеров семейства AVR на языке ассемблера. Приводятся примеры программ. Разработка и отладка программного обеспечения, рассмотренного в данном пособии, выполняется с использованием интегрированной среды разработки программного обеспечения «AVR STUDIO 4.16» фирмы ATMEL.
УДК 519.711.3:519.6
ББК 22.18
ISBN 978-5-7937-0464-9 © СПГУТД, 2009
© Иванов В. Ю., 2009
© Маежов Е. Г.,2009
Введение
Разработка программы на языке ассемблера позволяет в полной мере использовать ресурсы однокристального микроконтроллера. В тоже время программирование на языке ассемблера требует от разработчика глубоких знаний архитектуры микроконтроллера, всех внутренних регистров и блоков. Таким образом, изучение архитектуры конкретного микроконтроллера, для которого разрабатывается программа, является необходимым. Перед программированием на языке ассемблера рекомендуется ознакомиться с архитектурой микроконтроллеров семейства AVR.
1. Архитектура однокристальных микроконтроллеров семейства avr
Программирование микроконтроллеров на языке ассемблера требует от программиста знания архитектуры и особенностей конкретной модели микроконтроллера. Все микроконтроллеры выпускаются в составе семейств. Внутри одного семейства имеется общая архитектура, разрядность и единая система команд. Несмотря на это, каждая конкретная модель микроконтроллера отличается объемом запоминающих устройств, наличием дополнительных аппаратных узлов, количеством портов ввода-вывода, наличием дополнительных команд и т. д. Следовательно, перед началом программирования микроконтроллеров требуется изучить подробную техническую документацию. Ниже будет дано краткое описание архитектуры микроконтроллеров семейства AVR. В качестве примера будут приведены конкретные технические параметры микроконтроллера ATmega32.
Микроконтроллеры семейства AVR имеют Гарвардскую архитектуру. В Гарвардской архитектуре память программ и память данных разделена физически и логически. Применение RISC (Reduced Instruction Set Computer) системы команд позволило увеличить быстродействие микроконтроллеров AVR за счет сокращения операций обмена с памятью программ. Это достигнуто размещением команды в одной ячейке памяти программ. Большинство команд выполняются за один машинный такт с одновременным исполнением текущей и выборкой следующей команды. Но количество возможных команд, занимающих одну ячейку памяти программ, ограничено. Таким образом, разрядность данных и команд в микроконтроллерах семейства AVR различна. Микроконтроллеры AVR имеют 8-разрядную шину данных и 16-разрядные команды. В настоящее время микроконтроллеры AVR делятся на три группы – «Tiny», «Mega», «xMega». Типовая укрупненная структурная схема микроконтроллеров AVR представлена на рис. 1.
Рис. 1. Структурная схема микроконтроллера семейства AVR
Память программ (Flash Program Memory) выполнена по технологии Flash и является электрически перезаписываемым, энергонезависимым устройством. Разрядность памяти программ – 16 бит. Типовое количество циклов перезаписи – 100 000. Емкость памяти программ зависит от конкретного кристалла. Память программ загружается при помощи программатора. Карта памяти программ микроконтроллера ATmega32 представлена на рис. 2.
Память данных (рис. 3) выполнена в виде двух устройств. Оперативная память (Data SRAM) и энергонезависимая память данных (EEPROM). Емкость памяти данных также зависит от конкретной модели микроконтроллера. Разрядность памяти данных – 8 бит. Типовое количество циклов перезаписи EEPROM составляет 100 000. Вся память данных доступна в процессе выполнения программы для чтения и записи. Память EEPROM может быть также прочитана и загружена при помощи программатора.
Рис. 2. Карта памяти программ микроконтроллера ATmega32
Все операции выполняются арифметико-логическим устройством (ALU), связанным с 32 регистрами общего назначения (рис. 4), которые называются регистровым файлом.
Регистры общего назначения располагаются в области внутренней памяти данных. По существу они также являются ячейками внутренней памяти данных, но каждый регистр общего назначения имеет вместо адреса имя (номер регистра). Это упрощает доступ к этим ячейкам памяти данных. Главной особенностью регистров общего назначения является то, что они связаны с арифметико-логическим устройством (АЛУ). Следовательно, при выполнении логических и арифметических действий операнды должны располагаться в регистрах общего назначения. Кроме того, регистры общего назначения являются связующим звеном между ресурсами микроконтроллера, т. е., например, ввод информации из порта ввода-вывода осуществляется сначала в регистр общего назначения, а затем уже сохраняется в памяти данных.
Рис. 3. Карта памяти данных микроконтроллера ATmega32
Рис. 4. Структура регистрового файла
Микроконтроллеры семейства AVR содержат 32 регистра общего назначения. Все регистры разделены на две группы: младшие регистры с R0 по R15 и старшие регистры с R16 по R31 (рис.4), некоторые регистры имеют дополнительные функции. Об этих особенностях будет сказано далее.
В физической области оперативной памяти данных (Data Address Space) размещены регистры ввода-вывода (I/O Registers) (см. рис. 3). Часть этих регистров действительно является устройствами ввода-вывода, а остальные предназначены для контроля и управления интегрированных аппаратно-программных узлов микроконтроллера.