http://www.ouravr.com/bbs/bbs_content.jsp?bbs_sn=6362&bbs_page_no=2&sub_kind_id=2065&bbs_id=1000
以下一段代码:
void main(void) //主函数
{
DDRB=0B00000011; //定义B口的PB0、PB1为输出口
PORTB=0B00000001; //PB0口输出高电平,PB1口输出低电平,绿灯亮
delay_nms(5000); //延时5秒
PORTB=0B00000010; //PB1口输出高电平,PB0口输出低电平,关闭绿灯,红灯亮 ......
我是使用 AVR studio (没用仿真器),用 auto step 执行:
一开始,PB0口输出高电平,PB1口输出低电平, 这都很正常 ------- 然后是5秒的延时 -----开始发现不能同步。从stop watch 的数值上看,电脑上的模拟执行,远远慢于C语言上的设计。估计这5秒,要执行500秒以上才能完成。
当然, auto step 方式,会严重阻碍同步。我改成 run + 手工break 的方式,仍发现不同步得很严重。
如果是这样的话,调试程序会很不方便啊。 能做到在电脑模拟时,程序设计上的5秒,模拟出来就是5秒吗?
我记得问了许久,始终没有得到答案。
现在我自己找到了答案:
如果使用 Jtag 仿真,时间上基本可以做到同步!! 但纯 AVR Studio 软件仿真就远远无法做到。所以,调试程序时,如果你是用纯 AVR Studio 软件仿真,请先将延时程序代码注释掉。
文章评论(0条评论)
登录后参与讨论