Розгалуження за умовою. Синтаксис:
if [вираз] then [інструкція]
або
if [вираз] then { [блок інструкцій] }
Те саме для else:
else [інструкція]
або
else { [блок інструкцій] }
Виконувати блок інструкцій повторно, аж доки не буде виконано контрольну умову. Перевірка виконання умови відбувається після виконання блоку інструкцій, отже блок інструкцій завжди буде виконано принаймні один раз. Синтаксис:
repeat { [блок інструкцій] } until [вираз]
Подібно до repeat надає змогу повторно виконувати блок інструкцій. Втім, контрольна умова перевіряється до виконання, а не після нього. Отже, якщо контрольна умова не виконується на першому кроці, блок інструкцій не буде виконано. Синтаксис:
while [вираз] { [блок інструкцій] }
Призводить до продовження виконання коду з інструкції, яка є наступною після вказаної мітки. Синтаксис:
goto
[мітка]
Синтаксис мітки:
мітка:
Вважається, що варто уникати використання goto. Використання інструкцій перевірки або підпрограм робить програми набагато зручнішими для читання і розуміння.
Викликає підпрограму. Синтаксис:
call
[НазваПідпрограми]
де НазваПідпрограми
— назва підпрограми, яку викликають.
Ця команда призупиняє виконання коду на вказаний період часу. Проміжок часу задається у мілісекундах. Синтаксис:
delay
[проміжок]
Примітка
У поточній версії Microbe припускає, що PIC працює на частоті 4 МГц, тобто виконання кожної інструкції триває 1 мікросекунду. Якщо ваш мікроконтролер працює на іншій частоті, проміжок слід пропорційно скоригувати.
Використовується для визначення прив’язки контактів для (типового катодного) сегментного індикатора, який з’єднано з PIC. Синтаксис:
sevenseg
[назва] [a] [b] [c] [d] [e] [f] [g]
де [a]...[g] — контакти PIC, з якими з’єднано відповідні сегменти сегментного індикатора. Контакти можна записувати або у форматі PORTX.N, або у форматі RXN.
Щоб показати цифру на сегментному індикаторі, прив’язка контактів обробляється як придатна лише для запису змінна.
Приклад 5.4. Визначення даних для сегментного індикатора і виведення цих даних
sevenseg seg1 RB0 RB1 RB2 RB3 RB4 RB5 RB6 seg1 = x + 2
Використовується для визначення карти контактів для клавіатури, яку з’єднано з PIC. Синтаксис:
keypad
[назва] [рядок 1] ... [рядок 4] [стовпчик 1] ... [стовпчик n]
де [рядок 1] ... [рядок 4] і [стовпчик 1] ... [стовпчик n] — контакти PIC, з якими з’єднано відповідні рядки і стовпчики клавіш на клавіатурі (у поточній версії кількість рядків змінити не можна). Докладніший опис карт контактів наведено у розділі «sevenseg».
Стовпчики клавіатури має бути з’єднано через резистори у 100 кОм із землею. Контакти рядків має бути налаштовано як виходи, а контакти стовпчиків — як входи. Після визначення клавіатури робота з нею здійснюється за допомогою придатної лише для читання змінної.
Приклад 5.5. Визначення клавіатури і читання з клавіатури
keypad keypad1 RB0 RB1 RB2 RB3 RB4 RB5 RB6 x = keypad1
Типово, значеннями, які повертає клавіатура є:
значення цифри, якщо натиснуто клавішу цифри (від 1 до 3 у верхньому рядку; шістнадцяткові цифри від A до D у четвертому рядку і далі за додатковими стовпчиками).
253 для клавіші у рядку 4, стовпчику 1.
254 для клавіші у рядку 4, стовпчику 3.
Ці значення можна перевизначити за допомогою команди alias, використовуючи назву Keypad_x_y для клавіші у рядку x, стовпчику y (нумерація рядків і стовпчиків починається з 1). Наприклад, щоб надати клавіші із зірочкою на клавіатурі 4x3 нульовий номер, можна скористатися такою командою: