Довідник з мови Microbe

if

Розгалуження за умовою. Синтаксис:

if [вираз] then [інструкція]

або

if [вираз] then
{
        [блок інструкцій]
}

Те саме для else:

else [інструкція]

або

else
{
        [блок інструкцій]
}

Приклад 5.2. if

if porta.0 is high then
{
        delay 200
}
else
{
        delay 300
}

alias

Створює альтернативну назву рядка. Синтаксис:

alias [початкова_назва] [альтернативна_назва]

repeat

Виконувати блок інструкцій повторно, аж доки не буде виконано контрольну умову. Перевірка виконання умови відбувається після виконання блоку інструкцій, отже блок інструкцій завжди буде виконано принаймні один раз. Синтаксис:

repeat
{
        [блок інструкцій]
}
until [вираз]

while

Подібно до repeat надає змогу повторно виконувати блок інструкцій. Втім, контрольна умова перевіряється до виконання, а не після нього. Отже, якщо контрольна умова не виконується на першому кроці, блок інструкцій не буде виконано. Синтаксис:

while [вираз]
{
        [блок інструкцій]
}

goto

Призводить до продовження виконання коду з інструкції, яка є наступною після вказаної мітки. Синтаксис:

goto [мітка]

Синтаксис мітки:

мітка:

Вважається, що варто уникати використання goto. Використання інструкцій перевірки або підпрограм робить програми набагато зручнішими для читання і розуміння.

Приклад 5.3. goto

goto MyLabel

...

[MyLabel]:
// Тут продовжуватиметься виконання коду

call

Викликає підпрограму. Синтаксис:

call [НазваПідпрограми]

де НазваПідпрограми — назва підпрограми, яку викликають.

delay

Ця команда призупиняє виконання коду на вказаний період часу. Проміжок часу задається у мілісекундах. Синтаксис:

delay [проміжок]

Примітка

У поточній версії Microbe припускає, що PIC працює на частоті 4 МГц, тобто виконання кожної інструкції триває 1 мікросекунду. Якщо ваш мікроконтролер працює на іншій частоті, проміжок слід пропорційно скоригувати.

sevenseg

Використовується для визначення прив’язки контактів для (типового катодного) сегментного індикатора, який з’єднано з 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


keypad

Використовується для визначення карти контактів для клавіатури, яку з’єднано з 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 нульовий номер, можна скористатися такою командою:

Приклад 5.6. Прив’язування клавіші на клавіатурі до значення

alias Keypad_4_1 0