DigTeh.ru
Цифровая техника в радиосвязи

Вычислительная техника и информационные технологии

Цифровые устройства

Микропроцессоры

Схемо и системотехника электронных средств

Микропроцессоры и цифровая обработка сигналов

Устройства приема и обработки радиосигналов в системах подвижной радиосвязи

Устройства генерирования и формирования сигналов в системах подвижной связи

Проектирование печатных плат

Источники питания радиоэлектронной аппаратуры

Схемотехника современных телекоммуникационных устройств

Книги в электронном варианте

Справочные данные

Новости














Содержание дисциплины

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

1.Элементы языка С51

1.1. Используемые символы

Множество символов используемых в языке СИ можно разделить на пять групп.

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

Таблица 1

Прописные буквы латинского алфавита A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
Строчные буквы латинского алфавита a b c d e f g h i j k l m n o p q r s t u v w x y z
Символ подчеркивания _

2. Прописные и строчные буквы русского алфавита и арабские цифры (табл.2).

Таблица 2

Прописные буквы русского алфавита А Б В Г Д Е Ж З И К Л М Н О П Р С Т У Ф Х Ц Ч Ш Щ Ы Ь Э Ю Я
Строчные буквы русского алфавита а б в г д е ж з и к л м н о п р с т у ф х ц ч ш щ ъ ы ь э ю я
Арабские цифры 0 1 2 3 4 5 6 7 8 9

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

Таблица 2

Символ Наименование Символ Наименование
, запятая ) круглая скобка правая
. точка ( круглая скобка левая
; точка с запятой } фигурная скобка правая
: двоеточие { фигурная скобка левая
? вопросительный знак < меньше
' апостроф > больше
! восклицательный знак [ квадратная скобка
| вертикальная черта ] квадратная скобка
/ дробная черта # номер
\ обратная черта % процент
~ тильда & амперсанд
* звездочка ^ исключающее ИЛИ
+ плюс = равно
- минус " кавычки

4. Управляющие и разделительные символы. К этой группе символов относятся: пробел, символы табуляции, перевода строки, возврата каретки, новая страница и новая строка. Эти символы отделяют друг от друга объекты, определяемые пользователем, к которым относятся константы и идентификаторы. Последовательность разделительных символов рассматривается компилятором как один символ (последовательность пробелов).

5. Управляющие последовательности, т.е. специальные символьные комбинации, используемые в функциях ввода и вывода информации. Управляющая последовательность строится на основе использования обратной дробной черты (\) (обязательный первый символ) и комбинацией латинских букв и цифр (табл.4).

Таблица 4

Управляющая последовательность Наименование Шестнадцатеричный код
\a Звонок 007
\b Возврат на шаг 008
\t Горизонтальная табуляция 009
\n Переход на новую строку 00A
\v Вертикальная табуляция 00B
\r Возврат каретки 00D
\f Новая страница 00C
\" Кавычки 022
\' Апостроф 027
\0 Ноль-символ 000
\\ Обратная дробная черта 05C
\OOO Восьмеричный код ASCII или ANSI символа  
\xHHH Шестнадцатеричный код ASCII или ANSI символа HHH

Управляющие последовательности \OOO и \xHHH (здесь O обозначает восьмеричную цифру; H обозначает шестнадцатеричную цифру) позволяет представить символ из кодовой таблицы ASCII или ANSI как последовательность восьмеричных или шестнадцатеричных цифр соответственно. Например символ возврата каретки может быть представлен следующими способами:

\r - управляющая последовательность,

\015 - восьмеричный код символа возврата каретки,

\x00D - шестнадцатеричный код символа возврата каретки.

Следует отметить, что в строковых константах всегда обязательно задавать все три цифры в управляющей последовательности. Например отдельную управляющую последовательность \n (переход на новую строку) можно представить как \010 или \xA, но в строковых константах необходимо задавать все три цифры, в противном случае символ или символы следующие за управляющей последовательностью будут рассматриваться как ее недостающая часть. Например:

"ABCDE\x009FGH" данная строковая команда будет напечатана с использованием определенных функций языка СИ, как два отдельных слова ABCDE и FGH, разделенные табуляцией, в этом случае если указать неполную управляющую строку "ABCDE\x09FGH",то при печати появится строка ABCDEЯGH, так как компилятор воспримет последовательность \x09F как символ "Я".

Отметим тот факт, что, если обратная дробная черта предшествует символу не являющемуся управляющей последовательностью (т.е. не включенному в табл.4) и не являющемуся цифрой, то эта черта игнорируется, а сам символ представляется как литеральный. Например:

символ \h представляется символом h в строковой или символьной константе.

Кроме определения управляющей последовательности, символ обратной дробной черты (\) используется также как символ продолжения. Если за (\) следует (\n), то оба символа игнорируются, а следующая строка является продолжением предыдущей. Это свойство может быть использовано для записи длинных строк.

1.2. Константы

В языке программирования С разделяют четыре типа констант: целые знаковые и беззнаковые константы, константы с плавающей запятой, символьные константы и литеральные строки.

Константа может быть представлена в десятичной, восьмеричной или шестнадцатеричной форме.

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

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

Шестнадцатеричная константа начинается с обязательной последовательности символов 0х или 0Х и содержит одну или несколько шестнадцатеричных цифр (0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F)

      Примеры целых констант:
         Десятичная      Восьмеричная       Шестнадцатеричная
         константа       константа          константа
             16             020                0x10
            127             0117               0x2B
            240             0360               0XF0

Если требуется сформировать отрицательную целую константу, то используют знак "-" перед записью константы (который будет называться унарным минусом). Например: -0x2A, -088, -16 .

Каждой целой константе присваивается тип, определяющий преобразования, которые должны быть выполнены, если константа используется в выражениях. Тип константы определяется следующим образом:

- десятичные константы рассматриваются как знаковые числа, и им присваивается тип int (целая) или long (длинная целая) в соответствии со значением константы. Если константа меньше 32768, то ей присваивается тип int в противном случае long.

- восьмеричным и шестнадцатеричным константам присваивается тип int, unsigned int (беззнаковая целая), long или unsigned long в зависимости от значения константы согласно табл 5.

Таблица 5

Диапазон шестнадцатеричных констант Диапазон восьмеричных констант Тип
0x0 - 0x7FFF 0 - 077777 int
0X8000 - 0XFFFF 0100000 - 0177777 unsigned int
0X10000 - 0X7FFFFFFF 0200000 - 017777777777 long
0X80000000 - 0XFFFFFFFF 020000000000 - 037777777777 unsigned long

Для того чтобы любую целую константу определить типом long, достаточно в конце константы поставить букву "l" или "L". Пример:

5l, 6l, 128L, 0105L, OX2A11L.

Константа с плавающей запятой - десятичное число, представленное в виде действительного числа с десятичной запятой и порядком числа. Формат записи константы с плавающей запятой:

[ цифры ].[ цифры ] [ Е|e [+|-] цифры ] .

Число с плавающей запятой состоит из целой и дробные части и (или) порядка числа. Константы с плавающей запятой представляют собой положительные числа двойной точности (имеют тип double). Для определения отрицательной величины необходимо сформировать константное выражение, состоящее из знака минуса и положительной константы.

Примеры: 115.75, 1.5Е-2, -0.025, .075, -0.85Е2

Символьная константа - представляется символом заключенном в апострофы. Управляющая последовательность рассматривается как одиночный символ, ее допустимо использовать в символьных константах. Значением символьной константы является числовой код символа. Примеры:

' '- пробел ,

'Q'- буква Q ,

'\n' - символ новой строки ,

'\\' - обратная дробная черта ,

'\v' - вертикальная табуляция .

Символьные константы имеют тип int и при преобразовании типов дополняются знаком.

Строковая константа (литерал или литеральная строка) - последовательность символов (включая строковые и прописные буквы русского и латинского а также цифры) заключенные в кавычки ("). Например: "Школа N 35", "город Тамбов", "YZPT КОД".

Отметим, что все управляющие символы, кавычка ("), обратная дробная черта (\) и символ новой строки в строковом литерале и в символьной константе представляются соответствующими управляющими последовательностями. Каждая управляющая последовательность представляется как один символ. Например, при печати литерала "Школа \n N 35" его часть "Школа" будет напечатана на одной строке, а вторая часть "N 35" на следующей строке.

Символы литеральной строки сохраняются в оперативной памяти. В конец каждой литеральной строки компилятором добавляется нулевой символ, который можно записать как: "\0".

Литеральная строка рассматривается как массив символов (char[ ]). Отметим важную особенность, число элементов массива равно числу символов в строке плюс 1, так как нулевой символ (символ конца строки) также является элементом массива. Все литеральные строки рассматриваются компилятором как различные объекты. Одна литеральная строка может выводиться на дисплей как несколько строк. Такие строки разделяются при помощи обратной дробной черты и символа возврата каретки \n. На одной строке исходного текста программы можно записать только одну литеральную строку. Если необходимо продолжить написание одной и той же литеральной строки на следующей строке исходного текста, то в конце строки исходного текста можно поставить обратную строку. Например исходный текст:

"строка неопределенной \

длины"

полностью идентичен литеральной строке:

"строка неопределенной длины".

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

1.3. Идентификатор

В качестве идентификатора может быть использована последовательность строчных или прописных букв латинского алфавита и цифр, а также символов подчёркивания '_'. Идентификатор может начинаться только с буквы или символа '_', но ни в коем случае с цифры. Строчные и прописные буквы в идентификаторе различаются. Например: идентификаторы abc и ABC, A128B и a128b воспринимаются как разные.

Важной особенностью является то, что компилятор допускает любое количество символов в идентификаторе, хотя значимыми являются первые 31 символ. Идентификатор создается на этапе объявления переменной, функции, структуры и т.п. после этого его можно использовать в последующих операторах разрабатываемой программы. Следует отметить важные особенности при определении идентификатора.

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

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

1.4. Ключевые слова

Ключевые слова - это зарезервированные идентификаторы, которые используются для построения операторов языка.

Список ключевых слов:

   alien      _at_   auto    bdata   bit        break     case     char   code     compact continue   data
   default    do     double  else    enum       extern    far      float  for      idata   if         int
   interrupt  large  long    pdata   _priority_ reentrant register return sbit     sfr     sfr16      signed
   sizeof     short  small   struct  switch     typedef   _task_   union  unsigned void    volatile   while

Ключевые слова не могут быть использованы в качестве идентификаторов.

1.5. Запись комментариев в тексте программы

Комментарий - это набор символов, которые игнорируются компилятором.

В языке программирования C51 возможно использование двух типов комментариев:

  1. комментарий, который может быть использован внутри строки;
  2. комментарий, который игнорирует символы до конца строки.

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

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

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

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

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

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

Понравился материал? Поделись с друзьями!



[ Оглавление | Вперед ]

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

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

пЕИРХМЦ@Mail.ru


Rambler's Top100