Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь FAQ Написать работу КАТЕГОРИИ: АрхеологияБиология Генетика География Информатика История Логика Маркетинг Математика Менеджмент Механика Педагогика Религия Социология Технологии Физика Философия Финансы Химия Экология ТОП 10 на сайте Приготовление дезинфицирующих растворов различной концентрацииТехника нижней прямой подачи мяча. Франко-прусская война (причины и последствия) Организация работы процедурного кабинета Смысловое и механическое запоминание, их место и роль в усвоении знаний Коммуникативные барьеры и пути их преодоления Обработка изделий медицинского назначения многократного применения Образцы текста публицистического стиля Четыре типа изменения баланса Задачи с ответами для Всероссийской олимпиады по праву Мы поможем в написании ваших работ! ЗНАЕТЕ ЛИ ВЫ?
Влияние общества на человека
Приготовление дезинфицирующих растворов различной концентрации Практические работы по географии для 6 класса Организация работы процедурного кабинета Изменения в неживой природе осенью Уборка процедурного кабинета Сольфеджио. Все правила по сольфеджио Балочные системы. Определение реакций опор и моментов защемления |
Интегрированная отладочная среда VMLabСодержание книги
Поиск на нашем сайте
Интегрированная отладочная среда обычно включает в себя компилятор с языков ассемблера и СИ и позволяет пользователю полностью контролировать выполнение программ с использованием симулятора, который поддерживает различные типы микроконтроллеров. Например, отладочная среда VMLab поддерживает выполнение программ в виде ассемблерного текста формата AVR Assembler и в формате языка CИ компилятора GCC и WinAVR. Пользователь может выполнять программу полностью в пошаговом режиме, трассируя блоки функций, или выполняя программу до места, где стоит курсор. В дополнение можно определять неограниченное число точек останова, каждая из которых может быть включена или выключена. Интегрированная отладочная среда VMLab используется с встроенным имитатором AVR.
Создание проекта вVMLab Для работы над новым проектом создается папка проекта с произвольным именем, например на диске С:. В папку необходимо скопировать файл инициализации выбранного для реализации проекта контроллера, например, «m16def.inc». Этот файл включен в прикладное программное обеспечение VMLab. Программа VMLab функционирует в среде Windows 95/98/2000/XP/NT. Значок запуска программы изображен на рис.3. В результате запуска AVR Studio на экране появляется окно программы, представленное на рис.4. Для создания нового проекта необходимо в меню Project выбрать команду New Proect. В диалоговом окне (рис. 5) необходимо ввести название проекта (Project name) и его расположение (Location). Далее выполняются действия, указанные в Step1, Step2, Step3, Step4. Рис. 3.Значок программы К проекту должен быть добавлен файл программы на языке ассемблера. Это можно сделать разными способами: или в проект добавляется уже существующий файл с расширением.asm, или создается новый. После установки всех параметров проекта и нажатия на кнопку OK появляются два окна Code. Target File с программой на языке Ассемблера и окно файла проекта. Оба окна (рис.6.) допускают корректировку этих файлов встроенным текстовым редактором. Корректировка может быть выполнена также любым текстовым редактором вне среды VMLab.
Рис. 4. Стартовое окно программы VNLab Далее необходимо подключить к проекту необходимые компоненты (рис.7). Выбрав компонент TTY (RS232), в окне проекта появляется соответствующая строка. Далее необходимо указать в окне проекта его имя, параметры и цепи подключения. Рис. 5. Диалоговое окно нового проекта
Рис. 6. Окна файла проекта и с программой В проекте можно использовать различные компоненты, встроенные в VMLab. Для просмотра напряжений в различных узлах схемы проекта можно в файл проекта вставить директиву .plot V(PD0) v(PD1), в которой указаны выводы 0 и 1 разрядов порта D микроконтроллера. Перед тем, как начать трансляцию, а затем и запуск созданной и откомпилированной программы необходимо добавить в окно VMLab компоненты контроля и управления. Для этого в окне View необходимо выбрать соответствующие элементы. Далее осуществляется трансляция программы и проверка правильности её написания. Выбирается пункт Build в меню Project рис.8. При этом создаются все файлы проекта и проверяется правильность написанной программы. При трансляции без ошибок в окне Messeges появится об этом сообщение рис.9. Рис. 7. Окно компонентов Рис. 8. Окна при трансляции и моделировании проекта
Рис. 9. Окно сообщений о результатах трансляции Дальнейшая отладка программы осуществляется при ее запуске в автоматическом или пошаговом режиме рис.10. Для запуска созданной и откомпилированной программы используется команда GO/Continur в меню Run или в пошаговом режиме команды Step. Программа вводит через UART числа X и Y в коде ASCII. В показанном примере X=2 Y=3, после вычисления 9*X+2*Y–28, результат выводится в UART в коде ASCII в виде двухзначного десятичного числа, выводится минус, если результат – отрицательное число. Для наблюдения за изменениями переменных можно использовать окно Watch.
Рис. 10. Окна при запуске программы
Для просмотра программного счетчика, указателя стека, содержимого регистра статуса SREG и индексных регистров X,E и Z, памяти микроконтроллер и других регистров, а также состояния портов ввода/вывода и периферийных устройств через их регистры в процессе отладки программы можно воспользоваться соответствующими компонентами окна VMLab.
Задание к лабораторной работе
Студент самостоятельно осваивает все основные этапы разработки и отладки программ в среде VMLab, рассмотренные ранее. В качестве примера используются файлы Lab1.asm и Lab_1.prj.
Файл Lab_1.prj .MICRO "ATmega16" .PROGRAM "lab1.asm" .TARGET "lab_1.hex" .TRACE; Activate micro trace ; Following lines are optional; if not included X1 TTY(4800 8) PD0 PD1 .plot V(PD0) v(PD1) .POWER VDD=5 VSS=0; Power nodes .CLOCK 1meg; Micro clock .STORE 250m; Trace (micro+signals) storage time
Файл Lab1.asm
.include "C:\VMLAB\include\m16def.inc" .def tmp = r16 .def X = r17 .def Y = r18 .def flag = r20; рег. флагов, значения битов будут определять ветвления в: программе 0 бит– завершение программы ; 1 бит – получено число X .def result = r21 .cseg; начало сегмента программы .org $0; установка счетчика адреса на 0 ; обработка прерываний rjmp start .org URXCaddr rjmp uart_rx .org UDREaddr reti .org UTXCaddr reti ; начало программы uart_rx:; ПП обработки прерывания – ;получение символа в UART in tmp, UDR; чтение значения из регистра данных subi tmp, $30; UART настроен на работу по умолчанию, поэтому ; преобразовываем поступающий символ sbrc flag, 0; проп. возврат, если нет флага завершения (еще не все ; символы приняты) reti
sbrc flag, 1; решаем, какое число принимается X или Y rjmp setY rjmp setX reti start:; инициализация программы ldi flag, 0; обнуление флагов ldi tmp, high(RAMEND); инициализация памяти стека out SPH, tmp ldi tmp, low(RAMEND) out SPL, tmp; завершение инициализации памяти стека ldi tmp, 12 out UBRR, tmp; установка скорости UART 4800 бод ldi tmp, 0xF8 out UCR, tmp; инициализация UART sei; глобальное включение прерываний forever:; бесконечный цикл, все действия по прерываниям nop nop rjmp forever; setX:; получаем число X и сообщаем об этом установкой флага mov X, tmp sbr flag, $02 reti setY:; получаем число Y и после этого переходим к вычислениям mov Y,tmp sbr flag, $01 rjmp main main:; вычисление значения ldi tmp, 9 mul tmp, X mov result, R0 ldi tmp, 2 mul tmp, Y add result, R0 subi result, 28 brmi negativ; если получ. отр. число, осуществляем переход rjmp bcd_result
negativ:; выделяем модуль числа и выводим символ «–» ldi tmp, $2D; вывод ACII символа «–» out UDR, tmp; получаем модуль числа com result inc result rjmp bcd_result bcd_result:; преобр. число: десятки будут храниться в X, а единицы в –Y ldi X, 0 mov Y, result subi Y, 10 brmi bcd_done inc X subi Y, 10 brmi bcd_done inc X subi Y, 10 brmi bcd_done inc X subi Y, 10 brmi bcd_done inc X subi Y, 10 brmi bcd_done inc X subi Y, 10 brmi bcd_done inc X subi Y, 10 brmi bcd_done inc X
subi Y, 10 brmi bcd_done inc X subi Y, 10 brmi bcd_done inc X subi Y, 10 brmi bcd_done inc X bcd_done: com Y inc Y subi Y, 10 com Y inc Y ldi tmp, $30 add X, tmp add Y, tmp out UDR, X wait:; ждем, пока завершится вывод числа X in tmp, UCSRA sbrs tmp, 5 rjmp wait out UDR, Y rjmp forever
Программа «Lab1.asm» осуществляет ввод символов (двух чисел от 0 до 9 каждый) через COM порт (UART, S232), результат вычисления также выводится через этот же интерфейс.
|
||||
Последнее изменение этой страницы: 2016-08-12; просмотров: 391; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 18.226.52.26 (0.01 с.) |