Телесистемы
 Разработка, производство и продажа радиоэлектронной аппаратуры
На главную   | Карта сайта | Пишите нам | В избранное
Требуется программист в Зеленограде
- обработка данных с датчиков; ColdFire; 40 тыс.
e-mail:jobsmp@pochta.ru

Телесистемы | Электроника | Конференция «Микроконтроллеры и их применение»

Вот накалякал начало исходника, которое делает этот массив... (внутри)

Отправлено ZoltriX (72.167.183.33) 13 января 2011, г. 01:49
В ответ на: Хоть из двух байт его слепи, хоть union используй - это азы отправлено MBedder 13 января 2011, г. 01:42

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, устанавливается в другой функции

// Начальные установки
Index_bit = 1;
Index_byte = 1;
Temp_Byte = 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 байтный массив


Составить ответ | Вернуться на конференцию

Ответы


Отправка ответа
Имя*: 
Пароль: 
E-mail: 
Тема*:

Сообщение:

Ссылка на URL: 
URL изображения: 

если вы незарегистрированный на форуме пользователь, то
для успешного добавления сообщения заполните поле, как указано ниже:
введите число 567:

Перейти к списку ответов | Конференция | Раздел "Электроника" | Главная страница | Карта сайта

Rambler's Top100 Рейтинг@Mail.ru
 
Web telesys.ru