Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Разработка ПО на языке Си для микроконтроллера AT91SAM7S.pdf
Скачиваний:
119
Добавлен:
18.05.2014
Размер:
838.69 Кб
Скачать

Министерство образования и науки РФ

Санкт-Петербургский государственный электротехнический университет "ЛЭТИ"

____________________________________________________

РАЗРАБОТКА ВСТРАИВАЕМОГО ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ НА ЯЗЫКЕ СИ

Методические указания к лабораторным работам

Санкт-Петербург Издательство СПбГЭТУ "ЛЭТИ"

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