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

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

Да и без цикло нормально(+)

Отправлено Quasy 22 августа 2007 г. 15:39
В ответ на: а если в цикле то так отправлено ы 22 августа 2007 г. 15:26


//////////////////////////////////////////////////////////////////////// Распаковка NUM_BIT-ных слов
////////////////////
unsigned char Area[] = {
BIN8(11111110), BIN8(00000011), BIN8(11111000),BIN8(00001111),
BIN8(11100000), BIN8(00111111), BIN8(10000000),
BIN8(11111110), BIN8(00000011), BIN8(11111000),BIN8(00001111),
BIN8(11100000), BIN8(00111111), BIN8(10000000),
BIN8(11111110), BIN8(00000011), BIN8(11111000),BIN8(00001111),
BIN8(11100000), BIN8(00111111), BIN8(10000000)
};
// in_Buf - входной массив
// nw - номер NUM_BIT-ного слова из массива
#define NUM_BIT 7
// нормировка возвращаемых значений
#define NORMA 0x7f
unsigned char UnPackData( unsigned char* in_Buf, unsigned int nw )
{
unsigned char first_byte;
unsigned int glue_word;
nw *= (unsigned int)NUM_BIT;
first_byte = (unsigned char)(nw / 8);
glue_word = (((unsigned int)in_Buf[ first_byte ] << 8) +
(unsigned int)in_Buf[ first_byte + 1 ]);
return (unsigned char)(( glue_word >> ( (sizeof(unsigned int) << 3 ) - ( nw - (first_byte << 3)) - NUM_BIT)) & NORMA );
}/*UnPackData*/
#undef NUM_BIT
#undef NORMA
///////////////////////////
int main( void )
{
printf("%d \n ", UnPackData( Area, 0 )); // 127
printf("%d \n ", UnPackData( Area, 1 )); // 0
printf("%d \n ", UnPackData( Area, 17 )); // 0
printf("%d \n ", UnPackData( Area, 18 )); // 127
return 0;
}/*main*/


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

Ответы


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

Сообщение:

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

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

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

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