Исходный код должен содержать заголовок с используемым типом микроконтроллера и главную функцию main.
Главная функция - main - обязательна в любой программе Си – это так называемая точка входа в программу.
До функции main можно подключить необходимые библиотеки, объявить глобальные переменные, константы, настройки.
Библиотека это отдельный файл, обычно с расширением «.h», в котором уже есть заранее написанный код.
Например, используется ATtiny13 и библиотеку для работы с жк дисплеем «alcd.h».
#include <tiny13.h> #include <alcd.h> | $Regfile="attiny13a.dat" $crystal = 9600000 $hwstack = 16 $swstack = 16 $framesize = 16 |
Тело функции выделяется фигурными скобками.
Так же фигурные скобки используются в записи операторов, но об этом позже.
Внутри функции main уже выполняется основная программа. После выполнения функции программа остановится, поэтому делают бесконечный цикл while, который крутит одну и ту же программу постоянно.
void main(void) { while (1) { ...... }; }; | Главный цикл: Do ...... Loop
End |
В программе BASCOM используется оператор End (выделено цветом), определяющий окончание основной части программы.
Все прочие подпрограммы, блоки DATA и т.п. располагаются после него.
Если фрагмент, оформленный, как подпрограмма (или т.п.) будет расположен ранее Главного цикла, то он будет выполнен, но команда выхода ( Return ) заготовит "подводный камень" или сразу вызовет ошибку.
В "коротких" программах, без дополнительных п/п и блоков, можно обойтись без End.
В Си такого оператора нет.
В Си после Главной функции (а иногда и до нее) располагаются остальные функции программы, к которым можно обратиться (вызвать) при необходимости.
Но выполняться будет Главная функция (!), где бы в листинге она не располагалась.
void функция_1()
{
......
};
void main(void)
{
while (1)
{
функция_2();
};
};
void функция_2()
{
......
};
void функция_3()
{
......
};
Каждый оператор или команда обязательно завершается "точкой с запятой" - ; !
Есть исключения, но об этом позже...
Надо отметить, что при написании имени функции в качестве разделителя должно быть использовано, если есть необходимость, именно "подчеркивание" ( _ ) !
функция_2 - правильно
функция-2 - неправильно
функция*2 - неправильно
функция 2 - неправильно
Это правило распространяется и на имена переменных.
В любой части исходного кода можно написать комментарий, на работу программы он влиять никак не будет, но будет помогать сделать пометки к написанному коду. Закомментировать строку можно двумя слешами //, после этого компилятор будет игнорировать всю строку, либо несколько строк /**/
// одна строка комментария
/*
несколько строк комменатрия
*/