Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ЦМПУ / Новая папка (1) / ЦИМПУ(atmega 128).doc
Скачиваний:
102
Добавлен:
16.04.2015
Размер:
4.2 Mб
Скачать

1.3.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,А ; загрузка множителя

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

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

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

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

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

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

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

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

нет

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

Подготовленный текст программы на языке ассемблера должен быть преобразован в форму двоичных команд, которые могут быть выполнены микроконтроллером. Ассемблирование можно выполнить командой Project/Build (F9). При отсутствии ошибок отладчик в рабочей папке создаст файлы с именем Project и расширениями .asm, .hex, .prj, .lis, .ly1, .map, .obj. Если же ошибка возникла, то она будет обозначена восклицательным знаком. После устранения ошибки нужно будет снова выполнить команду Project/Build (F9).

Выполнение программы можно производить в автоматическом или же пошаговом режиме при помощи соответствующих команд. Для выполнения программы можно использовать следующие режимы:

  • Автоматический. Этот режим можно задать, вызвав команду Go/Continue (F5) из падающего меню Run;

  • Пошаговый без входа в подпрограммы. Режим задается командой Step over (F6) из падающего меню Run;

  • Пошаговый с входом в подпрограммы. Режим задается командой Step into (F7) из падающего меню Run;

  • Пошаговый с входом в подпрограммы и с автоматическим выполнением команд. Режим задается командой Step out (Shift+F7) из падающего меню Run;

  • Автоматический пошаговый режим. Для входа в этот режим нужно сначала установить команду Animate code из падающего меню Run, а после этого вызвать команду Go/Continue (F5) из того же падающего меню. Для отключения автоматического пошагового режима необходимо снова выполнить команду Animate code.

C этого шага можно наблюдать за изменениями переменных, аппаратных сигналов, регистров, памяти и состояний периферийных устройств.

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

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

Часто возникает необходимость прервать выполнение программы в каком-то определенном месте. Это можно сделать при помощи точек останова. Команды работы с точками останова находятся в падающем меню Debug. Для установки точки останова нужно поставить курсор в той строке, где будет останов, и вызвать команду Toggle breakpoint (Ctrl+P). Есть более простой способ установки точки: в левой части окна кодов можно видеть напротив команд квадраты зеленым цветом − это и есть точки останова. Остается только нажать курсором на него и точка будет установлена. Для снятия точки нужно снова нажать зеленый квадрат.

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