Структура програм с-51.
Мова програмування С-51 є структурно-модульною мовою. Кожен оператор в програмі є частиною, принаймні, одного модуля. Кожна програма, написана на мові програмування С-51 складається з одного або більшої кількості модулів. Кожен модуль записується в окремому файлі і компілюється окремо.
В модуле поміщаються оператори, складові програму. Цих операторів оголошують константи або змінні і виконують необхідні дії. Оператори, що виконують дії, обов'язково повинні бути поміщені в підпрограми. Виконання програми завжди починається з підпрограми з ім'ям main (Т.е. у простому випадку досить написати тільки цю підпрограму).
Подпрограмма починається із заголовка підпрограми, в який входить тип змінної, що повертається, ім'я підпрограми і круглих дужок, усередині яких оголошуються змінні-параметри підпрограми. У підпрограмі main (а також у всіх підпрограмах, де не потрібно повертати змінні) замість типу змінної указується слово void. Виконувані оператори полягають у фігурні дужки.
Всі змінні і константи, які використовуватимуться в програмі, обов'язково повинні бути оголошені до підпрограми, де вони будуть використані перший раз.
При написанні програми для мікроконтролерів завжди необхідно бачити перед очима принципову схему пристрою, для якого пишеться програма, оскільки схема і програма тісно зв'язані між собою і доповнюють один одного. Для ілюстрації простої програми, написаної на мові програмування C-51 скористаємося схемою, приведеною на рис 1.
Рис 1. Приклад простої схеми пристрою, побудованої з використанням мікроконтролера.
Для прикладу примусимо горіти світлодіод VD1. Цей світлодіод світитиметься тільки тоді, коли через нього протікатиме струм. Для цього на шостому виведенні порту P0 повинен бути присутнім нульовий потенціал. Запишемо його першою ж командою нашої програми:
#include<reg51.h>
void main(void)
{P0=0; //Зажигание светодиода
while(1); //Бесконечный цикл
}
Ця програма містить тільки одного виконуваного оператора. Це оператор привласнення 'P0=0;'. Наступний оператор 'while(1);' забезпечує зациклення програми. Зациклення програми зроблене для того, щоб мікроконтролер не виконував більше ніяких дій. Інакше мікроконтролер перейде до наступного елементу пам'яті і виконуватиме команди, які ми не записували.
Звернете увагу, що мова програмування знає де знаходиться порт P0. Ця інформація міститься в рядку #include<reg51.h>.
Для того, щоб отримати повніше уявлення про структуру програм, написаних на мові програмування С-51, приведемо приклад початкового тексту програми з використанням підпрограм.
#include<reg51.h>
void svGorit(void)
{P0=0; //Зажигание светодиода
}
void main(void)
{svGorit(); //Вызов подпрограммы с именем svGorit
while(1); //Бесконечный цикл
}
У приведеному прикладі використання підпрограми ніяких переваг не дає, але в складніших програмах використання імен змінних, що "говорять", може наблизити початковий текст програми до алгоритму, і, тим самим, зробити програму зрозумілішої. Це у свою чергу значно зменшить час відладки програми.
