此问题在此处已有答案:
(9个答案)
昨天关门了。
我试图弄清楚这部分代码是如何工作的。REF状态&= 0X 07;
static uint8_t state = 0;
/* values for half step 0001, 0011, 0010, 0110, 0100, 1100, 1000, 1001*/
static const uint8_t HalfSteps[8] = {0x01, 0x03, 0x02, 0x06, 0x04, 0x0C, 0x08, 0x09};
uint8_t delay;
do
{
if (Count > 0)
{
PORTC = HalfSteps[state]; /* drive stepper to select state */
state++; /* step one state clockwise */
state &= 0x07; /* keep state within HalfStep table */
Count--;
状态++之后的部分将从0开始增加,我知道它在超过7之后重置为0。
但不知道这是如何实现的,我读过,它基本上意味着。
状态=状态+7,但这看起来不对。
任何简单的解释将不胜感激。
1条答案
按热度按时间f87krz0w1#
以下三行都是等效的:
其效果是确保状态始终小于8,并且7之后的状态是0,而不是8。