Несколько важных файлов заголовков tinyAVR

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

□              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 с.: ил. — (Электроника)

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

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