Не будет работать ваша программа правильно

Во-первых, если команда 16-и битная, то почему вы передаете в программу char? У вас тип char как 16-и битный определен?
Во-вторых, зачем вы сдвигаете маску на i бит в каждом цикле? Сдвигать нужно только на один бит за каждый проход цикла.
В-третьих, что такое P1_1? Битовая переменная или адрес порта? Если адрес порта, то у вас будет вывод на всем пинам этого порта, а не в один требуемый.
В-четвертых, а после вывода каждого бита разве не нужно временной интервал выдерживать? "Молотите" с максимальной частотой?
В общем вот вариант. Макросы SET_BITCMD, RESET_BITCMD, CMD_DELAY сами определите. Ну и функцию задержки delay тоже.
Код
#define SET_BITCMD
#define RESET_BITCMD
#define CMD_DELAY
void tx_data(unsigned int command)
{ unsigned int i, mask = 0x01;
for (i=0; i<16; i++)
{ if ((command&mask)==0) RESET_BITCMD;
else SET_BITCMD;
mask<<=1;
delay(CMD_DELAY);
}
}