Пытаясь понять смысл follwing строки в коде, приведенном ниже:пытаясь понять сдвиг влево в Avr код
ctrl =(0<<rs)|(0<<rw)|(1<<en);
Пожалуйста, дайте мне понять это.
#define LCD_DATA PORTB //LCD data port
#define ctrl PORTD
#define en PD2 // enable signal
#define rw PD1 // read/write signal
#define rs PD0 // register select signal
,
,
void LCD_cmd(unsigned char cmd)
{
LCD_DATA=cmd;
ctrl =(0<<rs)|(0<<rw)|(1<<en);
_delay_ms(1);
ctrl =(0<<rs)|(0<<rw)|(0<<en);
_delay_ms(50);
return;
}
Источник: http://www.electronicshub.org/interfacing-16x2-lcd-avr-microcontroller/#
Нам не хватает определений для PDO, PD1 и PD2, и нам не хватает фактического заявления о проблемах, которое у вас есть. если вы не понимаете, как работает левая смена, то у нас уже есть вопросы, которые охватывают это. Если вы можете орать нам, что такое PORTD, это определение (например, вставьте соответствующую регистрационную информацию из таблицы данных здесь), а затем дайте нам заголовок проблемы, который точно отражает проблему, которую вы пытаетесь решить, и дайте нам проблема, полезная для будущих посетителей, мы сможем помочь. –
@GeorgeStocker Извините, но я не согласен с обозначением 'off-topic'. Он не ищет «отладочную помощь» и имеет «ясную задачу»: «* Попытка понять смысл *». Скорее, мне кажется, что ОП (понятно) запутался в избыточном '(0 << rs) | (0 << rw)' в назначениях. Простой ответ заключается в том, что оставление этих элементов (даже при избыточности) делает код более читаемым, поскольку все присваивания будут выглядеть аналогично '(v1 << rs) | (v2 << rw) | (v3 << en)', когда '0 'terms are * not * omitted .. – dxiv
@dxiv Я немного встраивал программирование; нам не хватает важной информации, чтобы помочь ОП понять, почему это так. На самом базовом уровне эти значения представляют собой установленные настройки регистров; и они установлены явно по какой-то причине. Вопрос поставлен на удержание, чтобы дать ОП возможность исправить недостатки: вы ожидали бы, что название вопроса поможет кому-либо еще? Ожидаете ли вы, что кто-нибудь сможет решить вопрос «почему» в вопросе без необходимости отправляться в другое место? нам не хватает информации. Вот почему он держится. –