以下のコードは、マイクロコントローラーのプログラミングに使用されます。以下のコードが何をしているのか知りたいです。'|' は知っています。は OR と '&' AND ですが、行全体は何をしているのですか?
lcd_port = (((dat >> 4) & 0x0F)|LCD_EN|LCD_RS);
以下のコードは、マイクロコントローラーのプログラミングに使用されます。以下のコードが何をしているのか知りたいです。'|' は知っています。は OR と '&' AND ですが、行全体は何をしているのですか?
lcd_port = (((dat >> 4) & 0x0F)|LCD_EN|LCD_RS);
これを確認するには、おそらくチップのデータシートを見つける必要があるため、いくつかの推測:-
lcd_port
おそらく、メモリマップされたハードウェアの一部に直接マップされる変数です-おそらく英数字のLCDディスプレイです。
ディスプレイはおそらくデータを 4 ビットの「ニブル」として受け取り (したがって、シフト アンド オペレーション)、ポートの上位 4 ビットは制御信号です。
LCD_EN
おそらく LCD ENABLE の略語で、ポートで使用される制御線です。
LCD_RS
おそらく、LCD READ STROBE (または LCD REGISTER SELECT) の略語で、ポートで使用される別の制御ラインです。ポートへの書き込み中にこれらのビットを設定すると、実行する操作の種類がポートに伝えられる可能性があります。
使用しているハードウェアがHitachi HD44780またはその派生物であったとしても、まったく驚かないでしょう。
This code is shifting the bits of dat 4 bits to the right and then using & 0x0F to ensure it gets only those 4 least significant bits. It's then using OR to find which bits exist in that value OR LCD_EN OR LCD_RS and assigning that value to lcd_port.