打印

如何精确延时250uS?

[复制链接]
3847|21
手机看帖
扫描二维码
随时随地手机跟帖
沙发
lyjian| | 2008-9-2 19:11 | 只看该作者

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

使用特权

评论回复
板凳
5880527| | 2008-9-2 19:53 | 只看该作者

要看是一次还是很多次

使用特权

评论回复
地板
NE5532| | 2008-9-2 20:19 | 只看该作者

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

使用特权

评论回复
5
qdfuser| | 2008-9-2 20:19 | 只看该作者

如何精确延时250uS?

  中断最可靠,延时的方法不可去

使用特权

评论回复
6
NE5532| | 2008-9-2 20:46 | 只看该作者

楼上说错了。

中断和延时程序的时间来源都是晶体,只要晶体准确,两个方法是一样准确的。只要程序不被中断就是了。

使用特权

评论回复
7
gengxuetao| | 2008-9-3 13:04 | 只看该作者

同意楼上的

使用特权

评论回复
8
芯行天下| | 2008-9-3 13:41 | 只看该作者

就延时

关键看你用延时如何,是常用,还是短用,是多个地方用,还是一个地方用。
具体是用定时器还是NOP,这要看你的程序需求,和准确没有关系,哪一种都能做到精确。只要精振准确。

使用特权

评论回复
9
冰点柔情| | 2008-9-3 14:00 | 只看该作者

你看这样?

DALAY:MOV R7,250
D1      MOV R6,200
D2     DJNZ  R6,D2
       DJNZ  R7,D1
       END

使用特权

评论回复
10
jetson001| | 2008-9-3 15:02 | 只看该作者

怎么算精确呢?

总有个允许误差吧,
例如1us
这样的话,你保证你的程序周期小于1us就可以了,因为程序执行一条占用一个周期,这是固定的,明白???

使用特权

评论回复
11
肖斌| | 2008-9-3 15:08 | 只看该作者

呵呵

 用延时的话不好控制啊,而且延时大小还要调试才知道啊。用中断是很好的一个想法。

使用特权

评论回复
12
gaohq|  楼主 | 2008-9-3 15:34 | 只看该作者

今天有事这时候才上来。

谢谢楼上各位!我的晶振是11.0592MHz,我只要能精确到1uS就可以了。
我知道用汇编做的好一些,可我对C熟点,我如用中断的话大家觉得多久中断一次好呢?我的中断里面就一句:i++;

使用特权

评论回复
13
Ice_River| | 2008-9-3 16:53 | 只看该作者

11.0592MHz

恐怕不容易,每个机器周期都有误差,如果可能换成12或者6M,设置中断为50us

使用特权

评论回复
14
lyjian| | 2008-9-3 17:06 | 只看该作者

何必一定要中断?

随便设置一个定时器250us溢出,读一下溢出标志不也可以吗?

使用特权

评论回复
15
mohanwei| | 2008-9-3 19:03 | 只看该作者

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

使用特权

评论回复
16
NE5532| | 2008-9-3 19:49 | 只看该作者

除不尽,不太容易。

按51,基本上是1uS多点一条指令,就是说一句都不能多,一句都不能少。
精度嘛,折合10%精度,再烂的晶体都可以做。

使用特权

评论回复
17
救火车| | 2008-9-7 19:04 | 只看该作者

用for循环+nop调整。

在延时前要关中断,延时完了再开中断。
for循环,算个大概时间
最后用nop调整。
用编译器的计时功能,调一点儿,运一下。
慢慢调吧。祝你好运。

使用特权

评论回复
18
wzhq1030| | 2008-9-7 20:16 | 只看该作者

中断定时比较准确

还是中断定时比较准确,
NOP不太准确

使用特权

评论回复
19
5880527| | 2008-9-7 20:18 | 只看该作者

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

还是照上面大多数人的意见用NOP做吧

使用特权

评论回复
20
原野之狼| | 2008-9-8 09:27 | 只看该作者

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

当然,时间片不能被打断。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

378

主题

3762

帖子

5

粉丝