打印
[AVR单片机]

Winavr gcc 和studio 仿真问题

[复制链接]
2528|7
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
lovelyegle|  楼主 | 2009-12-2 20:59 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
单个文件的仿真(用winavr作编辑器,studio作仿真器),我已经试过可以(指针可以跳到delay函数里)如图片程序指针(黄色)。

但是把单文件分开成两个文件之后,为什么?程序指针没有跳到delay(而是直接闪过,没有象单个文件一样可以单步执行)。
单个文件如下:
#include <avr/io.h>
#include <avr/iom8.h>
void delay(void);
int main(void)
{
   DDRD=0xff;  //PD口设为输出
   PORTD=0x01; //PD口低电平
   
while(1)
{
  if(PIND==0X80)
  {
     PORTD=0x01; //PA口设为输出高电平,灯灭
  }
  else
  {
     PORTD<<= 1;
  }
  delay();
}
}
void delay(void)
{
  unsigned int i;
  i=0;
  for(;i<0xfff0;i++)
  {
    asm("NOP");
  }
}

分开两个文件后如下:

文件main.c如下:
#include <int.h>
extern void delay(void);
int main(void)
{
   DDRD=0xff;  //PD口设为输出
   PORTD=0x01; //PD口低电平
   
while(1)
{
  if(PIND==0X80)
  {
     PORTD=0x01; //PA口设为输出高电平,灯灭
  }
  else
  {
     PORTD<<= 1;
  }
  delay();
}
}
文件delay.c如下:
void delay(void);
void delay(void)
{
  unsigned int i;
  i=0;
  for(;i<0xfff0;i++)
  {
    asm("NOP");
  }
}
文件int.h如下:
#include <avr/io.h>
#include <avr/iom8.h>
#include <delay.c>

是因为外部文件的原因,还是还有什么属性没有设置?

相关帖子

沙发
wangwo| | 2009-12-3 22:41 | 只看该作者
估计还要设置东西

使用特权

评论回复
板凳
suoma| | 2009-12-4 21:15 | 只看该作者
把单文件分开成两个文件,这个还没试过,帮顶!

使用特权

评论回复
地板
love_life| | 2009-12-5 22:05 | 只看该作者
:)

使用特权

评论回复
5
xmrforever| | 2009-12-6 20:51 | 只看该作者
建议LZ把DELAY的声明写在DELAY.H里面
然后在MAIN.C里面包含DELAY.H
应该就没问题了

使用特权

评论回复
6
lovelyegle|  楼主 | 2009-12-26 21:59 | 只看该作者
5# xmrforever
非常感谢!顿悟!

使用特权

评论回复
7
hsb.siq| | 2009-12-27 22:23 | 只看该作者
把PROJECT OPTIONS的OPTIMIZATION设为-00

使用特权

评论回复
8
laslison| | 2009-12-27 22:34 | 只看该作者
楼上的,那样设置为啥

使用特权

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

本版积分规则

77

主题

640

帖子

1

粉丝