Ответ: или так. Автор, по моему, Аскольд Волков.
// Определение
#define _bitset(bits)\
((unsigned int)(\
(bits%010)|\
(bits/010%010)<<1|\
(bits/0100%010)<<2|\
(bits/01000%010)<<3|\
(bits/010000%010)<<4|\
(bits/0100000%010)<<5|\
(bits/01000000%010)<<6|\
(bits/010000000%010)<<7|\
(bits/0100000000%010)<<8|\
(bits/01000000000%010)<<9|\
(bits/010000000000%010)<<10|\
(bits/0100000000000%010)<<11|\
(bits/01000000000000%010)<<12|\
(bits/010000000000000%010)<<13|\
(bits/0100000000000000%010)<<14|\
(bits/01000000000000000%010)<<15))
#define BINARY( bits ) _bitset(0##bits)
// использование
P3DIR |= BINARY( 00001111 );
P2SEL = BINARY( 00000000 );
#define SPI_State BINARY( 00011000 )
#define ERR_0 BINARY( 1000000010000000 )
static const char ini_prg_ind[] =
{ BINARY( 00000 ),
BINARY( 00000 ),
BINARY( 00000 ),
BINARY( 10000 ),
0xff
};