您现在所在的是:

单片机论坛

回帖:10个,阅读:1604 [上一页] [1] [2] [下一页]
* 帖子主题:

单片机的延时计算

1722
shenyuangao
文章数:85
年度积分:50
历史总积分:1722
注册时间:2008/9/16
发站内信
发表于:2010/4/13 22:26:13
#0楼
include??reg51.h??
delay(void)
{
unsigned int i;int n; int m;
for(i=0; i <10000; i++)
for(n=0; n <20; n++)
;
}
void main(void)
{
while(1)
{
delay();
P2=0xfe;
delay();
P2=0xff;
delay();
}
}
这里的延时是怎么计算的?0xfe时间是多久?0xff时间是多久?烦请指教
19263
pqsh 版主
文章数:7424
年度积分:1093
历史总积分:19263
注册时间:2006/8/22
发站内信
2018论坛解答高手
发表于:2010/4/14 10:44:08
#1楼
貌似延时和0xfe无关,P2和这个有关.
这个程序延时应该是固定的.就是20+10000个语句.
延时和单片机时钟(指令周期)有关,还有因为是C的,怎么编译到汇编也有关(for对应什么指令,需要多少周期).
所以,总体只好实测了.
如果我忘了我
请帮忙记得我
pqsh@163,326199298@v&q同号
12128
hty.czh
文章数:2374
年度积分:237
历史总积分:12128
注册时间:2004/8/29
发站内信
发表于:2010/4/15 20:48:15
#2楼
用delay函数很难做到精确定时。
楼主大概想问P2分别为0xfe和0xff时多久时间吧。如果无返回值,那么保持的时间是一样的。
1722
shenyuangao
文章数:85
年度积分:50
历史总积分:1722
注册时间:2008/9/16
发站内信
发表于:2010/4/16 8:33:54
#3楼
我刚接触这个东西请勿见笑
谢谢啊!但我还是没弄明白时间是多长,表情
12128
hty.czh
文章数:2374
年度积分:237
历史总积分:12128
注册时间:2004/8/29
发站内信
发表于:2010/4/16 22:06:40
#4楼
估算一下吧:12M振荡频率,那么就是1/12M秒乘以12=一个机器周期,再乘以10000(假设i++是单周期指令),再乘以20,大约1/5秒。
12128
hty.czh
文章数:2374
年度积分:237
历史总积分:12128
注册时间:2004/8/29
发站内信
发表于:2010/4/17 11:29:26
#5楼
有个比较直观的办法,在调制状态下,单步执行“i++”,看一次用了多长时间就可以计算出整个延时时间了。
17528
ahljj
文章数:3386
年度积分:240
历史总积分:17528
注册时间:2002/3/23
发站内信
发表于:2010/5/31 10:40:21
#6楼
仿真一下
1000
sunsoncheng
文章数:109
年度积分:50
历史总积分:1000
注册时间:2010/5/25
发站内信
发表于:2010/6/7 22:37:06
#7楼
刚学,看看是有好处的:)
703
gzssyyz
文章数:14
年度积分:50
历史总积分:703
注册时间:2010/3/27
发站内信
发表于:2010/6/10 21:54:01
#8楼
KEILL 里面设置断点 然后看相应的运行时间这样做的比较精确
1012
a89982715
文章数:42
年度积分:50
历史总积分:1012
注册时间:2007/5/20
发站内信
发表于:2010/6/18 14:32:10
#9楼
c的时间很难算出来    估计下就可以了   各个编程软件不一样得到的反汇编是不一样的
看懂的要反复的看,看不懂的要硬着头皮看

关于我们 | 联系我们 | 广告服务 | 本站动态 | 友情链接 | 法律声明 | 非法和不良信息举报

工控网客服热线:0755-86369299
版权所有 工控网 Copyright©2024 Gkong.com, All Rights Reserved

93.6006