Замена shiftOut

На этом форуме Вы можете задать вопросы знатокам программы и автору.
Ответить
seri0shka
Лейтенант
Сообщения: 391
Зарегистрирован: 09 апр 2016, 12:17
Откуда: Кременчуг
Имя: Сергей

Замена shiftOut

Сообщение seri0shka »

Как заменить конструкцию типа
shiftOut(dataPin, clockPin, MSBFIRST, RazrDisplay);
на
for (byte c = 0; c < 8; c++) {
digitalWrite( dataPin , !!(RazrDisplay & (1 << c)));
delayMicroseconds( 1 );
digitalWrite( clockPin , HIGH);
delayMicroseconds( 1 );
digitalWrite( clockPin , LOW);
delayMicroseconds( 1 );
}
Нужно, чтобы ужать код на несколько байт. Приведённая замена не работает. Что я делаю не так?
И второе: целую неделю не мог попасть на сайт. Только у меня проблемы? С телефона и сейчас не заходит.
Anydy

Замена shiftOut

Сообщение Anydy »

seri0shka писал(а): 01 май 2018, 20:58И второе: целую неделю не мог попасть на сайт. Только у меня проблемы? С телефона и сейчас не заходит.
Не работал около суток ....с неделю назад.....посмотрите по сообщениям пользователей...с телефона сейчас проверю..)))
aidar_i
Полковник
Сообщения: 3360
Зарегистрирован: 24 дек 2016, 16:55
Откуда: Уфа
Имя: Айдар
Благодарил (а): 14 раз
Поблагодарили: 100 раз
Контактная информация:

Замена shiftOut

Сообщение aidar_i »

Я тоже не мог попасть, стёр кеш браузера и вроде нормально. Несколько раз было, чтобы попасть в форум нужно было сперва зайти на сайт. Напрямую не мог.

Отправлено спустя 24 секунды:
Сейчас пишу с телефона.
Anydy

Замена shiftOut

Сообщение Anydy »

Проверил с телефона, все работает.
Кэш браузера желательно периодически чистить, особенно если что то не работает)))
seri0shka
Лейтенант
Сообщения: 391
Зарегистрирован: 09 апр 2016, 12:17
Откуда: Кременчуг
Имя: Сергей

Замена shiftOut

Сообщение seri0shka »

Оказывается, правильно так:
for (byte c = 0; c < 8; c++) {
// digitalWrite( dataPin , !!(RazrDisplay & (1 << c))); // это для LSBFIRST
digitalWrite(dataPin, !!(RazrDisplay & (1 << (7 - с)))); // это правильный вариант для MSBFIRST
delayMicroseconds( 1 );
digitalWrite( clockPin , HIGH);
delayMicroseconds( 1 );
digitalWrite( clockPin , LOW);
delayMicroseconds( 1 );
}
Ответить

Вернуться в «Спросить у знатоков»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 5 гостей