Александр Микушин - Занимательно о микроконтроллерах стр 60.

Шрифт
Фон

Использование комментариев в тексте программы

Комментарий - это набор символов, которые игнорируются компилятором языка программирования. Примеры использования комментариев при написании программы подробно рассматривались в предыдущих главах, поэтому здесь сделаем основной упор на синтаксические правила записи комментариев на языке программирования С-51.

В языке программирования С-51, в отличие от ASM-51, возможно использование двух типов комментариев:

1. Комментарий, который может быть использован внутри строки.

2. Комментарий, который игнорирует символы до конца строки.

Первый вид комментария начинается парой символов (/*) и завершается парой символов (*/). Данная особенность позволяет использовать этот вид комментария внутри операторов языка программирования. Кроме того, комментарий может занимать несколько строк. Например:

/* комментарий к программе */

/* начало алгоритма */

или

/*комментарий можно записать в следующем виде, однако надо быть осторожным, чтобы внутри строк, которые игнорируются компилятором, не попались операторы программы, которые также будут игнорироваться */

В тексте комментария не может быть символов, определяющих начало и конец комментариев (/* и */), т. е. применение вложенных комментариев запрещено. Пример недопустимого определения комментариев:

/* комментарии к алгоритму /* решение краевой задачи */ */

или

/* комментарии к алгоритму решения */ краевой задачи */

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

PrmDem(); //Получить, отфильтровать и демодулировать сигнал

Особенно оправдано использование этого вида комментария при отладке программы, когда нужно временно исключать операторы из исходного текста программы. Пример использования этого вида комментария для временного отключения операторов программы:

//PrmDem(); //Получить, отфильтровать и демодулировать сигнал

Типы данных языка программирования С-51 и их объявление

Описание переменных в языке программирования С имеет огромнейшее значение, т. к. именно оно в большинстве случаев определяет объем программы. Обычно большой объем загрузочного модуля программы вызван неправильным объявлением переменных в исходном тексте программы. Обращение к внутренним регистрам микроконтроллеров и внешним ресурсам разрабатываемого устройства тоже производится при помощи заранее объявленных переменных.

В языке программирования С-51 любая переменная должна быть объявлена до первого использования этой переменной в программе. Как уже говорилось ранее, этот язык программирования предназначен для написания программ для микроконтроллеров семейства MCS-51, поэтому в составе языка должна отображаться внутренняя структура этого семейства микроконтроллеров. Особенности микроконтроллеров отражены во введении в состав языка программирования новых типов данных. В остальном язык программирования С-51 не отличается от стандартного ANSI С.

Начиная с этого момента для описания синтаксических правил языка программирования С-51 применяются синтаксические диаграммы. Поясним основные понятия и обозначения, которые в них используются.

Синтаксические диаграммы являются формальным и одновременно наглядным представлением правил, составленных из терминальных и нетерминальных имен. Для того чтобы сделать описание синтаксиса более компактным, часть определений нетерминальных имен будет приводиться в словесной форме.

Терминальными называются имена, входящие в текст программы так, как они написаны. Например, терминальными именами являются символьные или строковые константы. В синтаксических правилах такие терминальные имена заключаются в апострофы и кавычки соответственно.

Нетерминальные имена - это понятия, которые выводятся при помощи синтаксических правил с использованием других нетерминальных и терминальных имен, а также символов. Нетерминальные имена будем начинать с заглавной буквы и использовать для их написания курсивный Шрифт Courier, например, Спецификатор класса памяти.

Элементы синтаксических правил, заключенные в квадратные скобки ([]), являются необязательными.

Итак, вооружившись этим набором несложных понятий и договоренностей, приступим к описанию синтаксиса языка программирования С-51.

Объявление переменной в этом языке представляется в следующем виде:

[Спецификатор класса памяти] Спецификатор типа

[Спецификатор типа памяти] Описатель ['=' Инициатор]

[, Описатель ['=' Инициатор]]…

Описатель - идентификатор простой переменной либо более сложная конструкция с квадратными скобками, круглыми скобками или звездочкой (набором звездочек).

Спецификатор типа - одно или несколько ключевых слов, определяющих тип объявляемой переменной. В языке С-51 имеется стандартный набор типов данных, используя который, можно сконструировать новые (уникальные) типы данных. Перечень стандартных типов данных С-51 приведен в табл. 9.6.

Александр Микушин - Занимательно о микроконтроллерах

Инициатор - задает начальное значение или список начальных значений, которое (которые) присваивается переменной при объявлении.

Спецификатор класса памяти - определяется одним из ключевых слов языка С-51: auto, bit, extern, register, sbit, sfr, sfrl6 static, и указывает, каким образом и в какой области памяти микроконтроллера будет распределяться память под объявляемую переменную, с одной стороны, а с другой - область видимости этой переменной, т. е. из каких программных модулей можно будет к ней обратиться.

Спецификатор типа памяти - определяется одним из шести ключевых слов языка С-51: code, data, idata, bdata, xdata, pdata, и указывает, в какой области памяти микроконтроллера будет размещена переменная.

Компилятор С51 обеспечивает следующие расширения ANSI-стандарта языка программирования С, необходимые для программирования микроконтроллеров семейства MCS-51:

- области памяти;

- типы памяти;

- модели памяти;

- описатели типа памяти;

- описатели изменяемых типов данных;

- битовые переменные и данные с битовой адресацией;

- регистры специальных функций;

- указатели;

- атрибуты функций.

Типы данных bit, sbit, sfr и sfri6 являются расширением языка программирования С-51 для поддержки процессора 8051. Они не описаны стандартом ANSI, поэтому к ним нельзя обращаться при помощи переменных-указателей.

Категории типов данных

Основные типы данных определяют с использованием следующих ключевых слов.

Для целых типов данных: bit, sbit, char, int, short, long, signed, unsigned, sfr, sfrl6.

Для типов данных с плавающей запятой: float.

Переменная любого типа может быть объявлена как неизменяемая. Это достигается добавлением ключевого слова const к спецификатору типа.

Объекты с квалификатором const представляют собой данные, используемые только для чтения, т. е. этой переменной в ходе выполнения программы не может быть присвоено новое значение. Отметим, что если после слова const отсутствует спецификатор типа, то подразумевается спецификатор типа int. Если ключевое слово const стоит перед объявлением составных типов (массив, структура, объединение, перечисление), то это приводит к тому, что каждый элемент также будет немодифицируемым, т. е. значение ему может быть присвоено только один раз.

Примеры использования ключевого слова const:

const float A=2.128E-2;

const В=286; //подразумевается const int В=286

Отметим, что переменные со спецификатором класса памяти размещаются во внутреннем ОЗУ. Неизменяемость контролируется только на этапе трансляции. Для размещения переменной в ПЗУ лучше воспользоваться спецификатором типа памяти code.

Целочисленный тип данных

Для определения данных целочисленного типа используются различные ключевые слова, которые определяют диапазон значений и размер области памяти, выделяемой под переменные (табл. 9.7).

Ваша оценка очень важна

0
Шрифт
Фон

Помогите Вашим друзьям узнать о библиотеке