导航: 老古网老古论坛XMOS公共讨论区XMOS开源项目区单片机程序设计嵌入式系统广告区域
→各位高手:请教用软件怎么实现单片机复位[韩非子]

 *第12910篇: 各位高手:请教用软件怎么实现单片机复位

  
楼 主:韩非子 2003年5月31日10:00
 各位高手:请教用软件怎么实现单片机复位
我不想通过硬件包括看门狗
用纯软件怎么实现复位呢?
需要把那些寄存器置零
还是用其他方法?
谢谢!
  
2楼:Kuang-chingTsui 2003年5月31日10:41
 软件复位:
如果你的程序中没有中断,就比较好办,只要将硬件复位后的寄存器、I/O等的状态用软件置位后跳转到0地址处即可。
如果有中断就需要仔细对待,软件复位前必须要与中断管理有关的寄存进行处理,中断管理系统的有些寄存器是不可以程序访问的,必须使用RETI(for 51mcu)指令才可以。
具体情况可能很复杂。
  
3楼:韩非子 2003年5月31日11:58
 很感谢
我的中断有外部0中断和定时器0中断
请问是否有影响?
我想当执行到一句命令时执行复位
是否用全置零和跳转到0地址即可
  
4楼:Kuang-chingTsui 2003年5月31日12:39
 参考:
中断都具有随机性,所以你需要保证程序在跳转到0地址之前不会有中断产生。在jmp 0之前关闭中断是否安全,也不一定,因为cpu响应中断请求后,至少执行一条指令后才转向中断服务程序,这点处理不好回使程序不能正常执行,或者在“软件复位“后不能再次响应中断。能不能想一个别的什么办法。不知你这样做的目的是什么。
  
5楼:guest 2003年5月31日12:13
 释放所有中断,寄存器复位参照硬件位复后的
释放所有中断,寄存器复位参照硬件位复后的寄存器状态来编写。
  
6楼:Kuang-chingTsui 2003年5月31日12:40
 问题不是你想象的那么简单。。。。。。。。。。。。
  
7楼:guest 2003年5月31日16:29
 我知道了
  
8楼:L25 2003年5月31日17:02
 有的单片机有一个复位位,如51LPC系列,只需控制此位即可完成软件复位。
  
9楼:韩非子 2003年6月1日09:30
 能给出一个具体片子的名称吗?
谢谢各位

能给出一个具体片子的名称吗?
谢谢各位大虾的回复。
我的问题已经解决了。
问题是这样的,我在两个子程序之间跳转时,出现问题就是没有响应
但如果我用硬件复位一次,就好了。所以当时我想用软件复位来替代硬件复位
后来2我改了一个子程序中的语句:
     原来是:一个子程序中       CLR   P3.3
          跳至另一子程序时        SETB P3.3
     后来我将这两句去掉
     结果跳转就好使了。
    各位大虾这可能是什么原因呢?
                

  
10楼:L25 2003年6月2日13:02
 片子型号查www.zlgmcu.com。内容所述问题原因不明。

>>>>>>对该主题发表你的看法

本主题贴数10,分页: [第1页]


[上一篇主题]:做过DA和U/I的朋友请过来看看,多谢(MAX538,AD694)!

[下一篇主题]:各位大侠请稍微指点一下。