计算延时时间

[复制链接]
2988|16
 楼主| pengf 发表于 2011-7-14 08:54 | 显示全部楼层 |阅读模式
如何计算下面是 10 MS的,谢谢了,用KEIL编译的
void delay10ms()
{
for (a=100;a>0;a--)
for (b=225;b>0;b--);
}
chuxh 发表于 2011-7-14 09:15 | 显示全部楼层
看你接的晶振是多少
司徒老鹰 发表于 2011-7-14 09:26 | 显示全部楼层
嗯,例如是12MHz的话,一个机器周期就是1us .那么你的那个循环就是225*100*1us..
每次递减是一个机器周期。
supernan 发表于 2011-7-14 10:19 | 显示全部楼层
这是大概值吧
xwj 发表于 2011-7-14 10:30 | 显示全部楼层
要看编译后的汇编代码,或者仿真跟踪一下才能准确确定
 楼主| pengf 发表于 2011-7-14 10:34 | 显示全部楼层
这是大概值吧
supernan 发表于 2011-7-14 10:19
精确呢
supernan 发表于 2011-7-14 10:54 | 显示全部楼层
要精确,建议用定时器。
llljh 发表于 2011-7-14 10:57 | 显示全部楼层
用KEIL的话看一下反汇编
renyaq 发表于 2011-7-14 11:01 | 显示全部楼层
看一下汇编会精确计算出延时时间
juventus9554 发表于 2011-7-14 11:03 | 显示全部楼层
用内嵌汇编也可以很精确的
栩栩如生 发表于 2011-7-14 11:05 | 显示全部楼层
看一下反汇编
看一下执行了多少个机械周期
晶振是多少看一下
好像默认是24Mhz
那就是两个机械周期是1us
 楼主| pengf 发表于 2011-7-14 11:08 | 显示全部楼层
如果用语句while(--300);没递减一次时间是多少啊
dingy 发表于 2011-7-14 11:11 | 显示全部楼层
这个问题我也没有搞清楚,只是把教科书上的代码拿来用,反正够用就没有深究过。真正精确定时还真不知道。
 楼主| pengf 发表于 2011-7-14 11:14 | 显示全部楼层
多谢大家了,我再琢磨琢磨吧
yinbaocai1 发表于 2011-7-14 14:18 | 显示全部楼层
二楼正解,不过的确是大概值,这还跟单片机有一点关系
wf9599 发表于 2011-7-15 08:07 | 显示全部楼层
我认为是大概值
 楼主| pengf 发表于 2011-7-18 21:22 | 显示全部楼层
呵呵,楼上有意思
您需要登录后才可以回帖 登录 | 注册

本版积分规则

718

主题

10129

帖子

3

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