[an error occurred while processing this directive]
Как обычно. Я делаю так.
(«Телесистемы»: Конференция «Микроконтроллеры и их применение»)

миниатюрный аудио-видеорекордер mAVR

Отправлено Bill 16 марта 2005 г. 21:46
В ответ на: Уже. Bill, вопрос есть. Как правильно в Си обращаться к элементу структуры описанной в другом файле? отправлено rezident 16 марта 2005 г. 21:23


/* Data type definitions */

typedef struct {
char seconds; // Seconds (minutes) value
char minutes; // Minutes (hours) value
}
Time;

typedef struct {
char flags; // Various flags
char states[NSTATES]; // State sequence
}
Mode;

/* Global variable references */

//
// Global register variables
//
__no_init __regvar volatile unsigned IntFlags @ 14; // Various interrupt flags
__no_init __regvar volatile char TickCounter @ 13; // Tick counter (1 tick = 50mS)
__no_init __regvar volatile char QuartCounter @ 12; // Second quarter counter (250mS)
__no_init __regvar volatile char DigitCounter @ 11; // Digit counter
__no_init __regvar volatile char DigitMask @ 10; // Digit mask
__no_init __regvar volatile char *BCDptr @ 9; // BCD digits pointer
//
// EEPROM data
//
__no_init __eeprom char eMinutes @ 9; // Minute interval flag
__no_init __eeprom char eIndex @ 10; // Selected timer mode
__no_init __eeprom Time eValue1 @ 11; // Delay values
__no_init __eeprom Time eValue2 @ (11+2); //
__no_init __eeprom Time eValue3 @ (11+4); //
__no_init __eeprom Time eValue4 @ (11+6); //

//
// SRAM data
//
extern Time Delay1, Delay2, // Delay counters
Delay3, Delay4; //
extern char Digits1[2], // Timer counter BCD digits
Digits2[2]; //
extern char BlinkedDigit; // Blinked digit number
extern char TimerFlags; // Various timer flags
//
// Program memory data
//
extern __flash Mode ModeTable[]; // Timer mode table


Прежде всего, все создаваемые мою типы данных я описываю в файле заголовка. Лично мне удобно использовать typedef. Можно и без него, но для этого придется именовать структуры и при опрделении переменных данной структуры нужно все это выписывать.
А далее, при объявлении глобальных переменных любого типа в файле заголовке они описыаются как extern, а в одном из файлов проекта они описыаются как глобальные. Например, переменные Delay1, Delay2...
Область видимости пременных от типа же не зависит, механизм одинаков.

Составить ответ  |||  Конференция  |||  Архив

Ответы


Отправка ответа

Имя (обязательно): 
Пароль: 
E-mail: 

Тема (обязательно):
Сообщение:

Ссылка на URL: 
Название ссылки: 

URL изображения: 


Перейти к списку ответов  |||  Конференция  |||  Архив  |||  Главная страница  |||  Содержание  |||  Без кадра

E-mail: info@telesys.ru