マスキングとビットシフトの両方について質問があります。
次のコードがあります。
void WriteLCD(unsigned char word, unsigned commandType, unsigned usDelay)
{
// Most Significant Bits
// Need to do bit masking for upper nibble, and shift left by 8.
LCD_D = (LCD & 0x0FFF) | (word << 8);
EnableLCD(commandType, usDelay); // Send Data
// Least Significant Bits
// Need to do bit masking for lower nibble, and shift left by 12.
LCD_D = (LCD & 0x0FFF) | (word << 12);
EnableLCD(commandType, usDelay); // Send Data
}
「ワード」は 8 ビットで、4 ビットの LCD インターフェイスを介して入力されます。つまり、データを送信する前に、最上位ビットと最下位ビットを分割する必要があります。
LCD_D は 16 ビットの数値で、実際に何かを「実行」したい最上位ビットのみを渡します。彼らが何か他のことをしている場合に備えて、前の 12 ビットを保持したいと思います。
上位ニブルと下位ニブルを LCD_D に適切に渡すという点で、ビット マスキングと「ワード」のシフトに関する私のロジックは正しいですか?
助けてくれてありがとう!