Меню сайта
Календарь
|
Structures(структуры)-2часть."Help" - CodeVisionAVR.Вкладка - "Variables(Переменные)"Структуры могут быть
объединены в массивы. Пример, как инициализировать
и доступ к глобальным массивом структуры хранятся в EEPROM: /*
Global structure array located in EEPROM */ eeprom
struct eeprom_structure {
char a;
int b;
char c[15];
} se[2]={{'a',25,"Hello"},
{'b',50,"world"}}; void
main(void) { char
k1,k2,k3,k4; int
i1, i2; /*
define a pointer to the structure */ struct
eeprom_structure eeprom *ep; /*
direct access to structure members */ k1=se[0].a; i1=se[0].b; k2=se[0].c[2]; k3=se[1].a; i2=se[1].b; k4=se[1].c[2]; /*
same access to structure members using a pointer */ ep=&se;
/* initialize the pointer with the structure address */ k1=ep->a; i1=ep->b; k2=ep->c[2]; ++ep;
/* increment the pointer */ k3=ep->a; i2=ep->b; k4=ep->c[2]; } Потому что некоторые
AVR устройства имеют небольшой объем оперативной памяти, для того, чтобы
сохранить размер стека данных небольшой, рекомендуется не пропускать структур
как функция параметров и использовать указатели для этой цели. Пример: struct
alpha {
int a,b, c;
} s={2,3}; /*
define the function */ struct
alpha *sum_struct(struct alpha *sp) { /*
member c=member a + member b */ sp->c=sp->a
+ sp->b; /*
return a pointer to the structure */ return
sp; } void
main(void) { int
i; /*
s->c=s->a + s->b */ /*
i=s->c */ i=sum_struct(&s)->c; } Структура
члены также могут быть объявлены как битовые поля, имеющие ширину от 1 до 32. Битовые
поля выделяются в порядке объявления, начиная с младшего бита. Пример: /*
this structure will occupy 1 byte in RAM
as the bit field data type is unsigned char (эта структура будет занимать 1 байт
RAM как битовое поле типа данных неподписанные символ )*/ struct
alpha1 {
unsigned char a:1; /* bit 0 */
unsigned char b:4; /* bits 1..4 */
unsigned char c:3; /* bits 5..7 */
}; /*
this structure will occupy 2 bytes in RAM as the bit field data type is unsigned int (эта структура будет занимать 2 байта в оперативной памяти как битовое
поле типа данных неподписанных Int )*/ struct
alpha2 {
unsigned int a:2; /* bits 0..1 */
unsigned int b:8; /* bits 2..9 */
unsigned int c:4; /* bits 10..13 */
/* bits 14..15 are not used (не используется )*/
}; /*
this structure will occupy 4 bytes in RAM
as the bit field data type is unsigned long (эта структура будет занимать 4 байта в оперативной памяти как битовое поле типа unsigned long )*/ struct
alpha3 {
unsigned long a:10; /* bits 0..9 */
unsigned long b:8; /* bits 10..17 */
unsigned long c:6; /* bits 18..23 */
/* bits 24..31 are not used (не используется )*/ |
Архив записей
Друзья сайта
Статистика
Онлайн всього: 1 Гостей: 1 Користувачів: 0 |