Однокристальные микроконтроллеры семейства MCS-51
Лабораторная работа № 12
Разработка и отладка многомодульных программ
1. Цель работы
Изучить методику разработки и отладки многомодульных программ для однокристальных микроконтроллеров семейства МК51 с помощью кросс-средств на персональном компьютере
2. Основные теоретические сведения
При разработке программного обеспечения для микроконтроллеров (МК) могут быть использованы два способа организации прикладных программ: монолитный и модульный. При первом способе вся прикладная программа МК разрабатывается как единое целое, а при втором строится из отдельных программных блоков, каждый из которых реализует некоторую процедуру обработки данных или управления. Взаимосвязь блоков определяется разработчиком при монтаже из этих блоков блок-схемы алгоритма (БСА) и законченной прикладной программы.
Отдельные фрагменты прикладной программы МК могут быть получены в виде линейной последовательности блоков, другие (многократно используемые) обычно оформляются в виде подпрограмм, к которым прикладная программа, называемая основной, имеет возможность обращаться по мере необходимости. Подпрограмма должна обладать следующими свойствами: выполнять законченную процедуру обработки данных, иметь только один вход и один выход.
Обращение к подпрограмме осуществляется по команде вызова CALL MARK, где MARK – символическое имя процедуры. Имя процедуры используется в качестве метки, отмечающей одну из команд (чаще всего первую) подпрограммы.
Достаточно часто возникает необходимость такой организации вычислительного процесса, при которой подпрограмма вызывает другую подпрограмму, та в свою очередь вызывает следующую и т.д. Этот процесс называется вложением подпрограмм.
Для успешной работы любой подпрограммы необходимо однозначно определить способ передачи в нее исходных данных и способ вывода результатов ее работы. Подпрограмма, которой требуется дополнительная информация в виде параметров ее настройки или операндов, называется параметризуемой. Примером параметризуемой программы может служить подпрограмма временной задержки, если основной программе требуется реализация временных задержек различной длительности. Основная программа при этом должна обеспечить передачу в подпрограмму уставок, обеспечивающих требуемое время задержки.
Получили распространение три способа передачи параметров: через память, через регистры общего назначения и через область флагов.
При передаче выходных параметров через память основная программа обязательно содержит команды загрузки некоторых ячеек памяти, а подпрограмма – команды считывания из этих ячеек. При передаче выходных параметров подпрограмма должна загрузить некоторые ячейки памяти, а основная программа – считать. Передача параметров через регистры осуществляется аналогичным образом. В третьем способе используются флаги C и F0, сохраняемые в регистре состояния PSW, либо флаги пользователя (128 флагов) из области прямоадресуемых битов памяти данных (адреса ячеек 20H…2FH).
Использование процедур, оформленных в виде подпрограмм, при разработке программного обеспечения имеет ряд достоинств. Прежде всего, относительно простые модули, выделенные из сложной программы, могут программироваться несколькими разработчиками с целью сокращения времени проектирования. Еще более важным является то, что любая подпрограмма допускает автономную отладку. Это, как правило, многократно сокращает время отладки всего прикладного программного обеспечения. И, наконец, механизм использования подпрограмм, реализующих требуемый набор процедур, уменьшает длину прикладной программы, что приводит к уменьшению требующейся емкости памяти программы.
Существенным является и то обстоятельство, что отлаженные процедуры часто организуются разработчиками в библиотеки подпрограмм и могут быть многократно использованы в проектной работе.
3. Порядок выполнения работы
3.1. Методика разработки многомодульной программы
Рассмотрим процесс разработки многомодульной программы на следующем примере.
Микроконтроллер на базе МК51 должен после получения импульсного сигнала от управляющей кнопки вводить 8-разрядный двоичный код, полученный с помощью АЦП, через порт ввода P0. Этот код записывается в ячейку 30H внутренней памяти данных (ПД), а затем выводится в шестнадцатиричном формате на линейный дисплей из семисегментных индикаторов. Так как двоичный код может изменяться от 00Н до FFH, то дисплей должен иметь 2 индикатора.
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.