虽然我知道看代码很蛋疼,但是实在没办法,求大家帮帮忙!
问题就是程序在执行下面这个子函数的时候一直循环,Debug了一下,确实跳不出来,找不到原因,代码如下:
void PatternOne()
{
char x,y;
uchar ucMoveSpeed = 15; /* 通过累积循环次数控制移动时间 */
bit bInitMark = 1; /* 清0数组标志位,1则清,0反之 */
bit bChangeSpeed = 0; /* 速度改变标志位,1则改变0反之 */
for (x = 0;x < 16;x++)
{
/* 清0数组标志位置1则清0,0反之 */
if (bInitMark && (8 != x))
{
/* (字模为阴码,亮为1,灭为0) */
Ini
tialTab(0x00);
}
/* 前八次,将字模从0维放到7维 */
if (x < 8)
{
for (y = 0;y < 8;y++)
{
DisTab[x][y] = PatternOneTab[0][y];
}
}
/* 后八次,从7维放到0维 */
else
{
for (y = 0;y < 8;y++)
{
if (bInitMark)
{DisTab[16 - x][y] = PatternOneTab[0][y];}
else
{DisTab[16 - x][y] = 0x00; }
}
}
/* 通过累积循环次数控制移动时间 */
for (y = 0;y < ucMoveSpeed;y++ )
{
Display1();
}
/* 第一次循环完成,处理标志位,从头循环*/
if ((15 == x) && (1 == bInitMark))
{
InitialTab(0x00);
/* 第二次循环不清0数组 */
bInitMark = 0;
/* 第二次循环改变移动速度 */
bChangeSpeed = 1;
/* 将x清0,进行第二次循环,由于本次
* 循环结束后x会自加1,所以减一修正
*/
x = -1;
}
/* 标志位置一,改变速度 */
if (bChangeSpeed)
{
if (x < 8)
{
ucMoveSpeed--;
}
else
{
ucMoveSpeed++;
}
}
}
}
你的代码太乱了,没看出问题来,你再调试下吧,重点注意控制循环的x、和bInitMark的变化
void PatternOne()
{
char x,y;
uchar ucMoveSpeed = 15;
bit bInitMark = 1;
bit bChangeSpeed = 0;
for (x = 0; x < 16; x++)
{
if (bInitMark && (8 != x))
InitialTab(0x00);
if (x < 8)
{
for (y = 0;y < 8;y++)
DisTab[x][y] = PatternOneTab[0][y];
}
else
{
for (y = 0;y < 8;y++)
{
if (bInitMark)
DisTab[16 - x][y] = PatternOneTab[0][y];
else
DisTab[16 - x][y] = 0x00;
}
}
for (y = 0;y < ucMoveSpeed;y++ )
Display1();
if (15 == x && 1 == bInitMark)
{
InitialTab(0x00);
bInitMark = 0;
bChangeSpeed = 1;
x = -1;
}
if (bChangeSpeed)
{
if (x < 8)
ucMoveSpeed--;
else
ucMoveSpeed++;
}
}
}
一周热门 更多>