微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > MCU和DSP > 单片机复位标志位的设置与应用研究

单片机复位标志位的设置与应用研究

时间:09-15 来源:互联网 点击:


对于那些仅增设了一个复位标志位(技术手册中记作POF)的较新型单片机(如AT89S51/52、AT89S8252、AT89C53、 AT89C55WD、AT89C51RC和P89C51X2/52X2/54X2/58X2等型号),也恰好不再需要这里所设置的POR标志位了。

对于没有配备备用电源的单片机应用系统,还可以考虑利用E2PROM在断电之前的瞬间来转存复位标志位,以便在断电之后也不会彻底消失。该情况下既可选用外挂E2PROM数据存储器(如8脚串行的24C01、93C46或25C040等)的电路方案,也可选用内部本身带有E2PROM数据存储器的单片机型号,如AT89S8252等。这样在断电之前的瞬间,利用电源滤波电容C2上的少量残留能量,即可完成对于E2PROM的烧写操作。

3 复位标志位的应用方法

一般的初始化程序段落的编写方法很简单,不过它仅适用于那些要求不高、功能也很简单的单片机项目。这类项目(如一些小家电之类的单片机应用)几乎不存在很强的“过程性”或“不间断性”,对于随时可能发生的复位操作以及重新从头运行的用户程序,不会带来太大的影响或破坏性后果。

而对于“过程性”或“不间断性”要求很强的单片机项目,一旦发生偶然性复位操作,并且重新从头运行用户程序,那么将会带来极大的负面影响或破坏性后果。例如,单片机控制的面包机,在一次加工面包的过程中,会经历搅拌、加热等工序;假若其间发生意外复位并且重新从头执行程序,则会导致成为废品或者烧焦。电脑控制的手术机器人,在一次手术过程中如果发生意外复位并且返工,将会带来难以想象的严重后果。电脑控制的导弹,在对准目标发射之后的飞行过程中,如果发生意外复位并且重新从头执行程序,那么将会产生难以预料的结果。

综上所述,单片机在工作过程中,受到意外干扰而进行复位操作,如果说是不可避免的,那么复位之后从何处或在何种背景下开始运行程序,则是可以人为安排的。因此,复位标志位的应用方法实质上就是复位处理程序的编写方法。复位处理程序的处理流程如图2所示。


类似于编写UART串口通信中断服务程序的思路,在进入中断程序之后首先要检测中断标志位,看是一次接收中断(RI=1)还是一次发送中断(SI=1),然后再进入不同程序分支进行针对性服务。从图2中可以看出,在从复位矢量0000H开始执行用户程序时,首先应该检测复位标志寄存器,判断是电源初始加电还是其他复位源引起的复位或程序计数器PC清零。

① 如果是电源初始加电,则进行原始状态的初始化。这种情况最简单。

② 如果属于程序跑飞引起的软件复位、软硬件复位、非法地址复位,或者人工强行复位,则应该依据具体情况尽量恢复数据或修正参数,以便尽最大可能不影响或少影响程序的正常运行(恢复和修正数据的具体算法这里不再深入探讨)。

③ 如果是欠压复位,则尽量从被打断的程序断点处重新开始执行程序。具体的实现方法和步骤可以是: 复位之前——单片机响应PFO中断请求而进入其服务程序后,保存堆栈指针SP当前值到指定RAM单元,把单片机推入停机状态;复位之后——待电源恢复后, MAX813L得电而从RESET端送出高电平信号,唤醒停机状态下的单片机。若唤醒后的单片机再检测到是欠压复位,则首先复原先前的SP值,再利用一条 RET(或RETI)指令弹出停机之前的程序断点到PC,从而可以继续执行前面的任务。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top