Читаем Занимательно о микроконтроллерах полностью

Файл объектного кода программы, который будет преобразован в машинные коды микроконтроллера, формируется программой-транслятором в процессе обработки исходного текста программы. Как уже упоминалось ранее, прежде чем начать собственно преобразование исходного текста программы, транслятор производит предварительную обработку программы, в процессе которой выполняются директивы условной трансляции, включения содержимого дополнительных файлов и макроподстановок. Часто говорят, что перед трансляцией программы работает препроцессор.

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

Подведем итоги. При многофайловом программировании:

— использование нескольких файлов позволяет разбить исходный текст программы на несколько частей, каждая из которых реализует свою независимую задачу;

— удобнее всего в отдельные файлы выносить подпрограммы, которые должны быть построены таким образом, чтобы их связь с основной программой была минимальной;

— разбираться с короткими файлами, реализующими одну или несколько связанных между собой функций, намного легче, чем работать с одним большим файлом;

— различные части программы могут быть написаны разными программистами, которым намного легче работать со своей программой, оформленной в виде отдельного файла.

Разбивать на несколько файлов можно не только программы, исходный код которых разработан на языках высокого уровня. Включение файлов можно использовать и в программах на языке ассемблера. В листинге 7.21 приведен пример использования включения файлов в программе на языке ASM-51.

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

С разбиением программы на несколько файлов связано понятие программного проекта. В состав программного проекта включают все файлы, содержащие исходный текст программы. Обычно программный проект размещают в отдельном каталоге.

Кроме исходных текстов программы, в состав проекта входит загрузочный файл, в который помещаются машинные коды микроконтроллера, полученные в результате трансляции программы. Очень часто они хранятся в файле не непосредственно в двоичном виде, а в специальном формате, который позволяет исключить ошибочную запись неправильного кода в микроконтроллер. Наибольшее распространение получил НЕХ-формат загрузочного файла.

Еще один файл, который обычно включается в состав программного проекта, — это файл листинга компилятора, в который помещается исходный текст программы, машинные коды в текстовом виде и сообщения об ошибках. Этот файл облегчает поиск и исправление синтаксических ошибок.[2]

Многомодульные программы

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

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

В связи с этим значительные затраты времени на компиляцию представляются необоснованно большими;

— максимальное количество имен переменных и меток бывает ограничено программой-транслятором и может быть исчерпано при написании исходного текста программы, если он достаточно велик;

— различные программисты, участвующие в создании программного продукта, могут назначать одинаковые имена для своих переменных и при попытке соединения таких файлов в единую программу обычно возникают проблемы.

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

Компиляторы, которые позволяют транслировать отдельные участки программы, называются компиляторами с раздельной трансляцией.

Перейти на страницу:

Похожие книги

Электроника для начинающих (2-е издание)
Электроника для начинающих (2-е издание)

В ходе практических экспериментов рассмотрены основы электроники и показано, как проектировать, отлаживать и изготавливать электронные устройства в домашних условиях. Материал излагается последовательно от простого к сложному, начиная с простых опытов с электрическим током и заканчивая созданием сложных устройств с использованием транзисторов и микроконтроллеров. Описаны основные законы электроники, а также принципы функционирования различных электронных компонентов. Показано, как изготовить охранную сигнализацию, елочные огни, электронные украшения, устройство преобразования звука, кодовый замок и др. Приведены пошаговые инструкции и более 500 наглядных рисунков и фотографий. Во втором издании существенно переработан текст книги, в экспериментах используются более доступные электронные компоненты, добавлены новые проекты, в том числе с контроллером Arduino.

Чарльз Платт

Радиоэлектроника / Технические науки
Электроника для начинающих
Электроника для начинающих

В ходе практических экспериментов рассмотрены основы электроники и показано, как проектировать, отлаживать и изготавливать электронные устройства в домашних условиях. Материал излагается последовательно от простого к сложному, начиная с простых опытов с электрическим током и заканчивая созданием сложных устройств с использованием транзисторов и микроконтроллеров. Описаны основные законы электроники, а также принципы функционирования различных электронных компонентов. Показано, как изготовить охранную сигнализацию для защиты от проникновения в дом, елочные огни, электронные украшения для одежды, устройство преобразования звука, кодовый замок, автономную роботизированную тележку и др. Приведены пошаговые инструкции и более 500 наглядных рисунков и фотографий.Для начинающих радиолюбителей

Паоло Аливерти , Чарльз Платт

Радиоэлектроника / Технические науки
Искусство схемотехники. Том 3 (Изд.4-е)
Искусство схемотехники. Том 3 (Изд.4-е)

Широко известная читателю по предыдущим изданиям монография известных американских специалистов посвящена быстро развивающимся областям электроники. В ней приведены наиболее интересные технические решения, а также анализируются ошибки разработчиков аппаратуры: внимание читателя сосредотачивается на тонких аспектах проектирования и применения электронных схем. На русском языке издается в трех томах. Том 3 содержит сведения о микропроцессорах, радиотехнических схемах, методах измерения и обработки сигналов, принципах конструирования аппаратуры и проектирования маломощных устройств, а также обширные приложения. Для специалистов в области электроники, автоматики, вычислительной техники, а также студентов соответствующих специальностей вузов и техникумов.

Пауль Хоровиц , Уинфилд Хилл

Техника / Радиоэлектроника