atmega16中延时设定时间怎么是实际延时的一半?

2019-03-24 20:58发布

   最近开始学习avr,网上atmega16视频多,所以就从它下手了。写了个灯闪烁的程序。用的WinAVR. #include <avr/io.h>
#include <util/delay.h> int main()
{
  DDRD=0xFF;//PORTD口设为输出
  DDRC=0xFF;  while(1)
  {
    PORTD^=_BV(PD0); //PD0亮
 _delay_ms(10);           //延时10ms, 问题就在这里。 在debug时(avrstudio), 发现这里实际是延时了20ms,才执行下一步程序。这是为什么呢?敬请详解 PORTC^=_BV(PC0);    //PC0亮

  }
} 此帖出自小平头技术问答
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
5条回答
leekuip
1楼-- · 2019-03-25 06:30
 精彩回答 2  元偷偷看……
xiaohan510
2楼-- · 2019-03-25 12:06
看看
xiaohan510
3楼-- · 2019-03-25 14:16
看看
常见泽1
4楼-- · 2019-03-25 19:19
和晶振频率有关吧  晶振多少
yanse51
5楼-- · 2019-03-25 20:55
多谢提示。就是这个原因。
又发现个新问题:在makefile文件中,默认是8Mhz,但是delay.h中默认是1Mhz. 这是怎么回事呢?
经调试,程序实际用的是8Mhz.

一周热门 更多>