Читаем Встраиваемые системы. Проектирование приложений на микроконтроллерах семейства 68HC12/HCS12 с применением языка С полностью

3.1.1. Глобальные и локальные переменные

Каждая объявленная в начале программы переменная должна храниться в одной или нескольких ячейках памяти в течение времени исполнения программы. В микроконтроллерах переменные могут размещаться в ОЗУ, ПЗУ и регистрах центрального процессора.

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

Объявление различных идентификаторов в начале программы — особенность языка Си по сравнению с языком ассемблер. Служебные слова, которые будут сопровождать объявление идентификатора, определяют правила доступа к переменной, функции, макросу или структуре, которая именована этим идентификатором. Не все идентификаторы будут доступны из любого места программы на Си. Подробное описание служебных слов для объявления классов хранения переменных выходит за рамки этой главы. Вы можете найти его в [3].

В микроконтроллерах семейства 68НС12, переменные размещаются в ячейках памяти ПЗУ или ОЗУ. Переменная, которая не изменяет своего значения в течение выполнения программы, именуется константой и хранится в ПЗУ. Переменная, значение которой изменяется в процессе исполнения программы, должна храниться в ОЗУ. Например, предположим, что некоторый контроллер связан с датчиком температуры посредством аналого цифрового преобразователя. Прикладная программа должна постоянно обновлять значение температуры в памяти контроллера. Для этого объявим переменную с именем temp (от слова temperature — температура) и разместим ее в ОЗУ МК. Приведенный ниже фрагмент программы на Си демонстрирует, как обратиться к размещенной в ОЗУ переменной temp и отобразить ее значение на дисплее. Заметим, что номера строк в приводимых фрагментах программ не являются частью записи операторов языка Си и не должны присутствовать в исходном тексте программы, подлежащем компиляции. Они введены искусственно для ссылки на отдельные операторы при обсуждении конструкций языка Си.

1 while (1)

2 {

3  temp = *(unsigned char volatile*)(0х1000);

4  printf(The current temperature is %d\n, temp);

5 }

Данный фрагмент кода предполагает, что переменная с именем temp создана (объявлена) ранее, и также ранее реализован фрагмент кода на Си для опроса аналого цифрового преобразователя с целью обновления значения температуры. Для определенности в строке 3 мы сами присваиваем этой переменной значение $1000 в шестнадцатеричном коде (или 4096 в десятичной системе счисления). Префикс 0x служит в Си для обозначения шестнадцатеричной системы счисления. Не следует тревожиться, если не все записи в данном примере ясны для Вас. Пройдет немного времени, Вы закончите изучение материалов данной главы, и все рассмотренные примеры станут для Вас простыми и понятными.

В приведенном фрагменте переменная temp может быть объявлена как глобальная или как локальная переменная. Назначение статуса переменной (глобальная или локальная) определяет программист посредством записи оператора для объявления переменной в определенном месте текста программы. Глобальная переменная должна быть объявлена вне всех функций данной программы. В то время как локальная переменная объявляется внутри той функции, в которой используется. Мы рассмотрим способы объявления переменных после обсуждения в следующем параграфе типов данных, используемых в программах на Си.

3.2. Типы данных в Си

Язык Си оперирует с восемью основными типами данных, которые представлены в табл. 3.1. Тип переменной определяет число байтов в памяти микроконтроллера, которые выделяются компилятором для ее хранения.

Перейти на страницу:

Похожие книги

C# 4.0: полное руководство
C# 4.0: полное руководство

В этом полном руководстве по C# 4.0 - языку программирования, разработанному специально для среды .NET, - детально рассмотрены все основные средства языка: типы данных, операторы, управляющие операторы, классы, интерфейсы, методы, делегаты, индексаторы, события, указатели, обобщения, коллекции, основные библиотеки классов, средства многопоточного программирования и директивы препроцессора. Подробно описаны новые возможности C#, в том числе PLINQ, библиотека TPL, динамический тип данных, а также именованные и необязательные аргументы. Это справочное пособие снабжено массой полезных советов авторитетного автора и сотнями примеров программ с комментариями, благодаря которым они становятся понятными любому читателю независимо от уровня его подготовки. Книга рассчитана на широкий круг читателей, интересующихся программированием на C#.Введите сюда краткую аннотацию

Герберт Шилдт

Программирование, программы, базы данных
Разработка приложений в среде Linux. Второе издание
Разработка приложений в среде Linux. Второе издание

Книга известных профессионалов в области разработки коммерческих приложений в Linux представляет СЃРѕР±РѕР№ отличный справочник для широкого круга программистов в Linux, а также тех разработчиков на языке С, которые перешли в среду Linux из РґСЂСѓРіРёС… операционных систем. РџРѕРґСЂРѕР±но рассматриваются концепции, лежащие в основе процесса создания системных приложений, а также разнообразные доступные инструменты и библиотеки. Среди рассматриваемых в книге вопросов можно выделить анализ особенностей применения лицензий GNU, использование СЃРІРѕР±одно распространяемых компиляторов и библиотек, системное программирование для Linux, а также написание и отладка собственных переносимых библиотек. Р

Майкл К. Джонсон , Эрик В. Троан

Программирование, программы, базы данных