[ZLG-ARM] 我有个挺白痴的问题,精确延时一毫秒

[复制链接]
 楼主| ntman1985 发表于 2007-4-10 15:46 | 显示全部楼层 |阅读模式
&nbsp;&nbsp;&nbsp;&nbsp;这样的程序可以找得到就是不知道是为什么那么写。<br />&nbsp;&nbsp;&nbsp;&nbsp;比如51里,如果外部晶振为12MHz<br />&nbsp;&nbsp;&nbsp;&nbsp;void&nbsp;delayms(unsigned&nbsp;int&nbsp;t)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;unsigned&nbsp;int&nbsp;i,j;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for(i=0;i&ltt;i++)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for(j=0;j&lt120;j++);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;那delayms(1)就是1ms(肯定是大约).为什么for(j=0;j&lt120;j++)这句里j是&lt120呢?到底能延时多少是要看汇编后的汇编指令有多少条吧的?
 楼主| ntman1985 发表于 2007-4-10 15:51 | 显示全部楼层

我又去网上找了找

到底能延时多久是要看汇编指令。<br />要是特别要求精确还不如用定时器算了。
chenlung 发表于 2007-4-10 15:58 | 显示全部楼层

re

给一个方法,一般C编写工具都有软调试,里面有计算执行时间的东东,只要跑下就看出用了多少时间。
zlgARM 发表于 2007-4-10 19:00 | 显示全部楼层

ntman1985

&nbsp;&nbsp;&nbsp;&nbsp;建议使用定时器。依赖于汇编指令的延时,可移植性很低,一旦时钟一变,设备一变,就面目全非。
我学MCU 发表于 2007-4-10 22:34 | 显示全部楼层

既然要精确使用定时器才是正途

  
wtt1314 发表于 2007-4-11 11:31 | 显示全部楼层

在51内

定时器可以延时很精确的1毫秒,一点问题都没有
您需要登录后才可以回帖 登录 | 注册

本版积分规则

6

主题

35

帖子

0

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