Разработка и отладка многомодульных программ. Отдельные фрагменты прикладной программы МК. Использование процедур, оформленных в виде подпрограмм, страница 3

Компьютер запрашивает величину смещения (offsset) первой команды программы MAIN относительно начального адреса 0000H. Так как для микропроцессоров фирмы Intel программа должна обязательно начинаться с адреса 0000H, то смещение равно 0. Нажмите клавишу Enter, что по умолчанию в данном случае означает отсутствие смещения.

2. На экране появляется вторая подсказка:

Input Filename:

Необходимо ввести имя второго входного файла. В данном случае это будет pr810.obj. Напечатайте pr810 и нажмите Enter. На экране появится сообщение:

Enter offset for 'CODE':

Компьютер запрашивает величину смещения начального адреса программы PR810 относительно конечного адреса программы MAIN. Как правило, при компоновке программ для микроконтроллеров с целью экономии памяти отдельные модули следуют друг за другом без смещения. Поэтому нажимаем клавишу Enter, что означает отсутствие смещения.

3. На экране появится третья подсказка:

Input Filename:

Необходимо ввести имя третьего входного файла. Это будет файл crosscod.obj. Напечатайте crosscod и нажмите Enter.

На экране появится сообщение:

Enter offset for 'CODE':

В ответ нажите клавишу Enter, что будет означать отсутствие смещения.

4. На экране появится четвертая подсказка:

Input Filename:

Так как имена всех входных файлов были уже введены, то нажимаем клавишу Enter, что сообщает компоновщику об окончании списка входных файлов.

5. Компьютер выводит пятую подсказку:

Output Filename:

Компоновщик запрашивает имя выходного файла, который им будет создаваться. В принципе имя этого файла может быть произвольным. Однако обычно имя выходного файла совпадает с именем главного модуля программы, в данном случае main. Если это так, то просто нажимаем клавишу Enter.

6. На экране появляется шестая подсказка:

Library Filename:

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

7. И, наконец, на экране появляется последняя подсказка:

Options(D,S,A,M,Z,X,H,E…;<CR>=Default):

Компьютер запрашивает имена опций, которые будут использованы при формировании выходного файла. Опции определяют формат файла, тип устройства вывода и т.д. Если в ответ на этот запрос будет нажата клавиша Enter, то по умолчанию компоновщик создаст выходной файл в формате Intel Hex с выводом результатов только на экран дисплея. А так как именно этот формат использует экранный отладчик AVSIM85, то просто нажимаем клавишу Enter.

Результаты работы программы-компоновщика выводятся на экран в следующем виде: сначала заголовок, затем карта загрузки (LOAD MAP), где указаны имена отдельных модулей, их начальные и конечные адреса, а также размеры модулей в адресном пространстве, затем следует наименование выходного файла и его формат. Компоновка считается успешной, если в нижней строке на экране будет выведено:

Link Errors: 0

В результате работы компоновщика в каталоге MP85 появится новый файл main.hex, который и будет использоваться при отладке программы.

3.2.3. Отладка многомодульной программы. Отладка многомодульных программ во многом аналогична отладке отдельных программ, методика которой рассмотрена в п.3.1. Однако имеются различия, которые удобно рассмотреть на примере отладки программы MAIN микроконтроллера.

Задание. Запустите отладчик AVSIM85 и загрузите в него файл main.hex.

Так как в программе MAI используется ОЗУ, то требуется загружать в отладчик файла ram (без расширения), находящийся в текущем каталоге MP85. В этом файле (в формате Intel Hex) содержатся начальный адрес ОЗУ – 0800H, конечный адрес – 09FFH, и данные для начальной загрузки ячеек ОЗУ – 00H.

Для загрузки файла ram необходимо выполнить команду:

LOAD→DATA