智能车制作

 找回密码
 注册

扫一扫,访问微社区

查看: 4704|回复: 4
打印 上一主题 下一主题

用PE生成的一个比较精确的100微秒延时函数

[复制链接]

80

主题

1045

帖子

0

精华

跨届大侠

北京龙邱智能科技有限公司

Rank: 10Rank: 10Rank: 10

积分
10332

论坛元老奖章

QQ
威望
2905
贡献
6151
兑换币
4515
注册时间
2008-6-7
在线时间
638 小时
跳转到指定楼层
1#
发表于 2010-8-3 09:35:34 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 chiusir 于 2010-8-3 09:37 编辑

用PE生成的一个比较精确的100微秒延时函数,供大家参考,如果需要其它频率的,可以留言请求。
开发环境:
CW:5.0
CRYSTAL:16MHZ
PLLCLK:32MHZ

void Cpu_Delay100US(word us100)
{
  /* irremovable overhead (ignored): 13 cycles */
  /* ldd:  2 cycles overhead (load parameter into register) */
  /* jsr:  4 cycles overhead (call this function) */
  /* rts:  7 cycles overhead (return from this function) */
  /* irremovable overhead for each 100us cycle (counted): 13 cycles */
  /* dbne:  3 cycles overhead (return from this function) */
  asm {
    loop:
    /* 100 us delay block begin */
    /*
     * Delay
     *   - requested                  : 100 us @ 16MHz,
     *   - possible                   : 1600 c, 100000 ns
     *   - without removable overhead : 1597 c, 99812.5 ns
     */
    pshd                               /* (2 c: 125 ns) backup D */
    ldd #530                           /* (2 c: 125 ns) number of iterations */
    label0:
    dbne d, label0                     /* (3 c: 187.5 ns) repeat 530x */
    puld                               /* (3 c: 187.5 ns) restore D */
    /* 100 us delay block end */
    dbne d, loop                       /* us100 parameter is passed via D register */
    rts                                /* return from subroutine */
  }
}

12

主题

1121

帖子

0

精华

常驻嘉宾

Rank: 8Rank: 8

积分
3668

优秀会员奖章活跃会员奖章在线王奖章论坛元老奖章

QQ
威望
1871
贡献
1107
兑换币
93
注册时间
2011-3-14
在线时间
345 小时
2#
发表于 2011-5-27 12:39:44 | 只看该作者
学习,谢谢分享
回复 支持 反对

使用道具 举报

15

主题

362

帖子

1

精华

常驻嘉宾

Rank: 8Rank: 8

积分
4726
QQ
威望
1564
贡献
2808
兑换币
497
注册时间
2010-12-28
在线时间
177 小时
3#
发表于 2011-5-27 20:00:12 | 只看该作者
程序占用CPU资源,建议还是用时钟中断较好。
回复 支持 反对

使用道具 举报

80

主题

1045

帖子

0

精华

跨届大侠

北京龙邱智能科技有限公司

Rank: 10Rank: 10Rank: 10

积分
10332

论坛元老奖章

QQ
威望
2905
贡献
6151
兑换币
4515
注册时间
2008-6-7
在线时间
638 小时
4#
 楼主| 发表于 2011-5-27 22:57:57 | 只看该作者
看用在什么地方,有些地方就是需要等待的话,用这个也无所谓,如果还需要处理大量数据,可以考虑中断或者别的方式。
回复 支持 反对

使用道具 举报

11

主题

159

帖子

0

精华

高级会员

Rank: 4

积分
960

优秀会员奖章活跃会员奖章

威望
569
贡献
217
兑换币
231
注册时间
2012-9-25
在线时间
87 小时
5#
发表于 2013-3-11 18:13:13 | 只看该作者
f(bus)=64m
该怎么写?求教~
回复 支持 反对

使用道具 举报

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

本版积分规则

关于我们|联系我们|小黑屋|智能车制作 ( 黑ICP备2022002344号

GMT+8, 2024-12-28 15:44 , Processed in 0.413226 second(s), 31 queries , Gzip On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表