Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Встроенные системы на МК ATmega16.doc
Скачиваний:
0
Добавлен:
26.12.2019
Размер:
7.82 Mб
Скачать

4.2 Язык си

4.2.1 Типы данных, объявление данных

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

Переменная – именованная величина, значение которой может изменяться при выполнении программы. Переменные могут быть глобальными и локальными.

Глобальные переменные – это переменные, которые доступны во всех функциях программы. Глобальные переменные объявляются в начале программы. При объявлении глобальных переменных им присваиваются нулевые значения. Локальные переменные доступны только в тех функциях, в которых они объявлены. При объявлении локальных переменных их значения случайны (могут быть любыми).

Константы (неизменяемые значения) могут быть представлены десятичной, шестнадцатеричной или двоичной записями.

Примеры:

584, 0399, 12, 3 – запись значений в десятичной системе;

0Х3ADF, 0xdf34 – запись значений в шестнадцатеричной системе;

0b11001110, 0b00011100 - запись значений в двоичной системе.

Символьная константа представляется символом, заключенным в одиночные кавычки, например, ' s ' . Значение символьной константы - числовой код (ASCII код) символа.

Строковая константа или литерал – последовательность символов, заключенная в двойные кавычки, например, « Stroka 34» .

Данные, переменные, константы объявляются перед их использованием. Данные и переменные могут храниться в регистрах микроконтроллера, ячейках ОЗУ. Константы рекомендуется хранить в программной (flash) памяти. Для определения данных целого типа используются ключевые слова bit, char, int, long, unsigned, flash,eeprom, которые определяют диапазон значений (тип переменных) и область памяти, выделяемой для их хранения.

Примеры объявлений переменных, данных, констант.

bit alfa; //Объявление битовой переменной с именем alfa; один бит в регистре

//РОН микроконтроллера.

unsigned char data1; // Переменная с именем data1; ее тип - беззнаковая символьная;

//диапазон значений 0-255 (1 байт); может размещаться в

//регистре МК или в ячейке ОЗУ.

unsigned int data2; // Значение с именем data2; ее тип - беззнаковая целая;

//диапазон значений 0-65535 (2 байта); может размещаться в двух

//регистрах МК или в двух ячейках ОЗУ.

unsigned long int DATA_3; // Переменная с именем DATA_3; ее тип - беззнаковая

//длинная; диапазон значений от 0 до 232 -1 (4 байта);

// размещается в четырех ячейках ОЗУ.

flash unsigned char ConstTime; //Константа с именем ConstTime, длиной в 1 байт (от

// нуля до 255), помещена в программную

//память микроконтроллера.

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

Примеры:

unsigned int DATA_3 = 0xdd4f; // Объявлена переменная DATA_3 и ей присвоено

// шестнадцатеричное значение ddff.

unsigned char data1 = 233; // Объявлена переменная data1 и ей присвоено

// десятичное значение 233.

unsigned char data4 = 0b11001111; // Объявлена переменная data4 и ей присвоено

// двоичное значение 11001111.

bit alfa = 1; //Объявление битовой переменной и присвоение ей значения 1.

Массивы - это группа элементов одинакового типа (char, int, long int и т.п.). Из объявления массива компилятор СИ должен получить информацию о типе элементов массива и их количестве. При объявлении массива необходимо указать тип данных (элементов) массива, имя массива и в квадратных скобках указать число элементов в массиве:

unsigned char CODE_SEGM [10]; //Объявление массива данных CODE_SEGM

//типа беззнаковых символьных; в массиве 10

//элементов с номерами (индексами) от 0 до 9 .

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

unsigned char CODE_SEGM [ ] = {32,0xd7,0b11101011}; //Объявление массива данных

//CODE_SEGM типа беззнаковых целых; в массиве 3

//элемента с номерами (индексами) от 0 до 2; их

//значения 32, 0xd7 и 0b11101011.

сhar stroka_symvols [ ] = " Meassing " ; // Объявление символьной строки –

// массив, в котором 9 (а не 8) элементов;

// номера – индексы элементов 0,1,…,7,8;

// последний символ – элемент равный нулю.