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

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

На языке программирования ASM-51 имя подпрограммы совпадает с меткой в начале подпрограммы. Однако, в отличие от языков программирования высокого уровня, для организации подпрограммы-заглушки один исполняемый оператор все-таки нужен. Это оператор возвращения из подпрограммы ret. И еще одно замечание. При программировании на языке ассемблера первый написанный оператор и выполняется первым.

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

Условное выполнение операторов

Вторая конструкция управления называется условным выполнением операторов. Достаточно часто одно или другое действие должно исполняться в зависимости от определенного условия, которое зависит от результатов выполнения предыдущей части программы или от состояния (сигналов) внешних устройств. Блок-схема конструкции управления «условное выполнение операторов» приведена на рис. 7.5.

Рис. 7.5.Блок-схема конструкции управления «условное выполнение операторов»

Как видно из приведенной в листинге 7.9 программы на языке С-51, конструкция условного выполнения операторов реализуется благодаря встроенным средствам самого языка С-51, т. к. он относится к структурированным языкам программирования. В приведенном примере подпрограммы-заглушки использованы для отображения названий частей условного оператора.

В структурированных языках программирования второе плечо условного оператора записывается после зарезервированного слова «else».

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

Пример реализации конструкции управления «условное выполнение операторов» на языке программирования ASM-51 приведен в листинге 7.10. Язык программирования ASM-51 не является структурированным, поэтому для реализации конструкции условного выполнения операторов приходится использовать несколько команд микропроцессора (операторов языка программирования ассемблер).

Для реализации блока «логическое выражение», изображенного на рис. 7.5 в виде ромба, можно использовать любую команду условного перехода, входящую в систему команд микропроцессора. При этом в простейшем случае логическое выражение сводится к анализу сигналов на выводах микроконтроллера или его внутренних флагов. Но в отличие от двумерной блок-схемы, память программ микропроцессора одномерна, т. е. все команды располагаются друг за другом. Для того чтобы выполнялся только один из операторов («Действие 1» или «Действие 2»), необходимо после выполнения одного из них обойти другой. Это можно осуществить при помощи команды безусловного перехода.

Размещение различных частей конструкции управления «условное выполнение операторов» в памяти программ микропроцессора приведены на рис. 7.6. Направления возможных переходов при ее выполнении показаны на этом же рисунке. При использовании такой конструкции будет выполнены только один из операторов. Какой — зависит от результатов выполнения условного выражения.

Рис. 7.6.Размещение различных частей конструкции управления условным выполнением операторов в памяти программ микропроцессора

В листинге 7.10 проявляется еще одно полезное свойство подпрограмм. Команды условного перехода, используемые для реализации условного выражения, могут передавать управление на участок программы, отстоящий от них не более чем на 127 байтов. Однако для реализации алгоритма одной из ветвей может потребоваться большее количество команд. Выделение их в отдельную подпрограмму позволяет сократить необходимое расстояние условного перехода до трех байт (длины команды вызова подпрограммы LCALL). Подпрограмма может быть размещена в любом месте памяти программ микроконтроллера.

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

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

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

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

Чарльз Платт

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

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

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

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

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

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

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