unsigned char DATA_Buffer[32]; Выделяем массив под данные 32*8 = 256 бит unsigned char Index_bit; // Номер бита в байте (от 1 до 8) unsigned char Index_Byte; Порядковый номер байта в массиве (от 1 до 32) unsigned char Temp_Byte; // Временный байт для формирования из 8 битов 1-го байта volatile bit Flag_R; // Если был приём Flag_R = 1, если не было Flag_R = 0, устанавливается в другой функции
// Заполняем буфер if (Flag_R == 1) { Flag_R = 0; Сбрасываем флаг приёма
if (Index_bit>8) {Index_bit = 1; Index_byte++; Temp_Byte = 0; }; if (Index_byte>32) Index_byte = 1;
// Если принятый бит = 1 то записываем 1 в нужный разряд, иначе ничё не пишем, 0 там по-умолчанию if (Recieve_Data == 1) Temp_Byte = Temp_Byte | (1 << (Index_bit-1));
Index_bit++; увеличиваем на 1 указатель на бит } Таким образом я заполню 256 бит в 32 байтный массив