Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

ЦМПУ / Новая папка / Лаб1ЦМПУ

.docx
Скачиваний:
25
Добавлен:
16.04.2015
Размер:
106.3 Кб
Скачать

5

Лабораторная работа №1

«Освоение среды разработки VMLAB 3.12»

Цель работы: изучить возможности и основные принципы работы в среде разработки VMLAB 12.

Исходные данные: программа умножения двух чисел.

Порядок выполнения работы:

1. Создание проекта

1. Создала рабочую папку lab1 в каталоге VMLAB. В этой папке будет храниться созданный проект.

2. Открыла меню Project/New Project.

В появившемся диалоговом окне в поле Select Project File name and location нажала кнопку Enter name/browse/directory и указала папку расположения нового проекта и задала имя проекта lab1.prj. В поле Select micro указала модель МК, который будет симулироваться. В нашем случае необходимо выбрать модель AT128. Поле Select software toolchain изменять нет необходимости, − оно предназначено для подключения компилятора языка Си и др. целей. В поле Add source code file(s) будут содержаться файлы с именем, как и у файла проекта, и расширениями *.asm и *.hex. Собственно, файл lab1.asm и является тем файлом, в котором будет написан текст программы. Для его выбора необходимо нажать кнопку Add this. Если же этот файл уже создан, то его можно включить в проект кнопкой Browse+Add. Для завершения работы с процедурой нажал кнопку Ок.

2. Редактирование файла ассемблера

На этом этапе в окно кодов нужно ввести программу. В качестве примера предложена программа умножения двух чисел. Рассмотрим простейший способ умножения восьмиразрядных целых двоичных чисел без знака суммированием с накоплением. Множитель А находится в регистре R16, множимое В – в реги­стре R17. Для формирования результата воспользуемся однобайтной командой сложения двух регистров ADD. Результат будет находиться в регистре R18. Множитель А и множимое В нужно задать любыми числовыми значениями.

Листинг программы №1:

.include "C:\VMLAB\include\m128def.inc"; определение библиотеки МК ;ATmega128, при условии расположения программы VMLAB на ;локальном диске С

reset: ; начальная метка

rjmp start ; Переход на начало основной программы

reti ; Addr $01

reti ; Addr $02

reti ; Addr $03 Вектора прерываний МК ATmega128.

reti ; Addr $04 Приведены вектора с адреса $01 по адрес $10.

reti ; Addr $05 Полностью вектора прерываний представлены

reti ; Addr $06 в приложении с назначением прерываний

reti ; Addr $07 (внешних и внутренних).

reti ; Addr $08

reti ; Addr $09

reti ; Addr $0A

reti ; Addr $0B

reti ; Addr $0C

reti ; Addr $0D

reti ; Addr $0E

reti ; Addr $0F

reti ; Addr $10

start: clr r18 ; очистка регистра

ldi r16,5 ; загрузка множителя

ldi r17,2 ; загрузка множимого

clz ; сброс флага Z

m1: breq done ; проверка завершения умножения

add r18,r17 ; суммирование множимого

dec r16 ; декремент множителя

rjmp m1 ; переход на следующий цикл

done: rjmp done ; пустой цикл (конец программы)

3. Ассемблирование и выполнение программы

Подготовленный текст программы на языке ассемблера должен быть преобразован в форму двоичных команд, которые могут быть выполнены микроконтроллером. Ассемблирование можно выполнить командой Project/Build (F9).

В выполняемой программе нужно в окне регистров проследить за изменением значений регистров r16, r17 и r18. Окно регистров вызывается через меню View/Register/flags (Alt+Shift+R). Там же можно посмотреть за изменением флагов регистра SREG.

Остановить выполнение программы можно через меню Run/Pause program (Shift+F5). Если необходимо сделать рестарт с сохранением текущих значений регистров, флагов и т.д., можно вызвать из меню Run команду Restart light (F8). Для полного рестарта МК в первоначальное состояние нужно воспользоваться командой Run/ Restart deep (Shift+F8).

Блок схема к данной программе:

r18=0

r16=A

r17=B

r18=(r18)+(r17)

r16=(r16)-1

Начало

(r16=0) Z = 1

да

нет

Конец

Задание на лабораторную работу:

№ Варианта

Задание

1

Организовать счетчик

В программе сначала очищаем регистр r17. Затем загружаем в регистр r16 число, которое нам надо посчитать. Подсчёт происходит в цикле, заход в цикл происходит с использованием флага Z. В цикле происходит сначала уменьшение исследуемого числа в регистре, затем увеличиваем регистр 17 на единицу. Цикл длится до тех пор, пока не происходит обратный процесс, 16 регистр увеличивается до заданного числа, а 17 выходит в 0. В 16 регистре оказывается заданное число.

Результат выполнения программы:

Блок-схема программы:

Начало

r17=0

r16=A

r17=B

да

Z = 1

нет

r16=r16-1

r17=r17+1

Конец

Вывод: изучили возможности и основные принципы работы в среде разработки VMLAB 3.9.

Соседние файлы в папке Новая папка