[AVR单片机] AVR 子函数不能返回到主函数

[复制链接]
4794|13
 楼主| Karlshen 发表于 2010-5-15 22:30 | 显示全部楼层 |阅读模式
void init(void)

{

...

}



void main(void)

{

DDRB=0xff;

init();

while(1)

PORTB=0xff;

}



B口连着一排灯   高电平亮   可是上面程序灯却不会亮



void init(void)

{

...

while(1)

PORTB=0xff;

}



void main(void)

{

DDRB=0xff;

init();

}



这样灯就会亮



子函数的...代表很多代码 第2种方法灯会亮 我想应该说明...代表的代码能跑通吧   但为什么第一种方法就不行呢

是不是说明进了子函数 回不到主函数
Yan.hong.yu 发表于 2010-5-16 11:52 | 显示全部楼层
LZ用什么编译器?
qfengbj 发表于 2010-5-16 22:54 | 显示全部楼层
我看不出这程序的区别
qfengbj 发表于 2010-5-16 22:54 | 显示全部楼层
我看不出这程序的区别
 楼主| Karlshen 发表于 2010-5-20 22:43 | 显示全部楼层
2# Yan.hong.yu
用的是ICCAVR
 楼主| Karlshen 发表于 2010-5-20 22:44 | 显示全部楼层
我也是思来想去,觉得程序没有多大差别啊
SHSLZHZ 发表于 2010-5-21 12:15 | 显示全部楼层
1# Karlshen
肯定是目标CPU选择不对,导致堆栈指针不对,不能正确返回.
第二种方案是直接进入子函数对PORT操作且踏步了,而且不需返回.如果返回也是错误的.
avrvi 发表于 2010-5-21 14:27 | 显示全部楼层
CPU型号没有选对

或者mega128/mega64的M103熔丝位使能了
laslison 发表于 2010-5-21 22:28 | 显示全部楼层
目标CPU选择不对,这个还能选错吗
suoma 发表于 2010-5-21 23:06 | 显示全部楼层
围观···:lol
BitFu 发表于 2010-5-23 21:30 | 显示全部楼层
前面的程序停止在INIT函数里了,init里是不是有一个死循环!
qfengbj 发表于 2010-5-24 13:09 | 显示全部楼层
init(void)
是一个初始化程序吧?
麻辣鸭脖子 发表于 2010-5-24 17:28 | 显示全部楼层
init(void)的具体内容省略了,第二个能通过,说明这个init(void)没有问题
love_life 发表于 2010-5-24 22:22 | 显示全部楼层
程序不多,占得地方不少
您需要登录后才可以回帖 登录 | 注册

本版积分规则

81

主题

734

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部