Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
20121102_Лабораторная работа№1.doc
Скачиваний:
50
Добавлен:
27.05.2015
Размер:
382.46 Кб
Скачать

6.2. Макроассемблер a51.

Ассемблер A51 совместим с ASM51 Intel для всего семейства микроконтроллеров Intel 8051. Ассемблер транслирует символическую мнемонику в перемещаемый объектный код, имеющий высокое быстродействие и малый размер. Макросредства ускоряют разработку и экономят время, поскольку общие последовательности могут быть разработаны только один раз. Ассемблер поддерживает символический доступ ко всем элементам микроконтроллера и перестраивает конфигурацию для каждой разновидности Intel 8051.

A51 транслирует исходный файл ассемблера в перемещаемый объектный модуль. При отладке или при включенной опции “Include debugging information” этот объектный файл будет содержать полную символическую информацию для отладчика/имитатора иливнутрисхемного эмулятора.

6.3.Компоновщик l51.

Компоновщик объединяет один или несколько объектных модулей в одну исполняемую программу. Компоновщик размещает внешние и общие ссылки, назначает абсолютные адреса перемещаемым сегментам программ. Он может обрабатывать объектные модули, созданные транслятором C51, ассемблером A51, транслятором PL/M-51 Intel и ассемблером ASM51 Intel.

Компоновщик автоматически выбирает соответствующие библиотеки поддержки и связывает только требуемые модули из библиотек. Установки по умолчанию для L51 выбраны так, чтобы они подходили для большинства прикладных программ, но можно определить и заказные установки.

6.4.Отладчик/симулятор WinSim51.

Отладчик исходных текстов используется с транслятором C51, ассемблером A51, транслятором PL/M-51 Intel и ассемблером ASM51 Intel. Отладчик/симулятор позволяет моделировать большинство особенностей Intel 8051 без наличия аппаратных средств. Можно использовать его для проверки и отладки прикладной программы прежде, чем будут изготовлены аппаратные средства. При этом моделируется широкое разнообразие периферийных устройств, включая последовательный порт, внешний ввод - вывод и таймеры.

Начало работы

Запуск интегрированной среды ProView32 осуществляется через меню Пуск(Windows):Пуск ->Программы -> Franklin Software -> ProView32.

Далее необходимо создать новый файл. Для этого в разделе меню Fileвыбираем пунктNew, в появившемся окне выбираемAssembler Files (см. рис.1).

Рис. 1. Выбор типа программы

Новый файл необходимо сохранить на диск (File->Save as), присвоив ему имя, состоящее из латинских букв и цифр, длина имени не должна превышать 8 символов, расширение файла -asm. Пример имени «Lab1.asm». Теперь можно приступать к написанию программы для микроконтроллера на языке Ассемблер.

Рассмотрим простейшую программу (Задание1 этих методических указаний). После того как текст программы набран и сохранен приступаем к компиляции программы - переводу текста в машинный код, предназначенный для загрузки в память программ микроконтроллера.

Для компиляции программы необходимо выбрать пункт меню Project -> Build all. ProView отображает окно, показывая текущее состояние процесса. Когда процесс компиляции закончится, в окне сообщений (Message) (рис.3) отображается сообщение завершения. Если были обнаружены какие-нибудь ошибки, о них сообщается здесь же.

Рис. 3. Окно сообщений Message

Если программа не содержит ошибок, которые отображаются в окне то можно запускать отладчик (меню Debug -> Start). При первом запуске отладчика появится окно (см. рис. 4), в котором необходимо указать тип микроконтроллера (Microcontroller: 80c51), а также тактовую частоту (Frequency) в мегагерцах.

Рис. 4. Выбор типа контроллера и тактовой частоты

Запустив отладчик, мы видим несколько окон (см. рис. 5):

  • окно с текстом программы;

  • окно кода Code , в котором каждой инструкции на ассемблере соответствует её машинный код;

  • окно основных регистров Main Registers, в котором отображено текущее состояние каждого из регистров;

В строке состояния показано время, за которое микроконтроллер выполнил команды программы с момента старта до курсора.

Рис. 5 Экран режима Debug

Используя меню View отладчика можно добавлять новые окна. Например, пункт менюView->Data dump позволяет отобразить окна с содержимым различных областей памяти данных микроконтроллера:

Xdata– внешняя память (ОЗУ) данных;

Data–внутренняя память данных (внутреннее ОЗУ);

Sfr– область регистров специальных функций (РСФ);

Bit– область прямо адресуемых битов.

В наших заданиях необходимо вводить тестовые числа в ячейки памяти ОЗУ(внутренней памяти данных) для проверки правильности работы написанных программ. Для этого выбираем пункт меню View->Data dump-> Data view (рис.6).В окне Data view отображается содержимое ячеек ОЗУ, которое группируется по 8 ячеек в строке с указанием адреса первой ячейки в группе (адрес указан слева с двоеточием).Для проверки задания 1 : [(20H)*10H – (21H)/07H] → ( 22H) необходимо загрузить тестовые числа в ячейки с адресами 20H и 21H (например, в (20H) загрузим 05H , а в (21H) загрузим С4H (см. рис.6)). При вводе данных в ячейки не забываем нажимать кнопку ENTER на клавиатуре.

Рис. 6 Окно отображения содержимого ячеек ОЗУ Data view

Для удобства работы оптимизируем содержимое экрана: окно кода Code для работы в нашем курсе работ нам не нужно, поэтому его можно свернуть в трей, далее подгоним размеры окна с программой так, чтобы были видны команды и хватило места для оконData view иMain Registers(см. рис.7).

Перед запуском программы необходимо нажать кнопку Animate, затем нажать кнопку сбросаResetи запустить программу кнопкойRun .

Так как по условию задания 1 : [(20H)*10H – (21H)/07H] → ( 22H) результат запоминается в ячейке с адресом 22H, то смотрим содержимое этой ячейки после выполнения программы в окне Data view. На рис.7 в этом окне результат равен 34Н.

Рис.7 Окно Debug после выполнения программы

Для проверки этого результата вызываем калькулятор Windowsчерез меню Пуск(Windows):Пуск ->Программы -> Стандартные -> Калькулятор. Переводим его в инженерный режим(рис. 8). Переводим в режим работы в шестнадцатеричной системе счисления (переключательHex) и ограничиваем размер чисел одним байтом (переключатель1байт).

Рис.8 Окно калькулятораWindows

Программу проверяем в соответствии с заданием с соблюдением приоритетов. По условию задания 1 : [(20H)*10H – (21H)/07H] → ( 22H) первыми по приоритету необходимо выполнить умножение и деление, а затем вычитание. Выполним эти дейтвия с тестовыми данными и запишем подробно результаты промежуточных вычислений:

05Н*10Н=50Н

С4Н:07Н=1СН

50Н-1СН=34Н

Как видим, результат расчетов совпал с результатом в окне Data view, что говорит о правильности программы.

Если результат не совпадает, то необходимо выяснить причину ошибки. Отладку программы в этом случае удобно производить в пошаговом режиме (кнопка Step intoилиF7). Если вы используете пошаговый режим, то при каждом нажатии кнопкиF7 будет выполняться только одна инструкция на языке ассемблера. При этом в открытых вами окнах с регистрами и содержимым памяти будет обновляться информация в соответствии с ходом выполняемой программы. Сравнивая результаты выполнения шага по содержимому в окнеMain Registersсрезультатами промежуточных вычисленийвыявляем ошибки в вашей программе.

Если во время отладки программы выяснилось, что алгоритм необходимо скорректировать, то следует прервать процесс отладки, выбрав пункт меню Debug->Terminate. После внесения необходимых изменений программу необходимо повторно откомпилировать (пункт менюProject -> Build all) и повторить процесс отладки.

Если ваша программа достаточно большая и требуется отладить только некоторые её фрагменты, то обычно используют точки останова (Breakpoint), которые устанавливают в начале интересующего фрагмента программы. При этом переход к точке останова производится нажатием кнопкиGO (Ctrl-F9).Переход может занять от нескольких секунд до нескольких минут, однако он будет быстрее, чем в режиме пошаговой отладки.