Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
sp_avr_2009.doc
Скачиваний:
40
Добавлен:
21.04.2023
Размер:
819.2 Кб
Скачать

Федеральное агентство по образованию

Государственное образовательное учреждение

высшего профессионального образования

«Санкт-Петербургский государственный университет

технологии и дизайна»

В. Ю. Иванов, Е. Г. Маежов

Программирование микроконтроллеров 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). Часть этих регистров действительно является устройствами ввода-вывода, а остальные предназначены для контроля и управления интегрированных аппаратно-программных узлов микроконтроллера.

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