• 已解决 73482 个问题
  • 已帮助 5993 位优秀工程师

单片机LED灯闪烁程序问题

zzzqiu 2020-11-11 浏览量:450
我把while(i--)改为while(i++),然后随意更改delay()中的数字,LED灯闪烁频率不变。为什么会这样?

href="http://www.51hei.com/bbs/forum.php?mod=attachment&aid=MjUzNDQ4fDRiNGU4YmM4fDE2MDQ5MzM4Njd8MHwxOTc3NzY%3D&nothumb=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)

mg id="aimg_253448" aid="253448" src="http://c.51hei.com/d/forum/202011/09/212344lq0hdk1knm1drddc.png" data-ke-src="http://c.51hei.com/d/forum/202011/09/212344lq0hdk1knm1drddc.png" zoomfile="http://c.51hei.com/d/forum/202011/09/212344lq0hdk1knm1drddc.png" file="http://c.51hei.com/d/forum/202011/09/212344lq0hdk1knm1drddc.png" class="zoom" data-ke-onclick="zoom(this this.src 0 0 0)" alt="51hei图片_20201109212323.png" title="51hei图片_20201109212323.png" w="454" width="454">
0 0 收起

我来回答

上传资料:
选择文件 文件大小不超过15M(格式支持:doc、ppt、xls、pdf、zip、rar、txt)
最佳答案
  • 看了你的截图,

    你的代码的问题是存在的,不知道你用的是多少位的单片机,如果是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()循环来嵌套的方式增大延时时间。

    • 发布于 2020-11-19
    • 举报
    • 评论 0
    • 0
    • 0

其他答案 数量:0

相关问题

问题达人换一批

单片机LED灯闪烁程序问题