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

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

В языке программирования ASM-51 для этой цели используется директива public (общедоступные). Директива может быть использована в любом месте исходного текста модуля, однако обычно она размещается в его начале. Имена переменных в этой директиве перечисляются через запятую. Если в результате получается слишком длинная строка, то можно использовать несколько таких директив. Глобальное имя может быть объявлено только в одном модуле программы. Несколько глобальных переменных или подпрограмм с одним и тем же именем недопустимы.

Пример использования директивы public на языке программирования ASM-51:

PUBLIC Buflnd, Parametr

PUBLIC Podprogr,?Podprogr?Byte

Для ссылки на переменную или метку, объявленную в другом модуле, используется директива extrn. Идентификатор в пределах одного модуля не может быть одновременно объявлен как public и как extrn. В директиве extrn перечисляются через запятую имена подпрограмм и переменных, числовое значение которых редактор связей должен получить из других модулей и модифицировать все команды, в которых эти метки или переменные используются. Кроме того, для правильного использования инструкций микроконтроллера в директиве extrn должен быть указан тип памяти (data, bit, code, idata или xdata), в которой расположена переменная или метка. Для передачи числовых констант между модулями можно воспользоваться вспомогательным словом number Директива extrn может располагаться в любом месте исходного текста модуля. Идентификатор внешнего имени не может быть переопределен в программном модуле каким-либо способом. Рекомендуется с целью оптимизации результирующего объектного кода (в частности, команд JMP и CALL) размещать директиву EXTRN до ссылки на соответствующее внешнее имя (как правило, в начале исходного текста программного модуля или программного сегмента). Пример использования директивы extrn на языке программирования ASM-51:

EXTRN DATA (Buflnd, ERR), CODE (ASC_BIN, BIN_ASC), NUMBER (LIMIT)

EXTRN CODE (Podprogr)

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

Файл-заголовок на языке программирования asm-51 записывается на диск с расширением *.inc (сокращение от английского слова include — включать) и включается в исходный текст программы при помощи директивы include. Например:

$INCLUDE (REG51.INC)

При работе с пакетом программ, поставляемым фирмой keil, программа-транслятор с языка программирования ASM-51 «понимает» и файлы-заголовки, написанные для языка программирования С-51. Поэтому можно воспользоваться и этими файлами. Например:

#include

$include (init.inc)

Теперь рассмотрим команды редактора связей, которые позволят объединить несколько объектных модулей в один. В простейшем случае для объединения модулей можно использовать имя программы-редактора связей с необходимыми ключами. Для объединения нескольких модулей в исполняемую программу имена всех модулей передаются в редактор связей ri5i.exe в качестве параметров при запуске этой программы.

Приведем пример вызова редактора связей из командной строки DOS для объединения трех модулей:

r151.exe progr.obj, modul1.obj, modul2.obj

В результате работы редактора связей в этом примере будет создан исполняемый модуль с именем progr. Формат записи информации в этом файле остается прежним — объектным. Это позволяет объединять модули по частям, т. е. при желании можно из нескольких мелких модулей получить один более крупный.

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

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

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

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

Чарльз Платт

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

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

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

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

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

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

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