Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Микропроцессоры(Коротицкий Евгений Викторович) / лабы_гр3480 / Основы языка Си для микроконтроллеров AVR.doc
Скачиваний:
1508
Добавлен:
18.04.2015
Размер:
797.7 Кб
Скачать
    1. Переменные

В отличие от констант переменные во время выполнения программы могут множество раз изменять свои значения.

Переменные могут быть глобальными или локальными.

Глобальные переменные — это переменные, доступные во всех функциях программы. Если глобальные переменные специально не инициализированы, то при запуске программы они автоматически устанавливаются в 0.

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

Синтаксис объявления переменных:

[<место хранения>] определение типа> <идентификатор>;

Пример:

/* Объявление глобальных переменных */

long х;

char у;

/* Инициализация глобальных переменных */

Х=10;

/* Объявление с одновременной инициализацией глобальных переменных */

int c=0xfa;

void main(void) /* Объявление локальных переменных,

{

int а;

long b;

}

bit <идентификатор>;

Распределение памяти для битовых переменных осуществляется в порядке объявления, начиная с бита 0 регистра R2, затем бит 1 регистраR2 и так далее в порядке возрастания. Максимум можно объявить 104 битовых переменных.

Пример:

/* Битовые переменные */

bit bit_varl=l; // Объявление и инициализация битовой переменной bit_varl, которая будет храниться в бите 0 регистра R2

bit bit_var2; // Объявление битовой переменной bit_var2, которая будет храниться в бите 1 регистра R2

В выражениях битовые переменные автоматически переводятся в unsignedchar(беззнаковые символьные).

    1. Массивы

Переменные могут быть сгруппированы в массивы.

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

Синтаксис объявления массивов:

[<модификатор места хранения;>] <тип> идентификатор массива> [<константное_ выражение;>] ;

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

Пример:

int loc_array2[2][2] = {{4,9}, {7,1}}; // Объявление и инициализация целочисленного локального многомерного массива 1ос_аггау2

    1. Типы данных

Все типы данных, поддерживаемые компилятором Си, их размеры и диапазоны их возможных значений приведены в Табл. 3.

Табл. 3 – Типы данных компилятора

Тип

Размер

(Биты)

Диапазон

bit (бит)

1

0, 1

char (символ)

8

-128...127

unsigned char (символ без знака)

8

0...255

signed char (символ со знаком)

8

-128...127

int (целое)

16

-32768...32767

short int (короткое целое)

16

-32768...32767

unsigned int (целое без знака)

16

0...65535

signed int (целое со знаком)

16

-32768...32767

long int (длинное целое)

32

2147483648...2147483647

unsigned long int (длинное целое без знака)

32

0...4294967295

signed long int (длинное целое со знаком)

32

-2147483648...2147483647

float (с плавающей точкой)

32

+ 1.175е-38.. +3.402е38

double (двойное)

32

±1.175е-38...±3.402е38

Тип данных bit(бит) поддерживается только для глобальных переменных.

Все переменные должны быть описаны до их использования. Описание задаёт тип, за которым следует список одной или более переменной этого типа.

Пример:

int a, b; // Объявление переменных а и b как целых

char с; // Объявление переменной с как символьной

Если указано ключевое слово unsigned, т. е. число беззнаковое, то старший бит интерпретируется как часть числа. При отсутствии ключевого слова unsigned переменная считается знаковой.

Пример:

signed char х, а; // Объявление переменных х и а как символьных со знаком

unsigned char у, b; // Объявление переменных у и b как символьных без знака