EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
51单片机软件(程序)复位
8 |- \4 h' v9 C5 N$ `1 i! z& j" S% p! I) s' `0 ^6 f) s% _
* B, n" \+ Y) o! B
51单片机软件复位汇编代码 POP ACC ; pop return address POP ACC ;弹出PC MOV SP,#30H ;复位后SP为07H ,这样就会复位椎栈 MOV PSW,#00H ;清寄存器 CLR A ; push 0 as new PUSH ACC ; return address to stack PUSH ACC ;重置PC=0并压到椎栈中 RETI ; execute return of interrupt ;程序又开始从0000H处开始运行,但寄存器内的值不确定! 用C51实现软件复位 方法1: void(*SoftReset)(); SoftReset=0; SoftReset(); 解释:利用函数型指针,使函数型指针指向的函数的入口地址为0。 方法2: 嵌入汇编 #pragma asm LJMP 0FFF0h;//ljmp 0000h #pragma endasm 方法3: 在C51编程过程中,用一个不存在函数,引起复位。 如下程序,编译正常,但执行到 reset()处即复位了。其时汇编代码为 LCALL C:0000。 extern void rest(void); //实际并不存在。 void main() { rest(); //复位 } 方法4:如果有用看门狗,使用看门狗复位。 |