Некоторые детали программирования МК – для новичков в радиоделе

June 22, 2014 by admin Комментировать »

Самый простой вид программы – это последовательный набор операций Вот пример такой программы:

Рис 353 Простая программа (очень простая программа)

Программа правильная Но не думаю, что её работоспособность можно проверить без отладчика программы Flowcode или специальной отладочной платы, когда вы можете задать точки останова программы На обычной макетной плате проверить программу очень трудно

Дело в том, что микроконтроллер работает очень быстро При тактовой частоте даже 4 МГц, у контроллера PIC16F628A с такой частотой работает внутренний тактовый генератор, вы не успеете увидеть, что происходит на выводе 0 порта А

Отладчик позволяет вам пошагово пройти программу Если вы добавите светодиод на вывод А0, соедините его с выводом в разделе Соединения панели свойств, то увидите, как при этом зажигается светодиод

Отладчик имеет возможность проверить работу программы в реальном времени – достаточно нажать кнопку проигрывания на инструментальной панели

Рис 354 Запуск отладки в реальном времени

Запустив отладку этой программы, вы можете убедиться, что светодиод не загорается, хотя все соединения сделаны, а программа правильная Конечно, с такой простой программой будет проще понять, в чём проблема Труднее разобраться со сложными программами

Рис 355 Проверка программы в пошаговом режиме

Простейший, линейный вид программы удаётся осуществить крайне редко Во-первых, даже если вставить паузу между зажиганием и гашением светодиода, то такое устройство не будет нужно – оно сработает один раз при включении питания, и больше никогда не будет работать, если питающее напряжение не выключить и вновь его включить Как правило, микроконтроллеры работают в бесконечном цикле

Почему этот цикл бесконечный

Потому, что условие выхода из цикла никогда не выполяется Добавленные паузы по 1 секунде сделают видимой работу светодиода Светодиод будет постоянно мигать

Это можно проверить и в режиме реального времени в отладчике программы Flowcode, и на макетной плате

Рис 356 Бесконечный цикл

Чтобы сделать цикл конечным, можно добавить условие

Рис 357 Добавление условия в свойствах цикла

В данном случае это будет условие продолжения работы цикла Конечно, переменную нужно добавить конечно, переменную нужно менять внутри цикла Но, если сейчас начать отладку в пошаговом режиме, можно убедиться, что программа не заходит в цикл И это правильно, поскольку мы обозначили проверку условия в начале работы цикла Многие компиляторы по умолчанию инициализируют переменные, присваивая им нулевое значение По  этой причине переменная i равна нулю, а условие продолжения работы цикла не выполняется И по этой причине лучше всегда самостоятельно задавать начальные значения

Многие стремятся, по разным причинам, делать вставки на языке Си Например, есть готовый фрагмент программы, который можно переписать, используя элемент программы Flowcode под названием Вставить С код Хорошо, если код полностью готов, если он написан на языке Си Иначе следует помнить, что условие на языке Си должно быть записано так:

While (i==1)

И это не единственное отличие Например, при задании начального значения переменной i и при её использовании следует пользоваться таким элементом программы как Вычисление

Рис 358 Изменение значения переменной в теле цикла

Та же операция внутри элемента Вставить С код должна выглядеть так:

i = i + 1

Разница только в наличии в последнем случае точки с запятой При использовании языка Си даже в не очень больших программах, такие ошибки могут возникать довольно часто, если вы используете и элементы программы Flowcode Следует быть очень внимательными

Часто микроконтроллер используется для определения состояния датчиков, имеющих контакты, и работы с кнопками, отдельными кнопками или в составе клавиатуры Удобный и простой приём – это использование программного элемента Вход Для фиксации состояния ввода используется переменная Для нескольких кнопок программа может выглядеть так:

Рис 359 Использование кнопок в программе

Для каждой из кнопок, подключаемых к порту В, мы используем свою переменную: input1, input2, input3 Для любой переменной есть определённый тип данных Мы использовали тип byte Таким образом, для трёх переменных использовано три байта Но кнопок вместе с датчиками может быть более десятка А память у микроконтроллеров ограничена В некоторых моделях её может не хватить даже для создания достаточно простого устройства

Чтобы полнее использовать память, можно хранить переменные, принимающие два значения, ноль и единица, в одном байте Для этого можно использовать такое понятие как флаг Нажата кнопка – флаг принимает, скажем, значение 1, которое используется для выполнения какого-либо действия, а затем флаг «сбрасывается» В одном байте мы можем хранить флаги восьми кнопок В этом случае программа будет выглядеть так:

В модифицированной программе мы используем две переменные типа byte: input и flags

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

Позже мы можем использовать этот факт для выполнения любых действий, скажем, для включения реле

Рис 3510 Модификация предыдущей программы

На этих простых примерах мне хотелось подчеркнуть: программа Flowcode очень удобна для создания устройств на микроконтроллерах, но  она не отменяет необходимости многое знать, быть внимательным и думать при создании программы

Источник: Гололобов ВН,- Самоучитель игры на паяльнике (Об электронике для школьников и не только), – Москва 2012

Оставить комментарий

Устройство витков выходе генератора импульсов микросхемы мощности нагрузки напряжение напряжения питания приемника пример провода работы радоэлектроника сигнал сигнала сигналов сопротивление схема теория транзистора транзисторов управления усиления усилитель усилителя устройства частоты