В настоящее время я пытаюсь управлять шаговым двигателем, используя простые полные шаги. Это означает, что я в данный момент вывожусь последовательность значений, как это:Побитовое вращение справа от 4-битного значения
1000
0100
0010
0001
Я думал, что простой способ сделать это было просто взять мое 4-битное значение, и после каждого шага выполнения поворота правой операции. «Кодекс», очевидно, не следует какой-либо синтаксиса, это просто есть, чтобы проиллюстрировать мои мысли:
step = 1000;
//Looping
Motor_Out(step)
//Rotate my step variable right by 1 bit
Rotate_Right(step, 1)
Моя проблема заключается в том, что, очевидно, не любые 4-битовые простые типы данных, которые я могу использовать для этого , и если я использую 8-битный unsigned int, я в конечном итоге поверну его 1 к MSB, а это означает, что 4-битное значение, которое меня действительно интересует, превратится в 0000 за несколько шагов.
Я читал, что для решения этой проблемы вы можете использовать структуры и битовые поля, но большинство из того, что я читаю, говорит мне, что это очень плохая идея.
У вас будет только 4 значения или любое 4-битное число? – Swanand
Хорошо управляя шаговым двигателем с помощью полных шагов, я просто выводил вышеприведенную последовательность как высокие/низкие значения на 4 контакта, которые я назначил. Чтение ответов ниже, похоже, дало мне возможность решить эту проблему. Я не совсем уверен, почему я не просто думал о наборе значений символов «X», которые я просто вращаю. – NT93
http://stackoverflow.com/questions/15648116/bit-shifting-a-character-with-wrap-c –