2705|4

15

帖子

0

TA的资源

一粒金砂(中级)

楼主
 

关于延时程序的问题 [复制链接]

请问void Delay_ms(unsigned long nValue)//毫秒为单位,8MHz为主时钟
{
    unsigned long nCount;
    int i;
    unsigned long j;
    nCount = 2667;
    for(i = nValue;i > 0;i--)
    {
     for(j = nCount;j > 0;j--);
    }
    return;
}
中2667如何得来的 ,是一条指令需要3个时钟周期么,2667=8000/3,对吗?

最新回复

定时器  或者用__delay_cycles( );  详情 回复 发表于 2011-10-22 12:58
 
点赞 关注

回复
举报

5015

帖子

12

TA的资源

裸片初长成(初级)

沙发
 
确定延时时间的办法是观察上面这段C代码编译成的汇编代码,
然后看每条汇编代码所用到的指令,每条汇编指令对应的周期是一定的,
这样再根据跳转次数就能够计算延时时间了。
如果是精确的延时建议用定时器
 
 

回复

299

帖子

0

TA的资源

纯净的硅(高级)

板凳
 
这种写法在被不同编译器优化时,或不同的优化等级优化时,有可能会出现不同的汇编代码,导致时间有差异。所以还是用定时器好。
 
 
 

回复

1729

帖子

0

TA的资源

五彩晶圆(初级)

4
 
软件延时,只是一些粗略的延时,准确的延时还是需要通过定时器来实现的。
 
 
 

回复

32

帖子

0

TA的资源

一粒金砂(中级)

5
 
定时器  或者用__delay_cycles( );
 
 
 

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

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/8 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表