AVR Studio 4 - профессиональная интегрированная среда разработки (Integrated Development Environment - IDE), предназначенная для написания и отладки прикладных программ для AVR микропроцессоров в среде Windows. AVR Studio 4 содержит ассемблер и симулятор.
В режиме симулятора AvrStudio позволяет программисту наблюдать за логикой выполнения программы, т.е. видеть содержимое регистров, памяти, портов, наблюдать за выполнением команд и т.д.
Запустим AVRstudio, для создания нового проекта из этого окна жмём на Project/New Project.
Окно AVRstudio ничем не отличается от стандартных окон, например Delphi или CodeGear.Сверху служебные окна команд. Слева: направо
1)Окно проекта
2)Окно с кодом Ассемблера
3)Окно составляющих микроконтроллера.
Внизу лог событий.
Создание первого проекта
Для более полного знакомства напишем простую программу.
Для этого:
Создаём новый проект (в верхнем меню Project\new project или в стартовом окне
New Project)
В открывшемся окне в графе Project type выберем тип проекта Atmel AVR Assembler, в графе Project name указываем имя нового проекта, в строке Location необходимо указать путь к будущему проекту (путь не должен быть слишком длинным, содержать пробелов и иметь русских символов) также необходимо отметить галочкой Create folder (тогда проект будет создан в отдельной папке). Нажимаем «Finish».Если нажать «Next», то перед нами откроется окно выбора устройства, под которое мы будем писать программу, но пока что нам это не нужно.
Первую программу напишем для микроконтроллера Atmega16. Для начала его хватит на все эксперименты.
Постановка задачи:
Разработать устройство позволяющее управлять светодиодом и кнопкой, при нажатии на кнопку светодиод должен зажечься, а при отпускании погаснуть.С практической точки зрения это совершенно бессмысленная задача, т.к. можно обойтись без микропроцессора. Но в качестве примера подходит прекрасно.
Алгоритм:
1)настроить порты
2)прочитать состояние кнопки, если значение на кнопке «логический 0», то зажечь светодиод, а если значение на кнопке «логическая 1», то погасить светодиод
3)вернуться в начало цикла
Используемые команды:
ldi Rd,K Загрузка константы в регистр общего назначения
in Rd,P Пересылка из регистра ввода-вывода в регистр общего назначения
out P,Rd Пересылка из регистра общего назначения в регистр ввода-вывода
rjmp Относительный безусловный переход
Обозначения:
Регистр общего назначения(РОН), обозначается Rd (приёмник) или Rr (источник) где d и r номер регистра.
Регистр ввода-вывода(РВВ), обозначается P.
Константа обозначается K.
Программа:
;***управление светодиодом***
.include "m16def.inc" ;подключение библиотеки для работы с ATmega16
.list ;включение листинга
.def temp=r16 ;определение главного рабочего регистра
;--------------------------------------------
.cseg ;выбор сегмента программного кода
.org 0 ;установка текущего адреса на ноль
;--------------------------------------------
ldi temp,0x80 ;выключение компаратора
out acsr,temp
;--------------------------------------------
ldi temp,0x00 ;записываем ноль в регистр temp
out ddrd,temp ;записываем этот ноль в ddrd(порт rd на ввод)
ldi temp,0xFF ;записываем 0xff в регистр temp
out ddrb,temp ;записываем temp в ddrb(порт rb на вывод)
out portb,temp ;записываем temp в portb(погасить светодиод)
out portd,temp ;записываем temp в portd(включаем внутренний резистор)
;---------------------------------------------
metka:
in temp,pind ;читаем содержимое порта pd
out portb,temp ;пересылаем в порт pb
rjmp metka ;переходим по метке к началу цикла
После написания программы необходимо её откомпилировать, для этого в AvrStudio в верхнем меню необходимо открыть вкладку Build и нажать опять же на build или можно воспользоваться горячей клавишей F7.
После компиляции если программа написана верно в логе событий мы увидим сообщение:
"Assembly complete, 0 errors. 0 warnings”.
Теперь заходим в папку с нашим проектом и видим там некоторое количество файлов, пока что нам нужны только два:1)файл с расширением .asm, в нём собственно и находится исходный код программы.2)файл с расширением .hex – откомпилированный машинный код (именно его и прошивают в микропроцессор).
Проверим нашу программу в действии, для этого в Proteus соберём простую схему.
Необходимые компоненты: ATmega16, Button, Led-green, земля (ground) и источник напряжения (power +5v).
Когда мы собрали схему, необходимо загрузить HEX-файл в микроконтроллер, для этого кликаем правой кнопкой мыши по микроконтроллеру и выбираем Edit properties(правка свойств), находим строку Program file и указываем в ней путь к нашему .hex, пока больше менять ничего не нужно.
После этого запускаем симуляцию и нажимаем кнопку(button), светодиод должен менять своё состояние.
Так как в программе мы управляем целыми портами то без изменения программы можно подключить к порту PD восемь кнопок, а к порту PB восемь светодиодов.
AvrStudio в режиме отладки программы
Основными функциями AvrStudio являются функция разработки и функция отладки программ для микроконтроллеров фирмы Atmel. С функцией разработки мы уже познакомились, теперь запустим режим отладки.
Для этого:
1)Запускаем AvrStudio(если ещё не запустили)
2)Создаём новый проект
3)Напишем простейшую программу для ATmega16 и откомпилируем её
Программа:
;пример для эмуляции программы в AvrStudio
.include "m16def.inc";подключение библиотеки
.list;включение листинга
.def temp0=r16;определение рабочих регистров
.def temp1=r17
.def temp2=r18
.def temp3=r19
;--------------------------------------------
metka:
ldi temp0,0x00;записываем ноль в регистр temp0
ldi temp0,0xFF;записываем 0xff в регистр temp0
ldi temp1,0x00;записываем ноль в регистр temp1
ldi temp1,0xAA;записываем 0xAA в регистр temp1
ldi temp2,0x00;записываем ноль в регистр temp2
ldi temp2,0xCC;записываем 0xCC в регистр temp2
ldi temp3,0x00;записываем ноль в регистр temp3
mov temp3,temp2;пересылка данных из temp2 d temp3
rjmp metka;переход к метке
4)Настроим эмулятор
Для этого в верхнем меню откроем вкладку Debug и выберем select platform and device…, в появившемся окне выберем платформу AVR simulator и устройство ATmega16 после чего нажмём Finish.
5)Запустим эмуляцию нажав Start debugging в той же вкладке Debug.
*Эмуляция в AvrStudio- пошаговое выполнение команд с возможностью контроля их выполнения непосредственно в структуре процессора.
В окне I/O view вы можете контролировать состояние портов, памяти и т.д., а в окне Processors видеть как изменяются значения регистров и следить за процессом эмуляции…Жёлтая стрелка находящаяся слева от команды показывает что именно эта команда будет выполнена при следующем шаге эмуляции.
6)Начнём выполнение программы, для этого нажимаем на step Into(F11) во вкладке Debug
Дальше дело за вами, совмещая Proteus и AvrStudio можно быстро научиться проектировать электронные устройства, чего я вам и желаю.
Вопросы обсуждаем на форуме
Скачать Proteus можно здесь
Avr studio скачать здесь