Читаем Занимательно о микроконтроллерах полностью

Начиная с этого момента для описания синтаксических правил языка программирования С-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.

Целочисленный тип данных
Перейти на страницу:

Похожие книги

Электроника для начинающих (2-е издание)
Электроника для начинающих (2-е издание)

В ходе практических экспериментов рассмотрены основы электроники и показано, как проектировать, отлаживать и изготавливать электронные устройства в домашних условиях. Материал излагается последовательно от простого к сложному, начиная с простых опытов с электрическим током и заканчивая созданием сложных устройств с использованием транзисторов и микроконтроллеров. Описаны основные законы электроники, а также принципы функционирования различных электронных компонентов. Показано, как изготовить охранную сигнализацию, елочные огни, электронные украшения, устройство преобразования звука, кодовый замок и др. Приведены пошаговые инструкции и более 500 наглядных рисунков и фотографий. Во втором издании существенно переработан текст книги, в экспериментах используются более доступные электронные компоненты, добавлены новые проекты, в том числе с контроллером Arduino.

Чарльз Платт

Радиоэлектроника / Технические науки
Электроника для начинающих
Электроника для начинающих

В ходе практических экспериментов рассмотрены основы электроники и показано, как проектировать, отлаживать и изготавливать электронные устройства в домашних условиях. Материал излагается последовательно от простого к сложному, начиная с простых опытов с электрическим током и заканчивая созданием сложных устройств с использованием транзисторов и микроконтроллеров. Описаны основные законы электроники, а также принципы функционирования различных электронных компонентов. Показано, как изготовить охранную сигнализацию для защиты от проникновения в дом, елочные огни, электронные украшения для одежды, устройство преобразования звука, кодовый замок, автономную роботизированную тележку и др. Приведены пошаговые инструкции и более 500 наглядных рисунков и фотографий.Для начинающих радиолюбителей

Паоло Аливерти , Чарльз Платт

Радиоэлектроника / Технические науки
Искусство схемотехники. Том 3 (Изд.4-е)
Искусство схемотехники. Том 3 (Изд.4-е)

Широко известная читателю по предыдущим изданиям монография известных американских специалистов посвящена быстро развивающимся областям электроники. В ней приведены наиболее интересные технические решения, а также анализируются ошибки разработчиков аппаратуры: внимание читателя сосредотачивается на тонких аспектах проектирования и применения электронных схем. На русском языке издается в трех томах. Том 3 содержит сведения о микропроцессорах, радиотехнических схемах, методах измерения и обработки сигналов, принципах конструирования аппаратуры и проектирования маломощных устройств, а также обширные приложения. Для специалистов в области электроники, автоматики, вычислительной техники, а также студентов соответствующих специальностей вузов и техникумов.

Пауль Хоровиц , Уинфилд Хилл

Техника / Радиоэлектроника