«И вновь продолжается бой…»
Так как данным проектом я занимаюсь в свободное от работы время (вечером, ночью или в выходные) то все дела идут не так быстро.
Но, в принципе, спешить некуда. Хоть и хочется «вылизать» и оптимизировать программу, чтобы в итоге представить на суд публики «идеальный вариант»,
но это лишь мечта. Радиолюбительское творчество — должно доставлять удовольствие.
А еще у меня есть маленький помощник 🙂 юный программист который очень любит молотить по клавиатуре, особенно в те моменты,
когда я уже выровнял исходный код в MPLABe. Иногда, после таких «соло на клавиатуре» мне приходится заново восстанавливать исходный код.
Так как эту статью я пишу для начинающих, то мне бы хотелось рассказать об основных, организационных принципах разработки и отладки программ для PIC-контроллеров.
Принцип 1. Четкая постановка задачи
С этого начинается написание любой, мало-мальски полезной программы. Попытки сесть и написать «… что-нибудь этакое», без четкой постановки задачи — ОБРЕЧЕНЫ НА НЕУДАЧУ!!!
Поэтому, если у Вас есть устройство или идея обязательно нужно сформулировать цель. Это должно быть одно или несколько предложений описывающих конкретное назначение программы.
Эту формулировку вы вносите в заголовок исходного файла, и он всегда находится у Вас перед глазами в процессе разработки.
В процессе написания программы иногда хочется «уйти в сторону» он намеченной цели. Особенно когда есть вдохновение и в голову приходят удачные мысли. Но этого делать не следует.
Мысли стоит записать, например, в виде комментариев в программе и продолжить работу по решению поставленной задачи.
Принцип 2. Создание базового алгоритма.
Признаюсь честно — иногда лень разрабатывать базовый алгоритм программы. Но потом, особенно в случаях, когда программа достаточно сложна и имеет множество ветвлений, все равно в процессе написания программы начинаешь что-то рисовать на бумажках. Обычно это куски алгоритма, описание сложных мест и т.п. В итоге все равно в какой-то момент написания программы — «сей артефакт» рождается.
Так как я пишу программы на ассемблере, использующем элементарные базовые команды — текст программы получается достаточно значительный и отследить общую структуру программы бывает достаточно сложно. В этом случае и помогает базовый алгоритм с комментариями в исходном коде.
Многие разработчики пишут на C или Basic для PIC-контроллеров — это в некоторых случаях упрощает задачу и сокращает время разработки программы, но, наверное,
и они вынуждены создавать базовые алгоритмы для собственных программ.
Принцип 3. Использование проверенных решений.
Не поленитесь поискать в Интернете подобные решения. Может кто-то уже решал подобную задачу и Вам останется только подогнать код под свои нужды.
Это же касается и использования библиотеки собственных проверенных функций.
Но не забывайте — что это палка «о двух концах». Все время используя чужой код — не научишься писать собственные,
красивые программы. Но так как мы люди реальные, то в некоторых случаях не стоит заниматься мазохизмом, а просто взять и использовать проверенное решение.
Принцип 4. Разделяй и властвуй.
Основной принцип борьбы со сложностью любой системы — это деление ее на подсистемы, модули, компоненты — выполняющие свою часть работы в рамках целой системы.
Это же касается и структуры программы. Выделение функциональных кусков кода и оформление их в виде функций (подпрограмм) — есть правильный подход.
В функции можно передавать параметры через регистр W и получать обратно. Это очень удобно.
Принцип 5. Комментарии — основа программы.
Важно понимать, что не исходный код делает программу — ее делают КОММЕНТАРИИ!!! Человеческий мозг далек от эффективного понимания ассемблерных и прочих команд. Они для него слишком примитивны! Поэтому комментируйте Ваши творения! И те разработчики кто будет использовать Ваши исходные коды — скажут Вам спасибо!
Принцип 6. Разрубить «Гордиев узел».
У каждого разработчика, наверное, были моменты, когда вот все…. Ну не идет программа, как ее не оптимизируй, не переставляй местами куски кода и т.п.
Это может случиться по нескольким причинам. Например, не проработан базовый алгоритм для сложной программы, или функциональные возможности микропроцессора не дотягивают «до планки». Иногда легче и правильней переписать программу заново, чем пытаться оптимизировать имеющийся код.
После создания схемы я вдруг задумался. Зачем я использовал сдвиговый регистр для создания динамической индикации — т.е. управления столбцами (анодами) индикаторами.
Задачу можно было решить немного проще. Потом вспомнил — этот вариант позволяет уменьшить «табличную» информацию с 16 строк до 8 (а соответственно и размер всей программы)
в случае симметричности выводимого изображения. Просто в этом случае выборка делается сначала с 0-ой строки до 7, а затем с 7-ой до нулевой строки. Пустячок…, а приятно :-).
Это наследие тех времен, когда при написании программ для PIC16F84 приходилось экономить каждый байт, по несколько раз оптимизируя программу.
У PIC16F877 памяти гораздо больше, так что пока можно не экономить.
Ну ладно, продолжим разработки…
Так как мое устройство изначально предназначалось для вывода нескольких графических символов в зависимости от некоторых условий, то настала пора научить его делать это.
Для примера выведем цифры от 1 до 5 в каждом из 4-х элементов 8х8 с частотой 0,5 Гц.
В базовом алгоритме я «подчистил» программу, выделил несколько простых функций, сформировал тело основной программы для удобства ее модернизации. Так что пользуйтесь этим вариантом как основой (.ASM и .HEX файл программы 16х16_01 можно взять здесь).
P.S.
Помните, что перед Вами полноценный графический полигон и вывести можно на него довольно интересные и информативные знаки.
Наверное Вы уже поняли что на основе данной программы
можно сделать «сдвиговую» анимацию.Если дойдут руки, то я выложу программу на сайт.
Следующей задачей, которую я себе поставил — создать библиотеку символов
16х16 и записать ее в какую-нибудь память (например 24LC64) и делать выборку символов при помощи микропроцессора и выводить на панель.
Comments are disabled.