□ io.h- файл знаходиться в каталозі WinAVR / avr / include / avr, але за замовчуванням компілятор в пошуку файлів заголовків веде перегляд тільки до каталогу include. Отже, ви повинні задати відносний шлях і включити цей файл як avr / io.h. Цей файл зчитує ім’я мікроконтролера з файлу MAKEFILE і автоматично включає відповідний файл заголовків (специфічний для відповідного контролера), в якому визначаються різні адреси портів введення / виводу, імена бітів, адреси векторів і т. д.

□ interrupt.h – файл включається як avr / interrupt.h; в ньому зберігаються різні визначення для підтримки переривань у вашому коді.

□ pgmspace.h – файл включається як avr / pgmspace.h і служить для зберігання та вилучення констант з пам’яті програм.

□ delay.h – файл включається як util / delay.h і надає дві точних функції затримки: _deiay_us і _deiay_ms. Зверніть увагу, що існує межа затримки, який може бути внесений цією функцією, залежною від тактової частоти. Подробиці дивіться у самому файлі. Щоб приєднати цей файл, ви повинні вказати частоту, на якій * працює ваша система (це робиться шляхом оголошення макросу F_CPU рівним тактовій частоті).

Функції

Функція – це блок операторів, який виконує якусь ізольовану задачу. Це схоже на звичайну життєву ситуацію – кожна людина робить свою особливу роботу. У реальному житті ми залежимо від інших людей, які виконують звичайні життєво важливі завдання. Точно так само і програму мовою С можна розглядати як набір функцій, які виконують приватні задачі.

Для чого потрібні функції?

Функції дозволяють повторювати виконання коду. Наприклад, якщо в програмі нам потрібно робити затримку між якимись двома діями, то буде абсолютно нераціонально писати одні й ті ж команди знову і знову. Замість цього можна створити функцію, команди якої реалізують потрібну затримку. Розбивка програми на функції підвищує ясність програми і полегшує відстеження виконуваних завдань. Розбиття програм на невеликі функції (виконують логічно ізольовані завдання) – хороший стиль програмування.

Як працюють функції

Використання функцій складається з трьох кроків:

□ Оголошення (називається також прототипом функції) – визначає вид функції. У оголошення входять: тип значення, ім’я функції, що приймаються аргументи. Після виконання завдання функція може як повернути, так і не повертати значень (залежно від зазначеного типу значення, що повертається). Ім’я функції може бути будь-яким (крім ключових слів мови С). Аргументи функції – це змінні, які передаються в функцію і використовуються нею для виконання свого завдання.

int GetMax(int a, int b);

Цей оператор оголошує функцію, яка приймає два цілочисельних аргументу і повертає цілочисельне значення. За назвою функції видно, що вона повертає максимальне з значень а і ь.

□ Визначення – це послідовність команд, що визначають поведінку функції. Вона повинна починатися з тих же самих імені і типу, які містяться в оголошенні.

Приклад

int GetMax(int a, int b)

{

if(a > b) return a; else return b;

}

□ Виклик – це фактичне використання функції в програмі. При виконанні функції управління передається в тіло функції (її визначення). Функцію можна викликати з будь-якої іншої функції; вона може навіть викликати сама себе (рекурсія). Функція викликається шляхом написання її імені з іменами тих змінних, які повинні їй передаватися.

У програмах мовою С завжди присутня функція з ім’ям main, з якою завжди починається виконання програми. Функція може викликати інші функції (або саму себе) стільки разів, скільки це необхідно. Функції слід оголошувати до того, як вони викликаються програмою. Однак якщо всередині файлу функція була визначена до її виклику, тоді оголошення даної функції не потрібно.

Джерело: Гадре, Д., Цікаві проекти на базі мікроконтролерів tinyAVR / Дхананья Гадре, Нігула Мелхотра: Пер. з англ. – СПб .: БХВ-Петербург, 2012. – 352 с .: іл. – (Електроніка)