请高手帮忙解释一下这段单片机的C语言程序?
voidTurnMotor(){unsignedchartmp;staticunsignedcharindex=0;unsignedcharcodeBeatCode[8]...
void TurnMotor()
{
unsigned char tmp;
static unsigned char index = 0;
unsigned char code BeatCode[8] =
{
0x0E,0x0C,0x0D,0x0B,0x03,0x07,0x06
};
if(beats !=0)
{
if(beats > 0)
{
index++;
index = index & 0x07;
beats--;
}
else
{ //没有理解!
index--;
index = index & 0x07;
beats++;
}
tmp = P1;
tmp = tmp & 0xF0;
tmp = tmp | BeatCode[index];
P1 = tmp;
}
else
{
P1 = P1 | 0x0F;
}
}
这index++倒是可以理解,那index--我就有点糊涂了,index初值为0,减1后不久变成了-1了,-1和
0x07按位与又变成1了,这样index老在1和0这样来回赋值,
unsigned char code BeatCode[8] =
{
0x0E,0x0C,0x0D,0x0B,0x03,0x07,0x06
};
上面的数组就没法遍历。 展开
{
unsigned char tmp;
static unsigned char index = 0;
unsigned char code BeatCode[8] =
{
0x0E,0x0C,0x0D,0x0B,0x03,0x07,0x06
};
if(beats !=0)
{
if(beats > 0)
{
index++;
index = index & 0x07;
beats--;
}
else
{ //没有理解!
index--;
index = index & 0x07;
beats++;
}
tmp = P1;
tmp = tmp & 0xF0;
tmp = tmp | BeatCode[index];
P1 = tmp;
}
else
{
P1 = P1 | 0x0F;
}
}
这index++倒是可以理解,那index--我就有点糊涂了,index初值为0,减1后不久变成了-1了,-1和
0x07按位与又变成1了,这样index老在1和0这样来回赋值,
unsigned char code BeatCode[8] =
{
0x0E,0x0C,0x0D,0x0B,0x03,0x07,0x06
};
上面的数组就没法遍历。 展开
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询