找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2078|回复: 6
收起左侧

单片机LED灯闪烁程序问题

[复制链接]
ID:841242 发表于 2020-11-9 21:26 | 显示全部楼层 |阅读模式
我把while(i--)改为while(i++),然后随意更改delay()中的数字,LED灯闪烁频率不变。为什么会这样?
51hei图片_20201109212323.png
回复

使用道具 举报

ID:405193 发表于 2020-11-9 22:17 | 显示全部楼层
没有这样写的,一般delay 都是小数值,并且100000已经超出U16的范围了,大数值延时需要定时器来做。
回复

使用道具 举报

ID:391087 发表于 2020-11-9 22:51 | 显示全部楼层
U16最大值是65535,你可以软件仿真调试一下,里面有个sec时间可以知道延时时间对不对
回复

使用道具 举报

ID:654028 发表于 2020-11-10 09:31 | 显示全部楼层
你i++最终会超过i的最大值,然后就会变成0,然后就退出了死循环。但是基本上不会这样写,不好计算
回复

使用道具 举报

ID:841510 发表于 2020-11-10 14:16 | 显示全部楼层
感觉可以通过for来控制频率
回复

使用道具 举报

ID:339654 发表于 2020-11-11 16:57 | 显示全部楼层
编写程序要考虑变量类型的范围,不然程序编译通过却运行出错
回复

使用道具 举报

ID:838395 发表于 2020-11-12 11:56 | 显示全部楼层
别用while用delay函数来控制
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表