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

 
 
> вопрос про define и ##
_Diman_
сообщение Feb 6 2009, 16:39
Сообщение #1


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

Группа: Свой
Сообщений: 92
Регистрация: 8-03-05
Пользователь №: 3 160



Код
#define DB4        0    //указать номер вывода
#define PORT_DB4    B    //указать  порт вывода

#define SET_PORT_1(port, bit) (PORT##port |= _BV(bit))
#define SET_PORT_0(port, bit) (PORT##port &= ~_BV(bit))
#define SET_DDR_1(port, bit) (DDR##port |= _BV(bit))
#define SET_DDR_0(port, bit) (DDR##port &= ~_BV(bit))

#define DB4_1    SET_PORT_1(PORT_DB4,DB4)
#define DB4_0    SET_PORT_0(PORT_DB4,DB4)


Не получается так. Склеивается как PORTPORT_DB4. Как сделать что бы PORT_DB4 заменялся на В при вызове макроса?
Хочется в начале файла указать вывод и порт и пользоваться DB4_1 вместо SET_PORT_1(В,DB4).
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
SergeyTT
сообщение Feb 6 2009, 18:45
Сообщение #2


Участник
*

Группа: Участник
Сообщений: 53
Регистрация: 3-07-06
Из: Харьков
Пользователь №: 18 533



это Whenever?

А если сделать вот так:

CODE
#define DB4 0 //указать номер вывода
#define PORT_DB4 B //указать порт вывода

//#define SET_PORT_1(port, bit) (PORT##port |= _BV(bit))
#define SET_PORT_BIT(port, bit) (port |= _BV(bit))

//#define SET_PORT_0(port, bit) (PORT##port &= ~_BV(bit))
#define CLEAR_PORT_BIT(port, bit) (port &= ~_BV(bit))


//#define SET_DDR_1(port, bit) (DDR##port |= _BV(bit))
#define SET_DDR_BIT(port, bit) (port |= _BV(bit))

//#define SET_DDR_0(port, bit) (DDR##port &= ~_BV(bit))
#define CLEAR_DDR_BIT(port, bit) (port &= ~_BV(bit))


#define DB4_1 SET_PORT_BIT(B,DB4)
#define DB4_0 CLEAR_PORT_BIT(B4,DB4)

.........
DB4_1;
DB4_0;
.........


и клея не надо.
Только кривовато все это выглядывает...
Причина редактирования: Уменьшение видимого размера сообщения.
Go to the top of the page
 
+Quote Post



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

 


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


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