Найпростіший вид програми – це послідовний набір операцій Ось приклад такої програми:

Рис 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