Реклама на сайте English version  DatasheetsDatasheets

KAZUS.RU - Электронный портал. Принципиальные схемы, Datasheets, Форум по электронике

Новости электроники Новости Литература, электронные книги Литература Документация, даташиты Документация Поиск даташитов (datasheets)Поиск PDF
  От производителей
Новости поставщиков
В мире электроники

  Сборник статей
Электронные книги
FAQ по электронике

  Datasheets
Поиск SMD
Он-лайн справочник

Принципиальные схемы Схемы Каталоги программ, сайтов Каталоги Общение, форум Общение Ваш аккаунтАккаунт
  Каталог схем
Избранные схемы
FAQ по электронике
  Программы
Каталог сайтов
Производители электроники
  Форумы по электронике
Помощь проекту

Микроконтроллеры, АЦП, память и т.д Темы касающиеся микроконтроллеров разных производителей, памяти, АЦП/ЦАП, периферийных модулей...

Закрытая тема
Опции темы
Непрочитано 18.02.2010, 18:07   #1
Uz_Sleep_Walker
Прописка
 
Регистрация: 11.07.2008
Сообщений: 237
Сказал спасибо: 1,503
Сказали Спасибо 63 раз(а) в 44 сообщении(ях)
Uz_Sleep_Walker на пути к лучшему
По умолчанию преобразование 16bit числа на Си (нужна помощь)

Добрый день всем.
Задача такова:
Есть 16-ти разрядное число, для примера 1010.1111.0000.1100. Надо написать код который бы проверял последовательно биты числа справа на лево и в зависимости от того бит=1 или бит=0 выполнять процедуру1 или процедуру0 (в данном случае неважно что эти процедуры делают).

Как я понимаю, надо реализовать такой алгоритм



При указанном выше исходном числе, выполнение будет следующим:
1) Процедура0
2) Процедура0
3) Процедура1
4) Процедура1

5) Процедура0
6) Процедура0
7) Процедура0
Процедура0

9) Процедура1
10) Процедура1
11) Процедура1
12) Процедура1

13) Процедура0
14) Процедура1
15) Процедура0
16) Процедура1

Прошу помощи так как мои знания Си не позволяют решить эту задачу.
Реклама:
__________________
Ascii 0xC0 ED E0 F1 F2 E0 F1 E8 FF_CD EE E2 FB F5_D1 E5 ED F1 E5 E9
Uz_Sleep_Walker вне форума  
Непрочитано 18.02.2010, 18:28   #2
kison
Почётный гражданин KAZUS.RU
 
Регистрация: 13.12.2004
Сообщений: 3,172
Сказал спасибо: 11
Сказали Спасибо 692 раз(а) в 504 сообщении(ях)
kison на пути к лучшему
По умолчанию Re: преобразование 16bit числа на Си (нужна помощь)

Код:
uint16_t Var;	// исходная переменная 
uint8_t Count_bit; // счетчик бит
uint16_t Mask;	// маска

// Func1() - функция для единичного значения разряда
// Func0() - для нулевого

Var = 0xF0F0; // взято от "фонаря"
Count_bit = 16;
Mask = 0x0001;
while(Count_bit--)
	{
	if(Var & Mask) Func1(); else Func0();
	Mask ‹‹= 1;
	}
kison вне форума  
Сказали "Спасибо" kison
Uz_Sleep_Walker (19.02.2010)
Непрочитано 18.02.2010, 19:30   #3
urry
Почётный гражданин KAZUS.RU
 
Аватар для urry
 
Регистрация: 06.02.2007
Сообщений: 1,340
Сказал спасибо: 3
Сказали Спасибо 106 раз(а) в 66 сообщении(ях)
urry на пути к лучшему
По умолчанию Re: преобразование 16bit числа на Си (нужна помощь)

можно съэкономить переменную
Код:
uint16_t Var;	// исходная переменная 
uint16_t Mask;	// маска
// Func1() - функция для единичного значения разряда
// Func0() - для нулевого
Var = 0xF0F0; // взято от "фонаря"
Mask = 0x0001;
while(mask)
	{
	if(Var & Mask) Func1(); else Func0();
	Mask ‹‹= 1;
	}
__________________
warez
urry вне форума  
Сказали "Спасибо" urry
Uz_Sleep_Walker (19.02.2010)
Непрочитано 18.02.2010, 19:48   #4
kison
Почётный гражданин KAZUS.RU
 
Регистрация: 13.12.2004
Сообщений: 3,172
Сказал спасибо: 11
Сказали Спасибо 692 раз(а) в 504 сообщении(ях)
kison на пути к лучшему
По умолчанию Re: преобразование 16bit числа на Си (нужна помощь)

Сообщение от urry Посмотреть сообщение
можно съэкономить переменную
Можно, но код станет хуже - и больше и медленнее. Переменная Count_bit локальная, размещается в регистре. Можете проверить.
kison вне форума  
Непрочитано 19.02.2010, 15:49   #5
Uz_Sleep_Walker
Прописка
 
Регистрация: 11.07.2008
Сообщений: 237
Сказал спасибо: 1,503
Сказали Спасибо 63 раз(а) в 44 сообщении(ях)
Uz_Sleep_Walker на пути к лучшему
По умолчанию Re: преобразование 16bit числа на Си (нужна помощь)

Благодарю за помощь. Буду разбираться с предложеной прграммой.
__________________
Ascii 0xC0 ED E0 F1 F2 E0 F1 E8 FF_CD EE E2 FB F5_D1 E5 ED F1 E5 E9
Uz_Sleep_Walker вне форума  
Закрытая тема

Закладки


Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Пытаюсь работать с SD card. Нужна помощь uk8amk Микроконтроллеры, АЦП, память и т.д 29 15.01.2011 13:20
Нужна помощь ORION tv8201 offo Видеотехника 43 30.04.2010 08:12
Подбор элемента... нужна помощь... stopol Информация по радиокомпонентам 5 30.11.2009 12:21
Нужна помощь с микросхемой LM317 stg_44 Электроника - это просто 2 13.10.2009 14:30
Нужна помощь в поиске схемы novoaidar Электроника средств транспорта 9 07.10.2009 17:42


Часовой пояс GMT +4, время: 12:00.


Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot