EDN首页   博客首页 用户登陆  |  注册
aaa
发表于 2008/5/30 14:52:26

2

关于投票

51单片机软件复位代码

51单片机软件复位汇编代码
      CLR     A
      PUSH    ACC
      PUSH    ACC
      RETI

;程序又开始从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:如果有用看门狗,使用看门狗复位。

系统分类: 单片机  |  用户分类: 51单片机  |  标签: 无标签  |  来源: 原创  | 

点击查看原文

发表评论 阅读全文(966) | 回复(1)

Total , Page /