• 已解决 73482 个问题
  • 已帮助 5993 位优秀工程师

我想知道51单片机如何实现软件复位系统(C语言),谢谢

b243af8c7ce5fbf4 2019-02-23 浏览量:1442
一直搞不懂
0 0 收起

我来回答

上传资料:
选择文件 文件大小不超过15M(格式支持:doc、ppt、xls、pdf、zip、rar、txt)
最佳答案
  • 其实就是看门狗功能,只是一条指令就行。如STC的单片机有软件复位指令,即ISP_CONTR,地址在0E7H 单元(即str ISP_CONTR=0xE7),MOV ISP_CONTR#00100000B(C语言为ISP_CONTR=0x20),内狗也是一条指令MOV WDT_CONTR#00111100B!
    • 发布于 2019-02-23
    • 举报
    • 评论 0
    • 0
    • 0

其他答案 数量:19

  • #include <AT89X51.h>
    main()
    {
            unsigned char code rst[6]={0xe40xc00xe00xc00xe00x22};//定义一个code类型的数组,一定要为code类型
            while(1)//循环测试
            {
                    TMOD=5;//测试用可以是任何语名
                    TI=1;
                    P1=0;
                    P1=1;
                    P2=2;
                    P3=3;
                    (*((void (*)())rst))();//复位
                    SCON=0x50;
            }
    • 发布于2019-02-23
    • 举报
    • 评论 0
    • 0
    • 0

  • 原理是将运行指针跳转到flash地址0,也就是加一句(*(void(*)())0x0000)();
    • 发布于2019-02-23
    • 举报
    • 评论 0
    • 0
    • 0

  • STC12和15系列有软件看门狗,或者通过CH340等芯片实现上电复位。
    • 发布于2019-02-24
    • 举报
    • 评论 0
    • 0
    • 0

  • 跳转到复位代码,程序就会从头运行
    • 发布于2019-02-25
    • 举报
    • 评论 0
    • 0
    • 0

  • 复位函数,是跟看门狗一样的,或者初始化就可以了
    • 发布于2019-02-25
    • 举报
    • 评论 0
    • 0
    • 0

  • 复位起始就是将PC指针指向0000.可以使用函数指针实现:

    void(*SoftReset)();//定义一个函数指针

    SoftReset=0;//函数在0000地址

    SoftReset();​//执行这个函数就是相当于复位。

    • 发布于2019-02-25
    • 举报
    • 评论 0
    • 0
    • 0

  • 复位就是将PC值归0000,可以使用函数指针实现:

    void(*SoftReset)();//定义一个函数指针

    SoftReset=0;//函数在0000地址

    SoftReset();//执行这个函数名就是复位。


    • 发布于2019-02-25
    • 举报
    • 评论 0
    • 0
    • 0

  • 直接跳转到 0x0 执行,就复位了
    • 发布于2019-02-25
    • 举报
    • 评论 0
    • 0
    • 0

  • 主要是运行时候跳到复位代码,将程序指针归零!
    • 发布于2019-02-26
    • 举报
    • 评论 0
    • 0
    • 0

  • 看门狗啦其实

    窗口看门狗和全局看门狗

    窗口的只看一个函数段   全局就是单片机复位  只要定时喂狗(重写计时寄存器的值)就能不复位  只要跑死了就不会喂狗  就会重启

    • 发布于2019-02-26
    • 举报
    • 评论 0
    • 0
    • 0

  • 有内置看门狗的使用看门狗

    没有的可以用外置看门狗或者另外一片单片机控制

    • 发布于2019-02-26
    • 举报
    • 评论 0
    • 0
    • 0

  • stc的单片机有软件复位设置

    就是可以把复位端设置成io口 

    软件内部复位

    • 发布于2019-02-28
    • 举报
    • 评论 0
    • 0
    • 0

  • 一般用((void(code *)(void))0x0000)()这个方法,就是强制跳转到0x0执行,不过这种方式,需要重新初始化所有外设,不然外设还是维持之前的状态
    • 发布于2019-02-28
    • 举报
    • 评论 0
    • 0
    • 0

  • 一种方式是,使用一个指针,直接跳到00地址开始执行程序
    • 发布于2019-03-14
    • 举报
    • 评论 0
    • 0
    • 0

相关问题

问题达人换一批

我想知道51单片机如何实现软件复位系统(C语言),谢谢