Дата последнего обновления файла 04.08.2005

Структура программ С-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);  //Бесконечный цикл
}

В приведённом примере использование подпрограммы никаких преимуществ не даёт, но в более сложных программах использование "говорящих" имён переменных может приблизить исходный текст программы к алгоритму, и, тем самым, сделать программу более понятной. Это в свою очередь значительно уменьшит время отладки программы.

Литература:

  1. Микушин А.В. Занимательно о микроконтроллерах. СПб, БХВ-Петербург, 2006.
  2. Микушин А.В., Сажнев А.М., Сединин В.И. Цифровые устройства и микропроцессоры. СПб, БХВ-Петербург, 2010.
  3. Keil uVision3 V3.51 для платформы MCS51

Вместе со статьей "Структура программ С-51" читают:

Языки программирования для микроконтроллеров
http://digteh.ru/Progr/progr.php

Операторы языка программирования C-51
http://digteh.ru/MCS51/C51/op_c51.php

Использование функций в языке программирования С-51
http://digteh.ru/MCS51/C51/func.php

Многомодульные программы
http://digteh.ru/MCS51/C51/manymod.php


Автор Микушин А. В. All rights reserved. 2001 ... 2017

Предыдущие версии сайта:
http://neic.nsk.su/~mavr
http://digital.sibsutis.ru/

Поиск по сайту сервисом Яндекс

Поиск по сайту сервисом ГУГЛ

пЕИРХМЦ@Mail.ru


Rambler's Top100