打印
[AVR单片机]

ATMEGA64l延时1ms怎么做出来啊

[复制链接]
1540|6
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
jiang666lei|  楼主 | 2013-7-17 10:57 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
沙发
NE5532| | 2013-7-17 11:04 | 只看该作者
软件延时就可以了啊。

使用特权

评论回复
板凳
jiang666lei|  楼主 | 2013-7-17 11:41 | 只看该作者
NE5532 发表于 2013-7-17 11:04
软件延时就可以了啊。

对啊  这1ms怎么写出来呢?

使用特权

评论回复
地板
wolension| | 2013-7-17 16:43 | 只看该作者
IAR 可以这样用.
#define CPU_CLK_MHz 8ul
#define delay_us(x) __delay_cycles((unsigned long)(x*CPU_CLK_MHz))
#define delay_ms(x) __delay_cycles((unsigned long)(x*CPU_CLK_MHz*1000))

delay_ms(1);

使用特权

评论回复
5
NE5532| | 2013-7-17 16:45 | 只看该作者
jiang666lei 发表于 2013-7-17 11:41
对啊  这1ms怎么写出来呢?

void delayms( unsigned char taime)
{
unsigned char i;
unsigned long k;
for (i = 0 ; i < time; i++)
{
  k = 65536;
  while (k--);
  }
}

只是提供一个思路,具体数值楼主自己去试。另外C编写的软件延时时长与优化等级有关,介意的话,请用汇编来写。

使用特权

评论回复
6
qin552011373| | 2013-7-17 20:30 | 只看该作者
你算一下就知道了  八兆晶振   一秒钟执行执行指令大概八百万次   你写一个函数   让mcu一秒钟执行这个函数一千次  那么这个函数就是延时1ms的   你这个的函数for循环执行大概8000次就差不多是1ms的效果

使用特权

评论回复
7
lion1899| | 2013-7-18 10:04 | 只看该作者
顶一个 版主V5

使用特权

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

本版积分规则

8

主题

16

帖子

0

粉丝