href="http://www.51hei.com/bbs/forum.php?mod=attachment&aid=MjUzNDQ4fDRiNGU4YmM4fDE2MDQ5MzM4Njd8MHwxOTc3NzY%3D¬humb=yes" data-ke-src="http://www.51hei.com/bbs/forum.php?mod=attachment&aid=MjUzNDQ4fDRiNGU4YmM4fDE2MDQ5MzM4Njd8MHwxOTc3NzY%3D&nothumb=yes" data-ke-onmouseover="showMenu({'ctrlid':this.id'pos':'12'})" id="aid253448" class="xw1" target="_blank">51hei图片_20201109212323.png (19.52 KB 下载次数: 0)
下载附件 href="javascript:;" data-ke-src="javascript:;" data-ke-onclick="showWindow(this.id this.getAttribute('url') 'get' 0);" id="savephoto_253448" url="home.php?mod=spacecp&ac=album&op=saveforumphoto&aid=253448&handlekey=savephoto_253448">保存到相册
2020-11-9 21:23 上传 href="javascript:;" data-ke-src="javascript:;" data-ke-onclick="imageRotate('aimg_253448' 1)"> href="javascript:;" data-ke-src="javascript:;" data-ke-onclick="imageRotate('aimg_253448' 2)">
看了你的截图,
你的代码的问题是存在的,不知道你用的是多少位的单片机,如果是16位的,你的int类型就是16位的,最大值也就是65535,但是你传入的参数是100000,都比65535大了,因为是无符号的,不会有负数,所以你传入100000之后实际传入的只有后面16位,100000的二进制为00011000011010100000,只取后面16位:1000011010100000,转换成十进制是34464,就相当于你传入到delay函数的参数值是34464。所以你的delay函数位while(i--)的时候,就是从34464减到0就会退出。延时时间就是34464个周期,你改成了while(i++)之后,你传入的参数其实也是34464,当你加到65536的时候就会变成0,然后退出,相当于你运行了65536-34464=31071,相当于while()循环运行了31071个周期,31071和34464志超了3000个循环,你用肉眼是很难区分的。
你可以对代码进行修改,传入的参数变小,传入1000,然后你就可以看到明显的变化了,或者增大延时时间,使用循环嵌套的方式,就是使用两个while()循环来嵌套的方式增大延时时间。