本机c中的arduino`shiftOut()`函数

时间:2016-04-04 11:11:15

标签: c arduino bit

我试图在我的mcu上创建本机c中的arduino HttpContext.Items函数的等价物。

我想通过shiftOut()类型函数int gTempCmd = 0b00000011;发送命令shiftOut()

这个伪代码会是什么样子,所以我可以尝试将它映射到我的mcu的gpio函数中?

由于

MSBFIRST

1 个答案:

答案 0 :(得分:1)

考虑以下' psuedo-c ++'

代码的工作原理如下:

  • 根据MSBFIRST标志
  • ,通过与除MSB或LSB之外的所有零进行AND运算来获取字中的最高位或最低位
  • 将其写入输出引脚
  • 将命令向右移动一步
  • 脉冲时钟引脚
  • 对命令中的每一位重复8次

通过为重复次数添加参数,将其扩展到最多32位的任意位数是相当简单的

void shiftOut(GPIO dataPin, GPIO clockPin, bool MSBFIRST, uint8_t command)
{
   for (int i = 0; i < 8; i++)
   {
       bool output = false;
       if (MSBFIRST)
       {
           output = command & 0b10000000;
           command = command << 1;
       }
       else
       {
           output = command & 0b00000001;
           command = command >> 1;
       }
       writePin(dataPin, output);
       writePin(clockPin, true);
       sleep(1)
       writePin(clockPin, false);
       sleep(1)
    }
}