AVR Studio求助

2019-03-24 21:07发布

我用这个软件去调试延时时间,但发现情况好像不太妙。 当我把延时程序改动以后,再次运行,但发现延时的时间是不变的。 void delay(uint z)
{
 uint i,j;
 for(i=100;i>0;i--)
  for(j=z;j>0;j--);
} 就如上面的程序,我把i的初值改动了几次,再次仿真,但发现显示的时间和改动之前是一样的? 请问有朋友知道问题出在哪吗? 我已经重新载入了文件的。 此帖出自小平头技术问答
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
6条回答
ddllxxrr
1楼-- · 2019-03-24 21:57
 精彩回答 2  元偷偷看……
仙猫
2楼-- · 2019-03-24 22:05
 编译器对着你的源程序左看右看直纳闷:老兄你干嘛呢?我给你改成一下置 i=0,j=0 不就完了吗?于是你的for初值写多少都不管用了。

 解决办法:在定义变量 i、j 时,前置“volatile”,明确地告诉编译器:照我写的做,不准你乱动!
hz_university
3楼-- · 2019-03-24 23:32
真的是非常奇怪,我一步一步执行,发现这个程序居然还可跳出while(1)的循环,从主函数又开始再执行一次,奇了怪了
hz_university
4楼-- · 2019-03-25 02:47
老兄呀,照你说的去做了,还是一样情况呀。
while(1)
{
        delay(2);
        delay(10);
}
这是我的主程序,我单步执行,发现它居然还可以跳出while循环!怪了
仙猫
5楼-- · 2019-03-25 07:23
 那先解决跳出 while(1) 的问题吧,这个现象是程序跑飞了。
David_Lee
6楼-- · 2019-03-25 09:46
原帖由 仙猫 于 2011-7-1 14:31 发表
 那先解决跳出 while(1) 的问题吧,这个现象是程序跑飞了。


这让我想起第一次用Atmega8的时候,一开始程序也老是跑飞,后来才知道,原来是Atmega8开启了硬件看门狗。

一周热门 更多>