新闻中心

EEPW首页 > 嵌入式系统 > 设计应用 > 51单片机软件程序复位

51单片机软件程序复位

作者: 时间:2016-11-19 来源:网络 收藏
51单片机软件复位汇编代码

POP ACC ; pop return address

本文引用地址:https://www.eepw.com.cn/article/201611/318163.htm

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:如果有用看门狗,使用看门狗复位。



评论


技术专区

关闭