Here is a set of helper macros I have ported for use in my code.

These will allow you to use up to 32 bits.

`/* `

Binary constant generator macro

By Tom Torfs - donated to the public domain

All macro's evaluate to compile-time constants

*/

/*

HEX__(n)

Turn a numeric literal into a hex constant ( avoids problems with leading zeroes ).

8-bit constants max value 0x11111111, always fits in unsigned long

*/

#define HEX__(n) 0x##n##LU

/* 8-bit conversion function */

#define B8__( x ) ( ( x & 0x0000000FLU ) ? 1 : 0 ) + ( ( x & 0x000000F0LU ) ? 2 : 0 ) + ( ( x & 0x00000F00LU ) ? 4 : 0 ) + ( ( x & 0x0000F000LU ) ? 8 : 0 ) + ( ( x & 0x000F0000LU ) ? 16 : 0 ) + ( ( x & 0x00F00000LU ) ? 32 : 0 ) + ( ( x & 0x0F000000LU ) ? 64 : 0 ) + ( ( x & 0xF0000000LU ) ? 128 : 0 )

/* for upto 8-bit binary constants */

#define B8( d ) ( ( uint8_t ) B8__( HEX__( d ) ) )

/* for upto 16-bit binary constants, MSB first */

#define B16( dmsb, dlsb ) ( ( ( uint16_t ) B8( dmsb ) << 8 ) + B8( dlsb ) )

/* for upto 32-bit binary constants, MSB first */

#define B32( dmsb, db2, db3, dlsb ) ( ( ( uint32_t ) B8( dmsb ) << 24 ) + ( ( uint32_t ) B8( db2 ) << 16 ) + ( ( uint32_t ) B8( db3 ) << 8 ) + B8( dlsb ) )

Use them like this:

`uint8_t u_8BitData = B8(01010101); //85`

uint16_t u_16BitData = B16(10101010,01010101); //43605

uint32_t u_32BitData = B32(10000000,11111111,10101010,01010101); //2164238933

Could use in your code like this:

`int RelaySequence[menuSelections][32] = { //up to 32 cycles per menu`

{ //menu selection 1

B16( 1100000, 1100000 ),

B16( 1000000, 1000000 ) }

,

{ //menu selection 2

B16( 1110000, 1110000 ),

B16( 1011000, 1011000 ),

B16( 1001100, 1001100 ),

B16( 1000110, 1000110 ),

B16( 1000011, 1000011 ),

B16( 1100001, 1100001 ) }

}