Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Интегрированная отладочная среда 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 с.)