原创 51单片机软件复位代码

2008-5-30 14:52 5682 4 5 分类: MCU/ 嵌入式

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



PARTNER CONTENT

文章评论1条评论)

登录后参与讨论

用户146077 2008-6-15 18:13

(*(void(*)())0)() 软件复位 博主的那个没有强制转化! 不过汇编出来的结果是对的 软件复位 寄存器的值是不清零的
相关推荐阅读
用户1229912 2008-12-26 18:16
Shell编程的几个环境变量和参数变量
1. 环境变量在Shell脚本程序开始执行的时候,一些变量会根据环境中的值进行初始化. 这些变量通常使用大写的字母做名字,用户在脚本程序里定义的变量一般使用小写字母做名字. 下面是一些比较常见的变量:...
用户1229912 2008-11-18 17:50
Linux 脚本编写基础
1. Linux 脚本编写基础1.1 语法基本介绍1.1.1 开头程序必须以下面的行开始(必须方在文件的第一行):#!/bin/sh  符号#!用来告诉系统它后面的参数是用来执行该文件的程序。在这个例...
用户1229912 2008-07-28 12:48
JFFS2 文件系统及新特性介绍
JFFS2 是一个开放源码的项目(www.infradead.org)。它是在闪存上使用非常广泛的读/写文件系统,在嵌入式系统中被普遍的应用。这篇文章首先分析了在闪存上使用 JFFS2的必要性,然后详...
用户1229912 2008-07-20 13:33
Linux操作系统文件系统基础知识详解[转]
一 、Linux文件结构   文件结构是文件存放在磁盘等存贮设备上的组织方法。主要体现在对文件和目录的组织上。  目录提供了管理文件的一个方便而有效的途径。  Linux使用标准的目录结构,在安装的时...
用户1229912 2008-07-04 16:16
系统学习Linux的十一点建议
  随着Linux应用的扩展许多朋友开始接触Linux,根据学习Windows的经验往往有一些茫然的感觉:不知从何处开始学起。这里介绍学习Linux的一些建议。  随着Linux应用的扩展许多朋友开始...
用户1229912 2008-07-02 13:09
u-boot 命令大全
Printenv 打印环境变量。Uboot> printenvbaudrate=115200ipaddr=192.168.1.1ethaddr=12:34:56:78:9A:BCserverip...
我要评论
1
4
关闭 站长推荐上一条 /3 下一条