
- •Программирование микроконтроллеров mcs-51
- •Учебное издание
- •Предисловие
- •1.1. Микроконтроллеры фирмы Intel
- •1.2. Микроконтроллеры фирмы Philips
- •1.3. Микроконтроллеры фирм Siemens, Atmel
- •2.1. Программная модель микроконтроллера 8051
- •2.2. Ассемблерный язык микроконтроллера 8051
- •2.2.1. Система команд языка асм51
- •2.2.2. Директивы языка асм51
- •Include операнды
- •3.1. Этапы проектирования ппо
- •3.2. Кросс-ассемблер x8051
- •Input Filename:
- •2500 A.D. 8051 Macro Assembler - Version 4.02a
- •Input Filename: prim.Asm
- •3.3. Кросс-редактор связей Link
- •Input Filename:
- •3.4. Примеры микроконтроллерных программ
- •Оглавление
- •Глава 1. Состав семейства mcs-51. . . . . . . 5
- •Глава 2. Особенности программирования
- •Глава 3. Технология разработки прикладного
3.3. Кросс-редактор связей Link
Кросс-редактор связей Link работает в среде операционной системы MSDOS (версия не ниже 3.30) и дает пользователю возможность объединять до 20 сформированных кросс-ассемблером X8051 объектных модулей, настраивая их на выполнение с определенного адреса. При этом создается загрузочный модуль МК-программы.
Основные функции кросс-редактора связей Link:
- настройка объектных модулей на заданное адресное пространство памяти программ микроконтроллера 8051;
- разрешение внешних ссылок;
- формирование в различных форматах загрузочного модуля и таблицы символических имен;
- выявление ошибок редактирования;
- формирование листинга редактирования в виде карты загрузки.
Работа кросс-редактора связей начинается с запуска файла link.exe и ведется в диалоговом режиме. Сразу после запуска указанного файла на экран выдается заголовок, а затем запрашивается имя входного файла и значение смещения объектного модуля, входящего в этот файл:
Input Filename:
Enter Offset For 'Code':
Эти сообщения повторяются до тех пор, пока все входные файлы не будут перечислены. Расширение входных файлов по умолчанию принимается равным .obj. Шестнадцатеричное значение смещения прибавляется к начальному адресу объектного модуля МК-программы, устанавливаемому, как известно, директивой ORG.
После того, как все входные файлы перечислены, на запрос имени следующего входного файла надо нажать клавишу "Enter" и на экране появится запрос имени выходного файла (загрузочного модуля):
Output Filename:
Если не указано имя выходного файла, то присваивается имя первого входного файла.
После нажатия клавиши "Enter" на экране появится запрос имени файла библиотеки:
Library Filename:
Ответ из нажатия клавиши "Enter" завершает ввод имен библиотечных файлов, расширение которых по умолчанию принимается равным .lib.
В следующем сообщении запрашиваются ключи вывода результатов работы кросс-редактора связей:
Options (D, S, A, M, Z, X, H, E, T, 1, 2, 3, <CR>=Default):
где
D - вывод на диск выходного файла в шестнадцатеричном формате INTEL с расширением .hex (по умолчанию) и файла с расширением .map, содержащего ошибки редактирования, таблицу общих символических имен в алфавитном порядке, карту загрузки;
S - вывод на диск выходного файла в шестнадцатеричном формате INTEL с расширением .hex (по умолчанию) и файла с расширением .sym, содержащего таблицу общих символических имен (длина имени 32 знака);
A - вывод на диск выходного файла в шестнадцатеричном формате INTEL с расширением .hex (по умолчанию) и файла с расширением .sym, содержащего таблицу общих символических имен (длина имени 10 знаков);
M - вывод на диск выходного файла в шестнадцатеричном формате INTEL с расширением .hex (по умолчанию) и файла с расширением .sym в формате MICROTEK, содержащего таблицу символических имен. При этом в исходный модуль МК-программы должна быть включена директива SYMBOLS;
Z - вывод на диск выходного файла в шестнадцатеричном формате INTEL с расширением .hex (по умолчанию) и файла с расширением .sym в формате ZAK, содержащего таблицу символических имен. При этом в исходный модуль МК-программы должна быть включена директива SYMBOLS;
X - не используется;
H - вывод на диск выходного файла с расширением .hex (по умолчанию) в шестнадцатеричном формате INTEL;
E - вывод на диск выходного файла с расширением .hex (по умолчанию) в расширенном шестнадцатеричном формате INTEL;
T - вывод на диск выходного файла с расширением .tek (по умолчанию) в шестнадцатеричном формате TEKTRONIX;
1 - вывод на диск выходного файла с расширением .s19 (по умолчанию) в формате MOTOROLA S19;
2 - вывод на диск выходного файла с расширением .s28 (по умолчанию) в формате MOTOROLA S28;
3 - вывод на диск выходного файла с расширением .s37 (по умолчанию) в формате MOTOROLA S37.
Из перечисленных выше форматов, в которых может быть представлен выходной файл кросс-редактора связей (загрузочный модуль МК-программы), наиболее востребованным является шестнадцатеричный формат INTEL.
Файл в указанном формате состоит из записей (строк), причем каждая строка содержит шесть полей (поле признак записи, поле длина, поле адрес загрузки, поле тип записи, поле данные и поле контрольная сумма).
Поле признак записи состоит из одного символа ":" (двоеточие).
Поле длина занимает один байт и содержит число байтов данных в записи. Это число не может превышать значение, заданное из диапазона 01H-0FFH операндом директивы RECSIZE. При отсутствии в исходном модуле МК-программы указанной директивы число в поле длина не может превышать 10H. Значение поля длина последней записи файла равно нулю.
Поле адрес загрузки состоит из двух байтов и представляет собой шестнадцатеричный адрес загрузки первого в записи байта данных. В последней записи файла это поле содержит нулевой адрес.
Поле тип записи состоит из одного байта, значение которого равно 00H (01H), если запись не последняя (последняя).
Поле данные состоит из фактических данных, байты которых нумеруются слева направо. В последней записи файла данные отсутствуют.
Поле контрольная сумма занимает один байт и представляет собой дополнительный код двоичной суммы значений поля длина, поля адрес загрузки, поля тип записи и поля данные.
Пример файла в шестнадцатеричном формате INTEL (файл prim.hex):
:0F00000075F06484F9740AC5F084C425F0F82201
:00000001FF
Пример файла с расширением .map (файл prim.map):
Global Symbol Name Global Value Global Filename
***********************************************************
* LOAD MAP *
***********************************************************
* Section Name Starting Address Ending Address Size *
***********************************************************
* prim.obj *
* CODE 0000 000E 000F *
***********************************************************
Link Errors: 0 Output Format: Intel Hex