当前位置:首页 > 单片机 > 单片机
[导读]51单片机软件复位汇编代码POP ACC ; pop return addressPOP ACC;弹出PCMOV SP,#30H ;复位后SP为07H ,这样就会复位椎栈MOV PSW,#00H ;清寄存器CLR A ; push 0 as newPUSH ACC ; return address to stackPUSH ACC;重置

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

扩展阅读:8位单片机 16位 32位区别?

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除( 邮箱:macysun@21ic.com )。
换一批
延伸阅读
关闭