В настоящее время я пытаюсь управлять шаговым двигателем, используя простые полные шаги. Это означает, что в настоящее время я выводил последовательность таких значений:
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-битный беззнаковый int, я в конечном итоге поверну его 1 к MSB, что означает 4-битное значение, которое меня действительно интересует, превратится в 0000 за несколько шагов.
Я читал, что вы можете использовать структуры и бит-поля для решения этой проблемы, но большинство из того, что я читаю, говорит мне, что это очень плохая идея.