如何精确延时250uS?

[复制链接]
 楼主| gaohq 发表于 2008-9-2 18:34 | 显示全部楼层 |阅读模式
用很多个NOP,NOP吗?
lyjian 发表于 2008-9-2 19:11 | 显示全部楼层

NOP一般只用来做小调节而已

5880527 发表于 2008-9-2 19:53 | 显示全部楼层

要看是一次还是很多次

NE5532 发表于 2008-9-2 20:19 | 显示全部楼层

要有精确的时钟,然后随你干什么。

qdfuser 发表于 2008-9-2 20:19 | 显示全部楼层

如何精确延时250uS?

  中断最可靠,延时的方法不可去
NE5532 发表于 2008-9-2 20:46 | 显示全部楼层

楼上说错了。

中断和延时程序的时间来源都是晶体,只要晶体准确,两个方法是一样准确的。只要程序不被中断就是了。
gengxuetao 发表于 2008-9-3 13:04 | 显示全部楼层

同意楼上的

芯行天下 发表于 2008-9-3 13:41 | 显示全部楼层

就延时

关键看你用延时如何,是常用,还是短用,是多个地方用,还是一个地方用。
具体是用定时器还是NOP,这要看你的程序需求,和准确没有关系,哪一种都能做到精确。只要精振准确。
冰点柔情 发表于 2008-9-3 14:00 | 显示全部楼层

你看这样?

DALAY:MOV R7,250
D1      MOV R6,200
D2     DJNZ  R6,D2
       DJNZ  R7,D1
       END
jetson001 发表于 2008-9-3 15:02 | 显示全部楼层

怎么算精确呢?

总有个允许误差吧,
例如1us
这样的话,你保证你的程序周期小于1us就可以了,因为程序执行一条占用一个周期,这是固定的,明白???
肖斌 发表于 2008-9-3 15:08 | 显示全部楼层

呵呵

 用延时的话不好控制啊,而且延时大小还要调试才知道啊。用中断是很好的一个想法。
 楼主| gaohq 发表于 2008-9-3 15:34 | 显示全部楼层

今天有事这时候才上来。

谢谢楼上各位!我的晶振是11.0592MHz,我只要能精确到1uS就可以了。
我知道用汇编做的好一些,可我对C熟点,我如用中断的话大家觉得多久中断一次好呢?我的中断里面就一句:i++;
Ice_River 发表于 2008-9-3 16:53 | 显示全部楼层

11.0592MHz

恐怕不容易,每个机器周期都有误差,如果可能换成12或者6M,设置中断为50us
lyjian 发表于 2008-9-3 17:06 | 显示全部楼层

何必一定要中断?

随便设置一个定时器250us溢出,读一下溢出标志不也可以吗?
mohanwei 发表于 2008-9-3 19:03 | 显示全部楼层

中断是有误差的……延时才是最可靠的(可以先把中断关了

NE5532 发表于 2008-9-3 19:49 | 显示全部楼层

除不尽,不太容易。

按51,基本上是1uS多点一条指令,就是说一句都不能多,一句都不能少。
精度嘛,折合10%精度,再烂的晶体都可以做。
救火车 发表于 2008-9-7 19:04 | 显示全部楼层

用for循环+nop调整。

在延时前要关中断,延时完了再开中断。
for循环,算个大概时间
最后用nop调整。
用编译器的计时功能,调一点儿,运一下。
慢慢调吧。祝你好运。
wzhq1030 发表于 2008-9-7 20:16 | 显示全部楼层

中断定时比较准确

还是中断定时比较准确,
NOP不太准确
5880527 发表于 2008-9-7 20:18 | 显示全部楼层

这个精度用中断很需要技术的,不信试一下就知道了

还是照上面大多数人的意见用NOP做吧
原野之狼 发表于 2008-9-8 09:27 | 显示全部楼层

随便写点东西,然后拿着示波器做调整。

当然,时间片不能被打断。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

378

主题

3766

帖子

5

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