31.12.2018, 23:17
|
|
Вид на жительство
Регистрация: 11.08.2015
Сообщений: 409
Сказал спасибо: 17
Сказали Спасибо 37 раз(а) в 28 сообщении(ях)
|
Re: Условие оператора If - непонятка
Я же сразу сказал, чтобы автор не использовал 2-ой код - 2 сдвига нам никак не надо.
1-ый код пусть берет - да и все.
А по поводу производительности: да у него там задержки по 100(мс) - какая пофиг разница из массива читаются данные или сдвигаются. Я против массива в этой ситуации. - Проще сдвинуть.
|
|
|
|
01.01.2019, 02:42
|
|
Прописка
Регистрация: 25.03.2013
Адрес: Глубокое замкадье
Сообщений: 216
Сказал спасибо: 3
Сказали Спасибо 71 раз(а) в 55 сообщении(ях)
|
Re: Условие оператора If - непонятка
Еще так можно.
Самый наверное быстрый и компактный вариант...
Код:
|
uint8_t i;
for (i=0x80; i ; i››=1)
{
DATA_REG=(Temp & i)?1:0;
delay_ms(100);
CLK_REG=1;
delay_ms(100);
CLK_REG=0;
} |
Хотя delay_ms меня сильно смущает. Может быть лучше использовать таймер для таких больших задержек.
|
|
|
|
01.01.2019, 19:57
|
|
Гражданин KAZUS.RU
Регистрация: 26.12.2005
Сообщений: 596
Сказал спасибо: 24
Сказали Спасибо 68 раз(а) в 45 сообщении(ях)
|
Re: Условие оператора If - непонятка
Сообщение от rexdn
|
Не совсем.
Предположим Temp=0b0100 0000, сдвинутая единица, скажем, будет давать число, равное Temp и поразрядное! И двух значений будет равно Temp - т.е. 64, но ни как не 1 или 0.
Как в If в таком случае, выполняется условие? Не доезжает голова моя что то...
|
ТС путает логическую операцию с логическим сравнением.
Логическое "И" - это байтовая операция и результатом будет байт, а логическое сравнение - это битовая операция и результатом будет бит.
Условие (1‹‹(i-1)) - это сдвиг "1" на число позиций, указанное выражением (j-1). Т.е. это как бы сдвиг указателя (в даном случае "1") на конкретный бит Temp. Потом производится сравнение этого бита в Temp с "1" - только этого конкретного бита, остальные биты Temp во внимание не берутся. В этом суть логической операции сравнения. Результатом этого сравнения будет либо true либо false. Других значений указанный бит не имеет. Вот это значение и попадает в оператор IF.
P.S.
Это условие можно образно назвать "проверкой какого-то конкретного бита в переменной Temp".
Так будет понятно?
Последний раз редактировалось pifa; 01.01.2019 в 20:11.
|
|
|
|
01.01.2019, 20:28
|
|
Гуру портала
Регистрация: 06.05.2005
Адрес: Краснодар, возле укротворного моря.
Сообщений: 19,121
Сказал спасибо: 2,569
Сказали Спасибо 11,944 раз(а) в 5,991 сообщении(ях)
|
Re: Условие оператора If - непонятка
pifa, не изобретайте уже изобретенное. "Все украдено до нас"(с)
Сообщение от pifa
|
Условие (1‹‹(i-1)) - это
|
формирование маски, в которой только одна единица в соответствующем разряде.
Сообщение от pifa
|
ТС путает логическую операцию с логическим сравнением.
|
Коряво называете сущности. Есть "поразрядные" операции, результат которых - байт, и есть "логические", результат которых - бит (true или false) или байт, нулевое значение которого соответствует логическому значению "false", а ненулевое - логическому значению "true". И ведь об этом уже говорили! Но Вы не слушаете...
__________________
Не бейте больно, ежели чо, ну не удержался... А вааще,
"Мы за все хорошее, против всей х..., По лугам некошеным чтобы шли ступни,
Чтобы миром правила правда, а не ложь, Мы за все хорошее, нас не на...!
..." (Ленинград)
Я не несу ответственности за свои действия в Вашей голове.
|
|
|
|
01.01.2019, 20:36
|
|
Гражданин KAZUS.RU
Регистрация: 26.12.2005
Сообщений: 596
Сказал спасибо: 24
Сказали Спасибо 68 раз(а) в 45 сообщении(ях)
|
Re: Условие оператора If - непонятка
Сообщение от akegor
|
pifa, не изобретайте уже изобретенное. "Все украдено до нас"(с)
|
Да всё это я знаю. Но писал я это не для Вас, а для ТС. А вот ему это не понятно. И я постарался объяснить это ему "на пальцах". Поэтому и получается это "коряво", но надеюсь, будет понятно (ему). А то, что Вы правильно написали постом выше, снова приведет ТС в "ступор".
|
|
|
|
01.01.2019, 21:21
|
|
Гуру портала
Регистрация: 06.05.2005
Адрес: Краснодар, возле укротворного моря.
Сообщений: 19,121
Сказал спасибо: 2,569
Сказали Спасибо 11,944 раз(а) в 5,991 сообщении(ях)
|
Re: Условие оператора If - непонятка
pifa, я, может, не совсем корректно написал - извиняйте, ежли чо.
Сообщение от pifa
|
ему это непонятно
|
Ну, тут уж каждый пытается объяснять в силу своего понятия непонятия вопрошающего.
Легче, когда задают вопросы. Конкретные. Так понятней, что непонятно.
__________________
Не бейте больно, ежели чо, ну не удержался... А вааще,
"Мы за все хорошее, против всей х..., По лугам некошеным чтобы шли ступни,
Чтобы миром правила правда, а не ложь, Мы за все хорошее, нас не на...!
..." (Ленинград)
Я не несу ответственности за свои действия в Вашей голове.
|
|
|
|
02.01.2019, 00:29
|
|
Почётный гражданин KAZUS.RU
Регистрация: 20.03.2007
Адрес: "Братское кольцо враждебности", т.е. ближайшее заМКАДье.
Сообщений: 7,069
Сказал спасибо: 3,054
Сказали Спасибо 3,223 раз(а) в 2,188 сообщении(ях)
|
Re: Условие оператора If - непонятка
Сообщение от rexdn
|
проверено в железе, на ATTiny13.
|
А ведь можно было и по USI несчастный байт перегнать. Хотя и с overhead'ом, но в железе - больше чем на половину.
__________________
Экзорцист 40-го уровня.
|
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 23:12.
|
|