求助大家一个问题,还望各位大佬帮忙解答,感谢

[复制链接]
1558|8
 楼主| 大圣0 发表于 2020-9-9 14:30 | 显示全部楼层 |阅读模式
最近开始接触51单片机,想问大家一个关于led延时的问题,用的是11.0592MHz的晶振,下面是我的程序代码,
#include<reg51.h>

sbit led = P1^0;

unsigned int i,j;

void main()
{
        while(1)
        {
                led = 0;
                        for(i=0;i<1000;i++)
                        for(j=0;j<110;j++);
                led = 1;
                        for(i=0;i<1000;i++)
                        for(j=0;j<110;j++);
        }
}
实现的功能是亮1秒,再灭1秒。我不太明白,还望大家指点一下,感谢!
tyw 发表于 2020-9-9 17:04 | 显示全部楼层
本帖最后由 tyw 于 2020-9-9 17:25 编辑

#include<reg51.h>

sbit led = P1^0;

unsigned int i,j;

void main()
{
        while(1)
        {
                led = 0;                                  ;开灯
                        for(i=0;i<1000;i++)       ;内循环 i+1 1000次, 每次9us, 1000次=9ms   9us由系统时钟决定
                        for(j=0;j<110;j++);       ;外循环j+1 110次, 每次9ms, 110次=1s
                led = 1;                                  ;关灯
                        for(i=0;i<1000;i++)       ;内循环 i+1 1000次, 每次9us, 1000次=9ms   9us由系统时钟决定
                        for(j=0;j<110;j++);       ;外循环j+1 110次, 每次9ms, 110次=1s
        }
}
gaobq 发表于 2020-9-9 17:19 | 显示全部楼层
keil是不是有个软件模拟功能,看以看运行了多长时间,好久不用,不知还有没有
 楼主| 大圣0 发表于 2020-9-9 17:26 | 显示全部楼层
tyw 发表于 2020-9-9 17:04
#include

sbit led = P1^0;

兄弟,那个9us,是1/f?,那也是0.09us呀

评论

tyw
汇编语言能精确计算共几条指令,耗时多少,C语言就算勿清爽了,哈哈  发表于 2020-9-9 17:32
tyw
for(i=0;i<1000;i++) 语句执行需要好几个时钟周期,我这里是估算的.  发表于 2020-9-9 17:29
tyw 发表于 2020-9-9 17:39 | 显示全部楼层
大圣0 发表于 2020-9-9 17:26
兄弟,那个9us,是1/f?,那也是0.09us呀





评论

非常感谢  发表于 2020-9-10 08:42
DavidDP 发表于 2020-9-9 18:55 | 显示全部楼层
这个可以用仿真工具调试一下,就明白了是怎么回事了!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

5

主题

97

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部