软件复位问题(跳转PC)
时间:11-09
来源:互联网
点击:
#pragma asm
ljmp 0
#pragma endasm //C插入汇编实现
上次搞一个51的IAP时,就是软件复位寄存器搞得不够彻底,导致程序运行一段时间后莫名其妙死掉...后来干脆不用软件去复位寄存器了,直接设置一个寄存器让系统复位(或者打开内狗),然后再判断该执行用户程序还是IAP程序,不再倒塌,问题解决...
当程序飞后,内部模块可能都乱了~~~
假定你根本未使用T2,那么你就不会考虑T2的初始化问题。
假定软件复位没进行ET2=0,TR2=0,且未未在T2Isr处加reti
则EA=1后,若跑飞时ET2=1,TR2=1,后果可知~~~
所以忠告大家:
初始化一定要彻底,一切系统资源都要初始化,哪怕未用!!!
有硬件看门狗时,最好while(1)自毁~~~
这样可对自己的有用模块再初始化,切记:所有中断向量表(程序)无用的都应该用reti.
ljmp 0
#pragma endasm //C插入汇编实现
深入--单片机软复位(PC跳转) | |
|
上次搞一个51的IAP时,就是软件复位寄存器搞得不够彻底,导致程序运行一段时间后莫名其妙死掉...后来干脆不用软件去复位寄存器了,直接设置一个寄存器让系统复位(或者打开内狗),然后再判断该执行用户程序还是IAP程序,不再倒塌,问题解决...
当程序飞后,内部模块可能都乱了~~~
假定你根本未使用T2,那么你就不会考虑T2的初始化问题。
假定软件复位没进行ET2=0,TR2=0,且未未在T2Isr处加reti
则EA=1后,若跑飞时ET2=1,TR2=1,后果可知~~~
所以忠告大家:
初始化一定要彻底,一切系统资源都要初始化,哪怕未用!!!
有硬件看门狗时,最好while(1)自毁~~~
这样可对自己的有用模块再初始化,切记:所有中断向量表(程序)无用的都应该用reti.
软件复位跳转P 相关文章:
- Windows CE 进程、线程和内存管理(11-09)
- RedHatLinux新手入门教程(5)(11-12)
- uClinux介绍(11-09)
- openwebmailV1.60安装教学(11-12)
- Linux嵌入式系统开发平台选型探讨(11-09)
- Windows CE 进程、线程和内存管理(二)(11-09)