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

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

Государственное образовательное учреждение

высшего профессионального образования

«САНКТ-ПЕТЕРБУРГСКИЙ ГОСУДАРСТВЕННЫЙ

МОРСКОЙ ТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ»

Е. В. Коротицкий, Ю. Е. Коротицкая

Основы языка си для микроконтроллеров avr

Учебное пособие

Санкт-Петербург

2011

1. Основы языка Си для микроконтроллеров avr

Универсальный язык С был разработан как инструмент для написания операционной среды UNIX.

Язык С поддерживает процедурно-ориентированную парадигму программирования, т.е. парадигма – взаимосвязанный набор процедур.

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

    1. Препроцессор языка Cи его команды

Препроцессор (макропроцессор) — это составная часть языка Си, которая обрабатывает исходный текст программы до того, как он пройдет через компилятор. Препроцессор читает строки текста и выполняет действия, определяемые командными строками. Если первым символом в строке, отличным от пробела, является символ #, то такая строка рассматривается препроцессором как командная. Командные строки называются директивами препроцессора.

Препроцессор компилятора CodeVisionAVRимеет несколько директив. В Табл. 1 даётся их краткое описание.

Табл. 1 –Директивы препроцессора компилятора CodeVisionAVR

Директива

Назначение

#include

Используется для включения в программу

другого файла

#define

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

#undef

Используется для отмены действия директивы #define

#if

Используются для условной компиляции

Sifdef

#ifndef

#else

#endif

#line

Используется для изменения встроенных макросов _LINE_и_FILE_

#error

Позволяет остановить компиляцию и отобразить сообщение об ошибках

#asm

Используются для включения в исходную программу ассемблерного кода

#pragma

Разрешает специальные директивы компилятора

ВСЕ директивы препроцессора начинаются со знака #. После директив препроцессора точка с запятой НЕ СТАВИТСЯ.

      1. Директива #include

Пример:

Директива #include имеет две синтаксические формы:

#include "имя_файла" и #include <имя_файла>

Имя_файла состоит из имени файла.

Директива #include широко используется для включения в программу так называемых заголовочных файлов (файлы с расширением.h), содержащих определения периферийных устройств и векторов прерываний используемого микроконтроллера, прототипы библиотечных функций, прототипы функций, определённых пользователем, и т. д.

#include "имя_файла.h"

      1. Директивы #define, #undef

Директива #define служит для замены часто использующихся одних лексических единиц языка Си (констант, ключевых слов, операторов или выражений) на другие, так называемыеидентификаторы. Идентификаторы, заменяющие текстовые или числовые константы, называютименованными константами. Идентификаторы, заменяющие фрагменты программ, называютмакроопределениями, причём макроопределения могут иметь аргументы.

Директива #define имеет две синтаксические формы:

#define идентификатор текст

#define идентификатор (список параметров) текст

Перед компиляцией программы препроцессор в соответствии с директивой #define заменит все идентификаторы, встречающиеся в программе, на соответствующий им текст.

Пример:

#define А 15 #define В (А+20) // Эти директивы заменят в тексте программы

каждый идентификатор А на число 15, а каждый идентификатор В на выражение (15+20) вместе с окружающими его скобками.

Пример:

#define X(a,b,c) ((а)*(b)-(с)) // Препроцессор в соответствии с этой директивой заменит фрагмент Y=X(k+m,k-m,n); на фрагмент

Y=((k+m)*(k-m)-(n))