Читаем Занимательно о микроконтроллерах полностью

Тип данных Описатель';'

где Тип данных указывает тип поля структуры для объектов, определяемых в Описателях. В простейшей форме описатели представляют собой идентификаторы переменных или массивы.

Пример объявления структур:

Переменные tochka1, tochka2 объявляются как структуры, каждая из которых состоит из трех полей: tzvet, x и у. Переменная simv объявляется как двумерный массив, состоящий из 63 элементов, описывающих рисунок символа. Во втором объявлении каждая из двух переменных — date1, date2 — состоит из трех полей: year, moth, day.

Существует и другой способ объявления переменной структурного типа.

Этот способ основан на использовании заранее объявленного типа структуры. Объявление структурного типа аналогично объявлению перечислимого типа. Структурный тип объявляется следующим образом:

"struct" Тип '{' Список описаний '}';

где Тип — это идентификатор.

В приведенном ниже примере идентификатор student объявляется как тип структуры, список описаний полей которой приводится далее в фигурных скобках:

struct student

{char name[25];    //Имя и фамилия студента

int id;                  //Номер в журнале

int age;                //Возраст

char usp;              //успеваемость

};

Тип структуры используется для последующего объявления структур данного вида в форме:

struct Тип Список идентификаторов';'

Пример:

struct student st[23];

Поле структуры может быть указателем на структуру того же самого типа, в которой оно объявлено. Ниже рассматривается пример такой ссылки.

struct node { int data; struct node * next; } st1_node;

Доступ к отдельным полям структуры осуществляется с помощью указания имени структуры и следующего через точку имени поля, например:

st2.id=5;                     //Присвоить значение полю id структуры st2

st1.name="Иванов";     //Присвоить значение полю name структуры st1

st1_node.data=1985;    //Присвоить значение полю data структуры st1

st[1].name="Иванов";   //Занести студента Иванова в журнал

st[1].id=2;                   //поместить его в журнал под вторым номером

st[1].age=23;               //Занести в журнал его возраст

Битовые поля

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

"struct"  '{' «unsigned» Идентификатор1 ':' Длина поля1'

"unsigned" Идентификатор2 ':' Длина поля2'  '}' 

Длина поля задается целым выражением или константой. Эта константа определяет число битов, отведенное соответствующему полю. Поле нулевой длины обозначает выравнивание на границу следующего слова.

Пример:

struct { unsigned a1 : 1;

           unsigned a2 : 2;

           unsigned a3 : 5;

           unsigned a4 : 2; } prim; 

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

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

Cntr.Cmd=30;

Объединения (смеси)

Иногда один и тот же элемент данных удобно обрабатывать по-разному, в зависимости от ситуации. Например, кодовое слово помехоустойчивого кода можно передавать целиком и можно осуществлять запись информационных и проверочных битов различными процедурами. Еще один пример. Четыре соседних байта можно интерпретировать в один момент времени (для обработки) как число с плавающей запятой, и эти же четыре байта в другой момент времени интерпретировать (для передачи или приема) как четырехэлементный массив байтов.

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

Тип объединения объявляется в следующем виде:

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

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

Электроника для начинающих (2-е издание)
Электроника для начинающих (2-е издание)

В ходе практических экспериментов рассмотрены основы электроники и показано, как проектировать, отлаживать и изготавливать электронные устройства в домашних условиях. Материал излагается последовательно от простого к сложному, начиная с простых опытов с электрическим током и заканчивая созданием сложных устройств с использованием транзисторов и микроконтроллеров. Описаны основные законы электроники, а также принципы функционирования различных электронных компонентов. Показано, как изготовить охранную сигнализацию, елочные огни, электронные украшения, устройство преобразования звука, кодовый замок и др. Приведены пошаговые инструкции и более 500 наглядных рисунков и фотографий. Во втором издании существенно переработан текст книги, в экспериментах используются более доступные электронные компоненты, добавлены новые проекты, в том числе с контроллером Arduino.

Чарльз Платт

Радиоэлектроника / Технические науки
Электроника для начинающих
Электроника для начинающих

В ходе практических экспериментов рассмотрены основы электроники и показано, как проектировать, отлаживать и изготавливать электронные устройства в домашних условиях. Материал излагается последовательно от простого к сложному, начиная с простых опытов с электрическим током и заканчивая созданием сложных устройств с использованием транзисторов и микроконтроллеров. Описаны основные законы электроники, а также принципы функционирования различных электронных компонентов. Показано, как изготовить охранную сигнализацию для защиты от проникновения в дом, елочные огни, электронные украшения для одежды, устройство преобразования звука, кодовый замок, автономную роботизированную тележку и др. Приведены пошаговые инструкции и более 500 наглядных рисунков и фотографий.Для начинающих радиолюбителей

Паоло Аливерти , Чарльз Платт

Радиоэлектроника / Технические науки
Искусство схемотехники. Том 3 (Изд.4-е)
Искусство схемотехники. Том 3 (Изд.4-е)

Широко известная читателю по предыдущим изданиям монография известных американских специалистов посвящена быстро развивающимся областям электроники. В ней приведены наиболее интересные технические решения, а также анализируются ошибки разработчиков аппаратуры: внимание читателя сосредотачивается на тонких аспектах проектирования и применения электронных схем. На русском языке издается в трех томах. Том 3 содержит сведения о микропроцессорах, радиотехнических схемах, методах измерения и обработки сигналов, принципах конструирования аппаратуры и проектирования маломощных устройств, а также обширные приложения. Для специалистов в области электроники, автоматики, вычислительной техники, а также студентов соответствующих специальностей вузов и техникумов.

Пауль Хоровиц , Уинфилд Хилл

Техника / Радиоэлектроника