Программные сегменты

7-11-2013, 17:53
Просмотров: 1234
Как видно из примеров программных проектов, представленных в этой книге, некоторые подпрограммы используются многократно.
Они могут частично отличиться в деталях, но по существу они - те же. Таким образом, рационально сохранить их в виде отдельных текстовых файлов для дальнейшей загрузки в текущий проект
Программные сегменты

. Хотя может потребоваться незначительное редактирование, это - ничто, по сравнению с усилиями, затрачиваемыми на ввод подпрограмм каждый раз "с нуля". Такой подход не только экономит время на разработку программ, но и уменьшает вероятность ошибок ввода.
Программные сегменты, перечисленные, - это подборка наиболее часто используемых подпрограмм. Начинается с "шапки", которая не является строго необходимой, однако позволяет быстро вспомнить, для чего предназначена данная программа, спустя несколько месяцев.
Каждая строка "шапки" должна начинаться с символа чтобы игнорироваться ассемблером.,
Первая активная строка листинга сообщает ассемблеру, какой будет использоваться микроконтроллер PIC. Далее следует директива конфигурации, устанавливающая ключевые свойства работы PIC.
Программные сегменты

При использовании среды разработки, наподобие MPLAB IDE, вводить представленный далее перечень директив излишне.
Все эти данные содержатся в файле компоновщика, который автоматически загружается при запуске ассемблера.
Необходимо ввести только определения для меток регистров, использованных в программе. Например, метка используется в подпрограмме задержки.
При работе просто с ассемблером типа MP ASM список определений необходим. Он поучается таким длинным ввиду множества задействованных регистров. Хотя маловероятно, что все они могут понадобиться в одной программе, мы сделали перечень исчерпывающим, чтобы раз и навсегда обеспечить все возможные определения. В любой программе лишние строки можно при желании просто удалить.
За определениями регистров следуют определения отдельных кодов: w, f и z. Хотя их включать и необязательно, это считается целесообразным. Некоторые из команд PIC имеют форму "сделай это и помести результат туда-то". Под "туда-то" подразумевается рабочий регистр (w) или регистр, задействованный в данный момент (f). Например, для Декрементирования значения в регистре с именем count и размещения результата в рабочем регистре служит команда
decf count, 0
Эта команда оставляет count без изменений. Для записи результата в count без изменения состояния рабочего регистра служит команда
decf count, 1
Используя эквиваленты ни f вместо 0 и 1, эти же команды Н). I записать как: 1,01
decf count, w
decf count, f
Это значительно проясняет (для программиста), что происходит.
За определения следует список меток для регистров общего назначения, используемых в программе.
Их диапазон начинается по адрес 20h и (поскольку таких регистров 96) заканчивается адресом 7fh. 80 из этих адресов (от 20h до 60h) доступны в банках от 0 до 2, однако последние 16 адресов - только в банке 0.
Используются только два помеченных регистра, требуемые для подпрограммы задержки. Затем стандартным способом указывается начальный адрес, резервируя четыре строки для перехода к подпрограмме обслуживания прерывания (если таковая присутствует) в случае возникновения прерывания.
На метке start команда goto посылает процессор обратно в начало, формируя непрерывный цикл.
Это может не сработать с некоторыми ассемблерами.
В таком случае придется заменить указанный на goto start. Любая версия данного оператора носит временный характер, предотвращая от входа в подпрограмму задержки. Метка start определяет позицию для начала ввода собственной программы.
Файл Leader, asm включает в себя подпрограммы задержки, которые необходимы в любой программе.
Обычно подпрограммы размещают в конце листинга, хотя некоторые программисты предпочитают располагать их ближе к началу. Их положение не играет никакой роли для характера работы программы.
И еще одна существенная деталь: программа всегда должна заканчиваться директивой end.

Источник: delete-it.ru
Автор: ziko
Опубликовано пользователем: 81 (смотреть все)
Комментарии: