- •1 Переменные
- •1.1 Базовые типы данных
- •1.1.1 Целочисленные типы
- •1.1.2 Способы записи целых чисел
- •1.1.3 Логический тип
- •1.1.4 Вещественные типы
- •1.1.5 Специальный тип void
- •1.2 Оператор sizeof
- •1.3 Константы
- •1.4 Определение и описание переменных
- •1.5 Классы памяти переменных
- •2 Функции
- •2.1 Объявления и определения функций
- •2.2 Функция main
- •3.1 Разыменование указателя и получение адреса
- •3.1.1 Операции разыменования указателя и получение адреса переменной
- •3.1.2 Инициализация и присваивание указателей
- •3.1.3 Указатели и область действия (время существования) переменных
- •4 Массивы
- •4.1 Основные сведения
- •4.2 Указатель на первый элемент массива
- •4.3 Работа с указателями как с массивами
- •4.4 Арифметика указателей
- •4.5 Разноразмерные массивы
- •5 Структуры
- •6 Логические операции
- •7 Условия
- •8 Операторы сравнения
- •9 Сдвиги
- •10 Циклы
- •10.1 Цикл с предусловием
- •10.2 Цикл с постусловием
- •10.3 Цикл со счётчиком
- •11 Оптимизация и её запрет, ключевое слово volatile
- •12.1.2 Директива #include
- •12.2 Условная компиляция
Министерство образования и науки РФ
Санкт-Петербургский государственный электротехнический университет "ЛЭТИ"
____________________________________________________
РАЗРАБОТКА ВСТРАИВАЕМОГО ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ НА ЯЗЫКЕ СИ
Методические указания к лабораторным работам
Санкт-Петербург Издательство СПбГЭТУ "ЛЭТИ"
2014
УДК 004.43
Разработка встраиваемого программного обеспечения на языке Си: Методические указания к лабораторным работам/ Сост.: Р. Ю. Марченков, П. Г. Королев. СПб.: Изд-во СПбГЭТУ "ЛЭТИ", 2013. 40 с.
Настоящие методические указания являются кратким руководством по использованию языка программирования Си стандарта С99 (ISO/IEC 9899:1999) для создания встроенного программного обеспечения для микроконтроллера AT91SAM7S.
Предназначены для студентов бакалавриата, обучающихся по направлению 200106.68 «Приборостроение» дневной формы обучения.
Утверждено редакционно-издательским советом университета
в качестве методических указаний
© СПбГЭТУ "ЛЭТИ", 2014
2
1Переменные
1.1Базовые типы данных
Си является языком со статической типизацией данных. Это означает, что тип любой переменной указывается программистом, а компилятор проверяет корректность использования этой переменной в каждом случае с учётом её типа; при выполнении программы типы переменных не проверяются. В языке Си существует несколько базовых типов данных, рассмотренных ниже.
1.1.1Целочисленные типы
Таблица 1. Целочисленные типы данных
Наименование |
Описание |
Размер в |
|
Диапазоны значений |
||
типа |
|
памяти, бит |
|
|
||
|
знаковый тип |
беззнаковый тип |
||||
|
|
|
|
|
|
|
int |
целое |
32 |
-231 ... 231-1 |
|
0 |
… 232-1 |
long1 / long int |
длинное целое |
32 |
-231 ... 231-1 |
|
0 |
… 232-1 |
short / short int |
короткое целое |
16 |
-215 ... 215-1 |
|
0 ... 216-1 |
|
char |
символ (байт) |
8 |
-27 ... 27-1 |
|
0 |
… 28-1 |
Целочисленные типы могут быть знаковыми и беззнаковыми. Знаковые переменные могут хранить как положительные, так и отрицательные числа. Беззнаковые переменные содержат только положительные значения. Для обозначения беззнакового целого типа данных (табл. 1) необходимо указать квалификатор «unsigned» перед именем типа (например, так «unsigned int»). Отсутствие квалификатора «unsigned» означает использование знакового типа.
1.1.2Способы записи целых чисел
Целые числа могут быть указаны в четырёх системах счисления: десятичной, шестнадцатеричной, двоичной и восьмеричной (см. табл. 2).
Таблица 2. Способы записи целых чисел.
Система счисления |
Префикс |
Пример |
Значение |
|
|
|
|
десятичная |
отсутствует |
10 |
10 |
|
|
|
|
шестнадцатеричная |
0x |
0x10 |
16 |
|
|
|
|
двоичная |
0b |
0b10 |
2 |
|
|
|
|
восьмеричная |
0 |
010 |
8 |
|
|
|
|
1Для компилятора GCC и архитектуры ARM7 тип данных long (длинное целое) формально отличается от типа данных int, хотя обладает теми же свойствами.
3
1.1.3Логический тип
Логический (булев) тип переменных предназначен для хранения двух возможных значений: «true» или «false» («истина» или «ложь»; 1 или 0). Переменные булева типа объявляются с использованием слова «bool», в памяти они занимают 1 байт.
1.1.4Вещественные типы
Для чисел с плавающей точкой2 предусмотрены вещественные типы данных (табл. 3).
Таблица 3. Вещественные типы данных
Наименов |
Описание |
Размер в |
Диапазон значений |
ание типа |
|
памяти, бит |
|
|
|
|
|
float |
число с плавающей |
32 |
≈1.18∙10-38 … ≈3.40∙10+ 38 |
|
точкой одинарной |
|
|
|
точности |
|
|
double |
число с плавающей |
64 |
≈2.23∙10-308 … ≈1.8∙10+ 308 |
|
точкой двойной точности |
|
|
Вмикроконтроллере AT91SAM7S отсутствует аппаратная поддержка чисел
сплавающей точкой (все вычисления выполняются программно), поэтому их чрезмерное использование может приводить к значительным затратам ресурсов процессора.
Примеры определения переменных различных типов приведены в листинге 1.
1.1.5Специальный тип void
ВСи также есть специальный тип данных «void», который по-разному обрабатывается компилятором в зависимости от контекста использования. Создать переменную типа void невозможно. Указание void в качестве типа аргумента функции означает, что функция не принимает аргументов (подробнее см. п. 2.2). Если void указывается как тип возвращаемого значения функции, это означает, что функция не возвращает какого-либо результата (подробнее см. п. 2.1).
2Они же – числа с плавающей запятой.
4