felixywb 发表于 2009-8-4 16:07:38

请大家帮忙看一个程序,iccavr的,编译没问题,下到片子里不能调用子函数

/*************************************
文件名:LED Driver
编译环境:ICC AVR6.25A
仿真软件;AVR studio4.10
硬件:ATMEGA128芯片
描述:PORTD高低4位交替置高
*************************************/
#include<iom128v.h>//包含型号的头文件
#include<macros.h>//包含位操作的头文件
/*******数据类型宏定义*******/
#define uint unsigned int
/*******声明延时(毫秒级)函数*******/
void delayms(uint ms);
/*******主函数*******/
void main(){
DDRD=0XFF;//定义PD口为输出方式
while(1)
{
PORTD=0X0F;
delayms(500);
PORTD=0XF0;
delayms(500);
}
}
/********************
函数名称:delayms
功能描述:用于延时特定的毫秒
参数:ms
返回值:无
说明:震荡产生于片内1MHZ的RC震荡电路
********************/
void delayms(uint ms)                  
{
uint i,j;
for(i=0;i<ms;i++){
for(j=0;j<145;j++);}       
}
////////////////////

下到板子执行时,PD口始终保持0X0F状态,
这是为什么呢??
但假如不用调用子函数的方式,直接把延时程序加到主函数里就可以正常执行,
这又是为什么呢??

felixywb 发表于 2009-8-4 16:33:35

有没有可能是芯片的问题?

felixywb 发表于 2010-3-21 11:06:08

问题查出来了,是因为下程序时使能了103兼容模式,我使用ISP并口下载的。
唉,真是的,犯了这么低级的错误。

306712241 发表于 2012-9-25 09:16:25

felixywb 发表于 2010-3-21 11:06 static/image/common/back.gif
问题查出来了,是因为下程序时使能了103兼容模式,我使用ISP并口下载的。
唉,真是的,犯了这么低级的错误 ...

楼主,我的夜不能调用子函数啊, 用AVRStudio下载的,那个熔丝位怎么设置?

felixywb 发表于 2013-2-28 09:54:57

306712241 发表于 2012-9-25 09:16 static/image/common/back.gif
楼主,我的夜不能调用子函数啊, 用AVRStudio下载的,那个熔丝位怎么设置? ...

我用的是并口下载软件给的方案设置的熔丝位,没怎么用过AVRstudio下载,以前用了两次锁死了两个片子……
页: [1]
查看完整版本: 请大家帮忙看一个程序,iccavr的,编译没问题,下到片子里不能调用子函数