Однокристальные микроконтроллеры семейства MCS-51. Разработка и отладка многомодульных программ. Алгоритм программы работы МК, страница 4

Компоновку многомодульных программ с помощью линкера link.exe удобно выполнять в диалоговом режиме. При этом компьютер выдает на экран монитора несколько подсказок, на которые требуется ответить. Рассмотрим процесс компоновки программ, полученных в файлах displ.obj и crosscod.obj.

1. На панели TotCom с помощью курсора выделяем файл link.exe и запускаем его. Компьютер выдает первую подсказку:

Input Filename:

Необходимо набрать имя первого входного файла. В нашем случае это будет файл главного модуля displ.obj. По умолчанию расширение .obj можно не вводить. Наберите displ и нажмите Enter.

Далее появляется сообщение:

Enter offset for 'CODE':

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

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

Input Filename:

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

Enter offset for 'CODE':  

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

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

Input Filename:

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

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

Output Filename:

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

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

Library Filename:

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

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

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

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

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

Link Errors: 0

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

Запустите симулятор/отладчик AVSIM51 и загрузите в него файл displ.hex. Отладку программы DISPL рекомендуется делать следующим образом.

1.  С помощью клавиши ESC переходим в дисплейную область отладчика AVSIM51. Устанавливаем точку останова на первой от начала команде RET (последняя команда программы DISPL). Устанавливаем (с помощью клавиши F5) низкую скорость работы отладчика (LOW).