1

以下のコードは、マイクロコントローラーのプログラミングに使用されます。以下のコードが何をしているのか知りたいです。'|' は知っています。は OR と '&' AND ですが、行全体は何をしているのですか?

lcd_port = (((dat >> 4) & 0x0F)|LCD_EN|LCD_RS);
4

5 に答える 5

1

これを確認するには、おそらくチップのデータシートを見つける必要があるため、いくつかの推測:-

lcd_portおそらく、メモリマップされたハードウェアの一部に直接マップされる変数です-おそらく英数字のLCDディスプレイです。

ディスプレイはおそらくデータを 4 ビットの「ニブル」として受け取り (したがって、シフト アンド オペレーション)、ポートの上位 4 ビットは制御信号です。

LCD_ENおそらく LCD ENABLE の略語で、ポートで使用される制御線です。

LCD_RSおそらく、LCD READ STROBE (または LCD REGISTER SELECT) の略語で、ポートで使用される別の制御ラインです。ポートへの書き込み中にこれらのビットを設定すると、実行する操作の種類がポートに伝えられる可能性があります。

使用しているハードウェアがHitachi HD44780またはその派生物であったとしても、まったく驚かないでしょう。

于 2013-04-01T19:03:37.243 に答える
0

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.

于 2013-04-01T19:01:33.307 に答える