реклама на сайте
подробности

 
 
> Простой вопрос по инициализации переменной sfr, Объявление внешней sfr переменной в С
vassabi
сообщение Mar 22 2013, 15:00
Сообщение #1


Частый гость
**

Группа: Свой
Сообщений: 156
Регистрация: 18-02-13
Из: Киев
Пользователь №: 75 678



Сильно не пинайте, на С перешел неделю назад, пишу в MPLAB X IDE 1.7

Как объявить sfr переменную в одном файле, а инициализировать в другом (например, первый файл библиотечный - lib.c, второй рабочий - main.c)
Например, мне нужно чтобы lib.c работал с регистром PORTB.
В lib.c я делаю объявление
extern volatile unsigned int DATAPORT __attribute__ ((__sfr__));

Как мне теперь инициализировать ее в main.c?
И еще вопрос, как делать объявление и инициализацию, в случае если нужно работать с переменной, которая ссылается на бит в sfr регистре?

з.ы. Хелп в MPLAB X очень тяжелый для восприятия, по большей чати отправляет к ANSI стандарту С (литературу по С я курю параллельно)

Сообщение отредактировал vassabi - Mar 22 2013, 15:01
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
jack_avenger
сообщение Mar 24 2013, 20:48
Сообщение #2


Частый гость
**

Группа: Свой
Сообщений: 170
Регистрация: 30-06-05
Из: Киев
Пользователь №: 6 426



Цитата(vassabi @ Mar 25 2013, 00:26) *
Хочу просто библиотеку отдельной сборкой держать, тут все таки есть свои плюсы, если код оптимизирован или откомпилен жирным дорогим компилятором в триал периоде wink.gif

Сомневаюсь что это оптимально. Если у процессора куча режимов косвенной адресации то еще прокатит, во всех остальных случаях лучше когда адреса переменных известны на этапе компиляции
Go to the top of the page
 
+Quote Post
vassabi
сообщение Mar 24 2013, 20:54
Сообщение #3


Частый гость
**

Группа: Свой
Сообщений: 156
Регистрация: 18-02-13
Из: Киев
Пользователь №: 75 678



Цитата(jack_avenger @ Mar 24 2013, 22:48) *
....во всех остальных случаях лучше когда адреса переменных известны на этапе компиляции
На этапе компиляции чего?
Если речь о библиотеке и она откомпилена, то там адреса этой переменной не будет, она же extern.
Если речь о компиляции основной задачи к которой зацеплена уже откомпиленая библиотека, то тут она (переменная) и пропишеться по адресу.

Сообщение отредактировал vassabi - Mar 24 2013, 20:54
Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 29th July 2025 - 16:27
Рейтинг@Mail.ru


Страница сгенерированна за 0.01403 секунд с 7
ELECTRONIX ©2004-2016