打印
[AVR单片机]

急求解决AVR 在protues7.6中的仿真问题

[复制链接]
2919|6
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
1471386368|  楼主 | 2012-7-10 12:44 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
小弟刚接触AVR没几天,现在写了个数码管程序,编译没问题,在protues7.6中仿真,出现了几个问题:1.端口初始化若直接写在主函数中,数码管可以正常显示,若端口初始化写成独立的子函数,在主函数调用,用Protues仿真,单步运行时,函数一直在端口初始化函数中循环运行,无论循环函数中写什么指令,端口都没有输出,数码也不亮。
2.关于延时函数,在主函数调用延时时,程序也一直在延时函数中运行,跳不出延时函数,像是死循环!
对于以上两个问题,本人疑惑了很久,之前用过C51,没出现过这问题,请各位大侠指点! 下面附上本人刚才写的程序及仿真文件。 7SEG_LED.rar (52.66 KB)

相关帖子

沙发
zhu51231| | 2012-7-11 16:30 | 只看该作者
你设置一下sp=4000;在试一下

使用特权

评论回复
板凳
zhu51231| | 2012-7-11 16:45 | 只看该作者
我以前使用M128A的时候遇到过不能从子程序正常返回的问题,一到返回就从main执行后来反复试验发现sp数据不对,检查确认是熔丝位设置的问题,M128A默认与103兼容,而103只有4000ram,128有4096ram,将sp改为4000就好了,后来在熔丝位设置中将兼容103的沟去掉也就好了。

使用特权

评论回复
地板
1471386368|  楼主 | 2012-7-11 23:48 | 只看该作者
问题解决了!是ICCAVR芯片设置问题,之前设置成ATMEGA1281,后来改成ATMEGA128(Please see NOTES) 调试,就好 了。但又有疑问:ATMEGA1281 与ATMEGA128之间有什么差别呢?同样感谢zhu51231的回复!

使用特权

评论回复
5
z100950| | 2013-6-8 21:33 | 只看该作者
zhu51231 发表于 2012-7-11 16:30
你设置一下sp=4000;在试一下

我现在也遇到了这个问题,问一下sp在哪设置

使用特权

评论回复
6
zhu51231| | 2013-6-10 13:18 | 只看该作者
在主程序里一开始加一句:sp=4000;

使用特权

评论回复
7
idleboy| | 2013-7-5 10:18 | 只看该作者
while(1)
  {
    PORTD=0x00;
    Delay_ms(1000);
    for(k=0;k<8;k++)
        {
          l=0b00000001;
          m=l<<k;
          PORTD=0xff^m;
          Delay_ms(1000);  
        }
大神们,为什么我的while(1)里只执行了一次呢????
求解!!!!!!!!!!!!!

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

0

主题

54

帖子

0

粉丝