[AVR单片机] ATMEGA64l延时1ms怎么做出来啊

[复制链接]
1996|6
 楼主| jiang666lei 发表于 2013-7-17 10:57 | 显示全部楼层 |阅读模式
请问用ATMEGA64l,8M晶振,不用计时器,延时1ms程序怎么做出来啊
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);
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编写的软件延时时长与优化等级有关,介意的话,请用汇编来写。
qin552011373 发表于 2013-7-17 20:30 | 显示全部楼层
你算一下就知道了  八兆晶振   一秒钟执行执行指令大概八百万次   你写一个函数   让mcu一秒钟执行这个函数一千次  那么这个函数就是延时1ms的   你这个的函数for循环执行大概8000次就差不多是1ms的效果
lion1899 发表于 2013-7-18 10:04 | 显示全部楼层
顶一个 版主V5
您需要登录后才可以回帖 登录 | 注册

本版积分规则

8

主题

16

帖子

0

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