我在keil5中写入一段简单的流水灯代码,其中有一个片段如下:
Delay100ms(); for (i = 0; i < 8; i++) { P1 <<= 1; Delay100ms(); }
这一段代码正常运行,但是正当我仿照写下:
for (i = 7; i >= 0; i--)
{
P1=P1+m;
Delay100ms();
m=m/2;
}
系统自动生成了hex文件,在proteus仿真中,流水灯只运行了一遍就停止了,但是程序外层是一个while(1)的循环,不可能停下。
后来我在调试的过程中发现如上代码是死循环。改为如下之后程序正常运行了。
具体原因还望大佬点明。
for (i = 0; i <= 7; i++)
{
P1=P1+m;
Delay100ms();
m=m/2;
}