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 ) }
}