当前位置:首页 > 单片机 > 单片机
[导读]引言   设置复位标志位便于区分不同原因引发的复位,作为一种新技术被越来越多的新型单片机所采纳。例如Philips公司的P87LPC700和 P89LPC900系列、Freescale公司(原Motorola半导体部)的MC68HC05系列和MC68HC08系列

引言   设置复位标志位便于区分不同原因引发的复位,作为一种新技术被越来越多的新型单片机所采纳。例如Philips公司的P87LPC700和 P89LPC900系列、Freescale公司(原Motorola半导体部)的MC68HC05系列和MC68HC08系列、Sunplus公司的 SPMC65系列、Microchip公司的PIC系列等,内部都设计了专门用于记录各种复位标志的状态寄存器。   MC68HC08系列有一个复位状态寄存器,负责记录6种复位标志位:上电复位、引脚复位、看门狗复位、非法指令复位、非法地址复位和欠压复位。 SPMC65系列有一个系统控制寄存器,负责记录5种复位标志位:上电复位、外部复位、看门狗复位、非法地址复位和欠压复位。51兼容的 P89LPC900系列有一个复位源寄存器,负责记录6种复位标志位:欠压复位、上电复位、外部复位、看门狗复位、软件复位和UART收到间隔字符复位(主要作为进入ISP监控程序的途径之一)。就连初学者很常用的 AT89S51/52和P89C52X2,也在其电源控制寄存器PCON中增设了一个上电标志位POF。 1 复位标志位的设置方法   传统的80C51单片机没有设计复位标志位的记录功能,这应该说是一种遗憾,那么能否通过一定的技术手段来弥补这个缺憾呢?这里给广大80C51单片机用户提供一种启示和引导。   实现复位标志位的记录肯定需要一定的硬件电路支持,而这种电路的设计不存在固定模式。笔者利用一片MAX813L设计了一种支撑电路,如图1所示,仅供读者参考。


图1 80C51设置复位标志的支撑电路   在图1中,应用了一个4输入端“与非”门G1和一个按钮开关SW1,还占用了80C51的5条I/O引脚P1.0"P1.4以及一个外部中断源 INT0,并且预先通过初始化软件设置INT0为唯一的高级中断源,下降沿触发方式有效,开放总中断使能位EA。平时G1因各输入端都维持在高电平上,因而其输出端也保持高电平。电路中利用了一个海量电容器C1作为储存能量的器件,扮演着备用电池的角色。由于二极管D1的存在,在主电源断电期间,C1仅为单片机供电,应该让这时的80C51进入耗能最低的停机状态(PD模式)。   在图1电路的基础上配合必要的用户软件,就可以在7种不同复位源引起复位之后保存6个标志位来记录7种复位标志,以下分别进行讲解。可以事先在RAM 的位寻址区间分配一个字节,例如20H单元,用于记录6个复位标志位,如表1所列。 表1 用户定义的系统复位标志寄存器(SRFR)


  假设该寄存器定名为SRFR(System Reset Flag Register),字节地址为20H,8位当中仅利用了6位,bit5"bit0分别记录人工复位、欠压复位、看门狗复位、非法地址复位、软硬件复位和软件复位。   ① MRST:人工复位。当复位按钮SW1被按下时引发INT0中断;在中断服务程序中检测输入引脚P1.4的状态。如果P1.4=0,则置位MRST,记录下曾经发生了一次人工复位操作。然后进行一次主动的复位操作,方法是从输出脚P1.0输出一个低电平给MAX813L的输入引脚MR,经 MAX813L延时后从输出端RESET送出高电平复位信号给80C51,令其进行一次硬件复位操作。   ② LVR:欠压复位。当上游电源电压开始跌落并且下降到MAX813L的PFI检测门限以下,输出端PFO送出低电平,引发INT0中断;在中断服务程序中检测输入引脚P1.3的状态。如果P1.3=0,则置位LVR,记录下曾经发生了一次欠压复位操作;然后进行一次主动的复位操作(方法同上),或者令单片机进入停机状态,以便节省能耗和保持数据,以及等待主电源的恢复。   ③ WDR:看门狗复位。当发生看门狗溢出时,MAX813L的输出端WDO送出低电平,引发INT0中断;在中断服务程序中检测输入引脚P1.2的状态。如果 P1.2=0,则置位WDR,记录下曾经发生了一次看门狗复位操作;然后进行一次主动的复位操作(方法同上)。喂狗操作利用了一个I/O引脚P1.1。   ④ IAR:非法地址复位。当发生非法地址时,80C51的输出端PSEN送出低电平瞬时脉冲,也会引发一次INT0中断;在中断服务程序中检测输入引脚 P1.4"P1.2的状态。如果P1.4"P1.2=111,则置位IAR,表示发生了一次非法地址复位操作;然后进行一次主动的复位操作(方法同上)。   ⑤ SHR: 软硬件复位。当发生了软件陷阱的捕捉事件,或者软件看门狗的溢出事件时,可以直接置位SHR,代表发生了一次软硬件复位操作;然后进行一次主动的复位操作(方法同上)。如果利用T0作软件WDT,则应该同时设置INT0和T0中断源为高级中断。   ⑥ SWR: 软件复位。当发生了软件陷阱的捕捉事件,或者软件看门狗的溢出事件时,也可以直接置位SWR,代表发生了一次软件复位操作;然后调用软件复位程序 SWRST即可。软件复位程序的编写方法如下: SWRST:;定义软件复位程序的实际入口地址  CLREA;首先关闭中断源总使能位  SETBF0;设置一个软件复位标志位  MOVP0,#0FFH;设定通用端口P0为高阻输入状态  MOVP1,#0FFH;设定通用端口P1为高阻输入状态  MOVP2,#0FFH;设定通用端口P2为高阻输入状态  MOVP3,#0FFH;设定通用端口P3为高阻输入状态  MOVPSW,#00H;设定程序状态字寄存器为原始值  ;(根据需要还可初始化其他SFR)  MOVDPTR,#SWR0;为RETI准备弹出地址,而又不改变  ;执行顺序  PUSHDPL;压栈低字节,在先  PUSHDPH;压栈高字节,在后  RETI;中断返回指令,清除高级中断激活触  ;发器 SWR0:  CLRA;准备复位地址  PUSHACC;压栈低字节00H   PUSHACC;压栈高字节00H   RETI;清除低级中断激活触发器,并跳到  ;0000H   ⑦ POR:电源上电复位。虽然在用户定义的系统复位标志寄存器(SRFR)中,没有直接设置一个POR标志位,但是如果检测以上6个标志位同时为0,则表明此前进行的是一次上电复位。理由是,经过实验验证(实验所用的单片机型号为SST89C58),在每次初次加电时,包含RAM的20H单元在内的 80C51内部 RAM区间(00H"7FH),其内容全部自动清零;在每次RST引脚复位(或者软件复位)时,其内容维持不变。而各个SFR无论是上电复位还是RST引脚复位时,均被还原为原始值(又称复位值),如表2所列。 表2 片内可改写存储器空间复位情况


  对于那些仅增设了一个复位标志位(技术手册中记作POF)的较新型单片机(如AT89S51/52、AT89S8252、AT89C53、 AT89C55WD、AT89C51RC和P89C51X2/52X2/54X2/58X2等型号),也恰好不再需要这里所设置的POR标志位了。   对于没有配备备用电源的单片机应用系统,还可以考虑利用E2PROM在断电之前的瞬间来转存复位标志位,以便在断电之后也不会彻底消失。该情况下既可选用外挂E2PROM数据存储器(如8脚串行的24C01、93C46或25C040等)的电路方案,也可选用内部本身带有E2PROM数据存储器的单片机型号,如AT89S8252等。这样在断电之前的瞬间,利用电源滤波电容C2上的少量残留能量,即可完成对于E2PROM的烧写操作。 2 复位标志位的应用方法   一般的初始化程序段落的编写方法很简单,不过它仅适用于那些要求不高、功能也很简单的单片机项目。这类项目(如一些小家电之类的单片机应用)几乎不存在很强的“过程性”或“不间断性”,对于随时可能发生的复位操作以及重新从头运行的用户程序,不会带来太大的影响或破坏性后果。   而对于“过程性”或“不间断性”要求很强的单片机项目,一旦发生偶然性复位操作,并且重新从头运行用户程序,那么将会带来极大的负面影响或破坏性后果。例如,单片机控制的面包机,在一次加工面包的过程中,会经历搅拌、加热等工序;假若其间发生意外复位并且重新从头执行程序,则会导致成为废品或者烧焦。电脑控制的手术机器人,在一次手术过程中如果发生意外复位并且返工,将会带来难以想象的严重后果。电脑控制的导弹,在对准目标发射之后的飞行过程中,如果发生意外复位并且重新从头执行程序,那么将会产生难以预料的结果。   综上所述,单片机在工作过程中,受到意外干扰而进行复位操作,如果说是不可避免的,那么复位之后从何处或在何种背景下开始运行程序,则是可以人为安排的。因此,复位标志位的应用方法实质上就是复位处理程序的编写方法。复位处理程序的处理流程如图2所示。


图2 复位处理程序流程   类似于编写UART串口通信中断服务程序的思路,在进入中断程序之后首先要检测中断标志位,看是一次接收中断(RI=1)还是一次发送中断(SI=1),然后再进入不同程序分支进行针对性服务。从图2中可以看出,在从复位矢量0000H开始执行用户程序时,首先应该检测复位标志寄存器,判断是电源初始加电还是其他复位源引起的复位或程序计数器PC清零。   ① 如果是电源初始加电,则进行原始状态的初始化。这种情况最简单。   ② 如果属于程序跑飞引起的软件复位、软硬件复位、非法地址复位,或者人工强行复位,则应该依据具体情况尽量恢复数据或修正参数,以便尽最大可能不影响或少影响程序的正常运行(恢复和修正数据的具体算法这里不再深入探讨)。   ③ 如果是欠压复位,则尽量从被打断的程序断点处重新开始执行程序。具体的实现方法和步骤可以是: 复位之前——单片机响应PFO中断请求而进入其服务程序后,保存堆栈指针SP当前值到指定RAM单元,把单片机推入停机状态;复位之后——待电源恢复后, MAX813L得电而从RESET端送出高电平信号,唤醒停机状态下的单片机。若唤醒后的单片机再检测到是欠压复位,则首先复原先前的SP值,再利用一条 RET(或RETI)指令弹出停机之前的程序断点到PC,从而可以继续执行前面的任务。 参考文献 [1] 李学海.PIC单片机实用教程——基础篇/扩展篇. 北京:北京航空航天大学出版社,2002. [2] 李学海.EM78单片机实用教程——基础篇/扩展篇. 北京:电子工业出版社,2003. [3] 李学海.凌阳8位单片机——基础篇/提高篇. 北京:北京航空航天大学出版社,2005. [4] 李学海.PIC单片机原理. 北京:北京航空航天大学出版社,2004. [5] 李学海.PIC单片机实践. 北京:北京航空航天大学出版社,2004

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

上海2024年5月13日 /美通社/ -- 在数字化时代,高效的税务管理和ERP系统成为企业发展的关键。为了满足这一需求商应信息科技与Exact Software 易科软件就金四全电票税系统与ERP系统集成及商务合作建立...

关键字: AC 软件 BSP 数字化

上海2024年5月13日 /美通社/ -- CONNECT 2 是更加用户友好的声卡,仅需轻点几下,它就能为人声和乐器的录制增添异彩。触控面板触感舒适、控制精准、一目了然。所有输入输出信号均可独立静音。自动设置功能通过内...

关键字: NEC 声卡 控制 软件

央视《今日说法》栏目近期报道了一名90后程序员通过开发非法视频搬运软件在不到一年的时间里获利超700万,最终获刑的案例。

关键字: 程序员 软件

上海2024年4月22日 /美通社/ -- 恶性的攻击和意外事件总是防不胜防,提前部署灾备方案可以在遭遇意外时尽可能减少企业损失。那么面对无处不在的勒索病毒和潜在风险,为什么依然有很多企业还会遭遇数据丢失?

关键字: 勒索病毒 软件 电脑 群晖数据

SAP(思爱普)近日发出的裁员计划,不仅涉及全球范围内约8000个职位,更是在中国区造成了近1500名正式员工和合同工不续的情况。

关键字: 软件 互联网

上海2024年4月17日 /美通社/ -- 每年4月17日是世界血友病日。今年,世界血友病日以"认识出血性疾病,积极预防和治疗"为主题,呼吁关注所有出血性疾病,提升科学认知,提高规范化诊疗水平,让每一位出血性疾病患者享有...

关键字: VII 动力学 软件 BSP

自 ChatGPT 出现以来,生成式人工智能 (GenAI) 在亚洲和大洋洲的开发和部署势头强劲,Omdia 的最新《亚洲和大洋洲的生成式人工智能 - 2024 年:通过本地化实现民主化》报告表明,到 2024 年底,G...

关键字: 人工智能 软件 AI

德国埃朗根2024年4月16日 /美通社/ -- Elektrobit 今日宣布推出 EB zoneo GatewayCore——首款支持、配置和集成现代微控制器新一代硬件加速器的软件产品,可应用于先进的汽车电子/电气架...

关键字: 汽车 软件 硬件加速 通信网络

Windows Embedded Compact 7(简称WinCE)是一种专为嵌入式系统设计的操作系统,具有体积小、效率高、可定制性强的特点。在WinCE中设置自动运行软件,通常是为了满足设备在启动后自动执行特定任务的...

关键字: 嵌入式系统 软件 操作系统

检查电解电容的胶管或引脚,通常胶管一端印有负极标识,引脚处有带网格的一端代表负极。

关键字: 电解电容 正负极 引脚
关闭
关闭