普中开源电子分享网

 找回密码
 立即注册
搜索
查看: 2517|回复: 5

LED闪烁程序,循环次数更多为什么闪烁频率越短呢?

[复制链接]

1

主题

4

帖子

15

积分

新手上路

Rank: 1

积分
15
发表于 2021-7-31 12:11:32 | 显示全部楼层 |阅读模式
小白求助,刚学到LED闪烁这里,为什么循环次数越多,反而闪烁频率越慢呢?

这是while循环3000000次的程序,大概0.7-0.8秒闪烁一次;
C:\Users\amin\Desktop\1627704476(1).jpg

这是while循环5000000次的程序,大概0.4-0.5秒闪烁一次


回复

使用道具 举报

1

主题

4

帖子

15

积分

新手上路

Rank: 1

积分
15
 楼主| 发表于 2021-7-31 12:12:05 | 显示全部楼层
本帖最后由 allen988726 于 2021-7-31 12:14 编辑

图片加载不出来,我复制过来,这是执行3000000次1--,闪烁更慢一点。
#include <reg52.h>  unsigned int ht;
void main()
{  P2=170;            
ht=3000000;
while(ht--);
P2=255;
ht=3000000;  
while(ht--);                     
}


这是执行5000000次1--,闪烁反而更快一点。
#include <reg52.h>  unsigned int ht;
void main()
{  P2=170;            
ht=35000000;
while(ht--);
P2=255;
ht=5000000;  
while(ht--);                     
}


这是为什么呢?
回复 支持 反对

使用道具 举报

3

主题

12

帖子

67

积分

注册会员

Rank: 2

积分
67
发表于 2021-7-31 19:57:50 | 显示全部楼层
在51上 unsingned int 数据的取值范围是0~65535,5000000已经超出这个范围,你想查看led闪烁的快慢 应该可以多写几个while(ht--)函数,但要在合法的取值范围内
回复 支持 反对

使用道具 举报

1

主题

4

帖子

15

积分

新手上路

Rank: 1

积分
15
 楼主| 发表于 2021-8-2 15:33:16 | 显示全部楼层
battery 发表于 2021-7-31 19:57
在51上 unsingned int 数据的取值范围是0~65535,5000000已经超出这个范围,你想查看led闪烁的快慢 应该可 ...

明白了!int是16位二进制,估计是超出16的,默认按照低十六位
回复 支持 反对

使用道具 举报

0

主题

1

帖子

4

积分

新手上路

Rank: 1

积分
4
发表于 2021-8-9 17:53:24 | 显示全部楼层
你P2为啥初始为170呢?while不用;用{}更规范
回复 支持 反对

使用道具 举报

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

本版积分规则

关闭

站长推荐上一条 /1 下一条

Archiver|手机版|小黑屋|普中开源电子分享网 粤ICP备16123577号-2

GMT+8, 2024-4-26 03:49 , Processed in 0.587155 second(s), 33 queries .

Powered by 论坛搭建 X3.4

Copyright © 2001-2021, Tencent Cloud.

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