打印
[AVR单片机]

AVR 子函数不能返回到主函数

[复制链接]
3431|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 | 只看该作者
我看不出这程序的区别

使用特权

评论回复
5
Karlshen|  楼主 | 2010-5-20 22:43 | 只看该作者
2# Yan.hong.yu
用的是ICCAVR

使用特权

评论回复
6
Karlshen|  楼主 | 2010-5-20 22:44 | 只看该作者
我也是思来想去,觉得程序没有多大差别啊

使用特权

评论回复
7
SHSLZHZ| | 2010-5-21 12:15 | 只看该作者
1# Karlshen
肯定是目标CPU选择不对,导致堆栈指针不对,不能正确返回.
第二种方案是直接进入子函数对PORT操作且踏步了,而且不需返回.如果返回也是错误的.

使用特权

评论回复
8
avrvi| | 2010-5-21 14:27 | 只看该作者
CPU型号没有选对

或者mega128/mega64的M103熔丝位使能了

使用特权

评论回复
9
laslison| | 2010-5-21 22:28 | 只看该作者
目标CPU选择不对,这个还能选错吗

使用特权

评论回复
10
suoma| | 2010-5-21 23:06 | 只看该作者
围观···:lol

使用特权

评论回复
11
BitFu| | 2010-5-23 21:30 | 只看该作者
前面的程序停止在INIT函数里了,init里是不是有一个死循环!

使用特权

评论回复
12
qfengbj| | 2010-5-24 13:09 | 只看该作者
init(void)
是一个初始化程序吧?

使用特权

评论回复
13
麻辣鸭脖子| | 2010-5-24 17:28 | 只看该作者
init(void)的具体内容省略了,第二个能通过,说明这个init(void)没有问题

使用特权

评论回复
14
love_life| | 2010-5-24 22:22 | 只看该作者
程序不多,占得地方不少

使用特权

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

本版积分规则

81

主题

734

帖子

1

粉丝