クロック信号に基づいてバイトの個々のビットをシフトアウトする関数を C で記述しようとしています。これまでのところ、私はこれを思いつきました...
void ShiftOutByte (char Data)
{
int Mask = 1;
int Bit = 0;
while(Bit < 8)
{
while(ClkPin == LOW);
DataPin = Data && Mask;
Mask = Mask * 2;
Bit++;
}
}
ここで、DataPin はデータをシフトアウトするポート ピンを表し、ClkPin はクロック ポート ピンです。
バイトの LSB から開始して、デバイスに 8 ビットをシフトアウトさせたいと考えています。何らかの理由で、出力ピンが常に高いままです。ポート ピンが適切に構成されていることは確かなので、これは純粋に論理的な問題です。