讨论如何实现AVR软件复位的方法
我现在调试一个程序,要求开关按下,程序进入睡眠状态,被唤醒后从程序的初始化开始执行,也就是和机器上电复位的效果一样,用GOTO语句吗?RAM中的数据会影响程序的执行吗?老大们有这么试过吗? 笨拙的办法是死循环等狗楼上的兄弟不是在换工作吗??现在有去吗??好象我们在同一个城市哦!
-----此内容被our_avr于2006-07-04,11:49:48编辑过 void (*reset)(void)=0x0000 关中断,跳转到0 1楼,2楼的我要试下先。
3楼的没看懂,还要麻烦您多打两字。
our_avr我上次面试没有结果,工作内容多是机械装配方面的,我也不懂,也不喜欢做。
你在哪里上班啊,有空一起出来喝茶聊天,以前经常去水天堂茶馆打包分,最近很少去了。 void reset()
{
asm( "cli" );
asm( "clr r30" );
asm( "clr r31" );
asm( "ijmp" );
}
-----此内容被mored于2006-07-04,14:24:42编辑过 哦,我过去也长去水天堂的!钱堂人家的还要贵点,感觉到咖啡厅比较划算,只要消费个25元就可以座半天!哈哈!不过没有零食。有机会还想多向你学习学习!
本人菜鸟一个
给个QQ:61252284
-----此内容被our_avr于2006-07-04,14:27:35编辑过 我看过你刚才发的程序了,你就别装了,我回家找找我的QQ去,好久都没有用了。
5楼的兄弟,谢谢你啊,我要周末到机器上试下,俺板子多不怕烧!
【2楼】 yuhuashan 好像是函数指针,我不太会用,能多讲点吗?void (*reset)(void)=0x0000
-----此内容被alisha于2006-07-04,16:05:14编辑过 谢谢5楼! 二楼的程序是不是这莫理解。。
这个函数是返回一个指针,这个指针指向了0x0000这个地址。。
只要执行这个函数,那么,对于程序段寄存器ip会被赋值为0x0000,
所以代码会重新执行一遍。。。
那堆栈呢,清空了吗,还有其他的系统开销都会怎么变化呢?
小弟大三,刚学完微机原理,所以斗胆请教一句。。 asm("jmp 0x0000");这句能行不? 看看 学过了,我也试试……
页:
[1]