本帖最后由 ddllxxrr 于 2014-9-8 08:52 编辑
这个是前两天发表的贴子:用AtmelStudio6.2跑mega16例程https://bbs.21ic.com/forum.php?mod=viewthread&tid=796948&extra=page%3D1%26filter%3Dtypeid%26typeid%3D380%26typeid%3D380
今天早晨有时间想用proteus 7.10跑一下。可是我下进才发现,LED屏居然不亮,别的好像正常.
我把delay函数的时间给延长了也不行。
我也在网上找了,都说些不解决问题的话。在走投无路的情况下,我静下心来分析。我想原程序是ICCAVR编译的。那个仿真都行,而我现在只不过换成GCC编译了。是否编译器存在差异呢。
我就用proteus 7.10 自带的示波器观察。发现上图c1,c2才2US 的高电平。我点了下LED屏,好像好1ms,我延了还是不行。我就把局部变量变成全局变量这下行了:
以前:
void delay(void) //LED数码管切换时间函数
{
uint i;
for(i=0;i<10;i++);
}
现在:
uint i;
void delay(void) //LED数码管切换时间函数
{
for(i=0;i<30;i++)
{
;
}
}
为什么会这样,我想这就是编译器之间的差译吧。各位看官怎么看这个问题呢?
仿真通过的截图:
|