找回密码
 注册
关于网站域名变更的通知
查看: 379|回复: 1
打印 上一主题 下一主题

51单片机软件(程序)复位

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2019-3-4 09:59 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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

该用户从未签到

2#
发表于 2019-3-4 12:56 | 只看该作者
看看,谢谢分享
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

推荐内容上一条 /1 下一条

EDA365公众号

关于我们|手机版|EDA365电子论坛网 ( 粤ICP备18020198号-1 )

GMT+8, 2025-7-6 20:00 , Processed in 0.109375 second(s), 23 queries , Gzip On.

深圳市墨知创新科技有限公司

地址:深圳市南山区科技生态园2栋A座805 电话:19926409050

快速回复 返回顶部 返回列表