Реклама на сайте English version  DatasheetsDatasheets

KAZUS.RU - Электронный портал. Принципиальные схемы, Datasheets, Форум по электронике

Новости электроники Новости Литература, электронные книги Литература Документация, даташиты Документация Поиск даташитов (datasheets)Поиск PDF
  От производителей
Новости поставщиков
В мире электроники

  Сборник статей
Электронные книги
FAQ по электронике

  Datasheets
Поиск SMD
Он-лайн справочник

Принципиальные схемы Схемы Каталоги программ, сайтов Каталоги Общение, форум Общение Ваш аккаунтАккаунт
  Каталог схем
Избранные схемы
FAQ по электронике
  Программы
Каталог сайтов
Производители электроники
  Форумы по электронике
Помощь проекту

Микроконтроллеры, АЦП, память и т.д Темы касающиеся микроконтроллеров разных производителей, памяти, АЦП/ЦАП, периферийных модулей...

 
Опции темы
Непрочитано 29.09.2008, 16:22  
serb-radio
Гражданин KAZUS.RU
 
Регистрация: 01.01.2007
Адрес: Таганрог
Сообщений: 571
Сказал спасибо: 26
Сказали Спасибо 213 раз(а) в 91 сообщении(ях)
serb-radio на пути к лучшему
По умолчанию как написать макрос-функцию в Си Winavr

Пишу в *.с файле:

#define lcd_port_config(void)
{
data_port=0xff;
data_ddr= 0xff;

ctr_port|=_BV(rd);
ctr_ddr|=_BV(rd);

ctr_port|=_BV(wr);
ctr_ddr|=_BV(wr);

ctr_port|=_BV(ce);
ctr_ddr|=_BV(ce);

//ctr_port|=_BV(md2);
ctr_port&=~_BV(md2);
ctr_ddr|=_BV(md2);

//ctr_port|=_BV(fs1);
ctr_port&=~_BV(fs1);
ctr_ddr|=_BV(fs1);

ctr_port|=_BV(c_d);
ctr_ddr|=_BV(c_d);

ctr_port|=_BV(rst);
ctr_ddr|=_BV(rst);
}
в *.h файле:
inline void lcd_port_config(void);
компилятор выводит ошибки (привожу не все, но они одинаковы):
t6963c.c:5: error: syntax error before '{' token
t6963c.c:7: error: syntax error before "volatile"
t6963c.c:9: error: syntax error before "volatile"
Знатоки помогите, шо я делаю неправильно., макросы-функции не разу ни писал
Реклама:
serb-radio вне форума  
Непрочитано 29.09.2008, 16:38  
urry
Почётный гражданин KAZUS.RU
 
Аватар для urry
 
Регистрация: 06.02.2007
Сообщений: 1,340
Сказал спасибо: 3
Сказали Спасибо 106 раз(а) в 66 сообщении(ях)
urry на пути к лучшему
По умолчанию

Я таки верю.. Насчет ошибок ...Если Вы не передаете параметры в макрос - (void) то с чего знать, ху из эти переменные ?_BV ce и пр ??? Или фунция с глобальными переменными, или макрос, так что определитесь...
Что значит фунция - макрос ??? Когда испрользуется инлайн ? Если жаба давит выделять оперативку в стек или стека физически не хватает, чтобы вставит функцию в фунцию - вот только тогда !!! оформляют фунцию как инлайн - макрос, чтобы стек не брала. Что увеличивает код, но снижает нагрузку на стек.
Или я чего-то не понял ??7
urry вне форума  
Непрочитано 30.09.2008, 00:15  
kison
Почётный гражданин KAZUS.RU
 
Регистрация: 13.12.2004
Сообщений: 3,172
Сказал спасибо: 11
Сказали Спасибо 692 раз(а) в 504 сообщении(ях)
kison на пути к лучшему
По умолчанию

А цель всего этого? Получить инлайновую функцию?
Тогда прямо в h файле:
Код:
static inline void lcd_port_config(void) __attribute__((always_inline));

void lcd_port_config(void)
{
// тут собственно тело функции

}
Функция будет доступна во всех с файлах, в которых подключен данный хэдер.
Или цель в чем то другом?
kison вне форума  
Непрочитано 30.09.2008, 08:47  
serb-radio
Гражданин KAZUS.RU
 
Регистрация: 01.01.2007
Адрес: Таганрог
Сообщений: 571
Сказал спасибо: 26
Сказали Спасибо 213 раз(а) в 91 сообщении(ях)
serb-radio на пути к лучшему
По умолчанию

Я УЖЕ САМ РАЗОБРАЛСЯ, ВСЕМ ОТКЛИКНУВШИМСЯ СПАСИБА
serb-radio вне форума  
Непрочитано 30.09.2008, 09:02  
serb-radio
Гражданин KAZUS.RU
 
Регистрация: 01.01.2007
Адрес: Таганрог
Сообщений: 571
Сказал спасибо: 26
Сказали Спасибо 213 раз(а) в 91 сообщении(ях)
serb-radio на пути к лучшему
По умолчанию

Извините, еще один вопрос:
Напишите кто-нибудь образец написания функции-макроса на си (они мне необходимы для ускорени работы программы):
serb-radio вне форума  
Непрочитано 30.09.2008, 10:39  
urry
Почётный гражданин KAZUS.RU
 
Аватар для urry
 
Регистрация: 06.02.2007
Сообщений: 1,340
Сказал спасибо: 3
Сказали Спасибо 106 раз(а) в 66 сообщении(ях)
urry на пути к лучшему
По умолчанию

А смысл выкладывать??? В любом апноуте - валом.
Например
Код:
#define	DelayUs(x)	{ unsigned char _dcnt;   
_dcnt = (((long)(x))*(long)(XTAL_FREQ))/(long)(12MHZ);  
			  while(--_dcnt != 0) 
				  continue; }
urry вне форума  
Непрочитано 30.09.2008, 11:07  
serb-radio
Гражданин KAZUS.RU
 
Регистрация: 01.01.2007
Адрес: Таганрог
Сообщений: 571
Сказал спасибо: 26
Сказали Спасибо 213 раз(а) в 91 сообщении(ях)
serb-radio на пути к лучшему
По умолчанию

спасибо
serb-radio вне форума  
Непрочитано 30.09.2008, 11:08  
serb-radio
Гражданин KAZUS.RU
 
Регистрация: 01.01.2007
Адрес: Таганрог
Сообщений: 571
Сказал спасибо: 26
Сказали Спасибо 213 раз(а) в 91 сообщении(ях)
serb-radio на пути к лучшему
По умолчанию

тема закрыта
serb-radio вне форума  
 

Закладки
Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как использовать функцию printf для выовода на второй USART igla_85 Микроконтроллеры, АЦП, память и т.д 1 01.06.2009 02:35
Знатокам С! Как передать в функцию порт? arkbox Микроконтроллеры, АЦП, память и т.д 52 26.02.2008 17:06
CVAVR передача в функцию PORTА.X как переменную woroba Микроконтроллеры, АЦП, память и т.д 5 10.12.2007 12:49
Знатоки Си, помогите: Как обьявить функцию? Hoksmur Микроконтроллеры, АЦП, память и т.д 4 09.10.2007 19:36
CVAVR как программно вызвать функцию обработки прерывания??? woroba Микроконтроллеры, АЦП, память и т.д 7 07.03.2007 11:54


Часовой пояс GMT +4, время: 04:19.


Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot