单片机复位标志位的设置与应用研究_第1页
单片机复位标志位的设置与应用研究_第2页
单片机复位标志位的设置与应用研究_第3页
单片机复位标志位的设置与应用研究_第4页
单片机复位标志位的设置与应用研究_第5页
已阅读5页,还剩5页未读 继续免费阅读

付费下载

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、单片机复位标志位的设置与应用研究技术分类:嵌入式系统I 2006-09-17来源:21IC中国电子网|作者:李学海 刘治山引言设置复位标志位便于区分不同原因引发的复位,作为一种新技术被越来越多的新型 单片机所采纳。例如Philips 公司的P87LPC700和P89LPC900系列、Freescale 公司(原Motorola半导体部)的 MC68HC0系列和 MC68HC0系列、Sunplus公司的SPMC65系列、Microchip公司的PIC系列等,内部都设计了专门用于记录各种复位标志的状态寄存器。MC68HC0系列有一个复位状态寄存器,负责记录6种复位标志位:上电复位、引脚复位、看门狗

2、复位、非法指令复位、非法地址复位和欠压复位。SP MC65系列有一个系统控制寄存器,负责记录5种复位标志位:上电复位、外部复位、看门狗复位、非法地址复位和欠压复位。51兼容的P89LPC900系列有一个复位源寄存器,负责记录6种复位标志位:欠压复位、上电复位、外部复位、看门狗复位、软件复位和UART攵到间隔字符复位(主要作为AT89S51/52 和 P89C52X2 也在其电进入ISP监控程序的途径之一)。就连初学者很常用的控制寄存器P CON中增设了一个上电标志位 POF>1 复位标志位的设置方法这应该说是一种遗憾,那么能否传统的80C51单片机没有设计复位标志位的记录功能,通过一定的

3、技术手段来弥补这个缺憾呢?这里给广大80C51单片机用户提供一种启示和引导。实现复位标志位的记录肯定需要一定的硬件电路支持,而这种电路的设计不存在固定模1所示,仅供读者参考。式。笔者利用一片 MAX813设计了一种支撑电路,如图MR WDIMAXC1Dt n.47F输出溟(5倍号T叫F下RST 讥tPl.WPl.1INTO S0C51PSEN WDR(P1.;) LVRH 鞋 MRST(P1.4) GND址 T图1 80C51设#复位标志的支»电路在图1中,应用了一个4输入端“与非”门G1和一个按钮开关 SW1还占用了 80C51EA平时G1因各输入端都的5条I/O

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

5、定义的系统复位标志寄存器(SRFR)胃I Ihl!l7Li IE 11丨点二IlH 1liLl.ilinZIhrl liirl'iIIIiflMUSIlA'RwhRI AR引IK1'?地怕2?|-6】丨Hi二訂1二IIMillJN 1 1假设该寄存器定名为 SRFR( System Reset Flag Register ),字节地址为 20H, 8位当中仅利用了 6位,bit5bit0分别记录人工复位、欠压复位、看门狗复位、非法地址复 位、软硬件复位和软件复位。MRST:人工复位。当复位按钮SW1被按下时引发INT0中断;在中断服务程序中检测输入引脚P1.4的状态。如

6、果P1.4=0,则置位MRST记录下曾经发生了一次人工复位操作。然后进行一次主动的复位操作,方法是从输出脚P1.0输出一个低电平给 MAX813L的输入引脚MR经MAX813L延时后从输出端 RESET送出高电平复位信号给 80C51,令其进行一次硬件复位操作。LVR :欠压复位。当上游电源电压开始跌落并且下降到MAX813L勺PFI检测门限以下,输出端PFO送出低电平,引发INTO中断;在中断服务程序中检测输入引脚P1.3的状态。如果P1.3=0,则置位LVR记录下曾经发生了一次欠压复位操作;然后进行一次主动的复位操作(方法同上),或者令单片机进入停机状态,以便节省能耗和保持数据,以及等待主

7、电源的恢复。 WDR:看门狗复位。当发生看门狗溢出时,MAX813L的输出端 WDO送出低电平,引发INTO中断;在中断服务程序中检测输入引脚P1.2的状态。如果 P 1.2=0,则置位 WDR记录下曾经发生了一次看门狗复位操作;然后进行一次主动的复位操作(方法同上)。喂狗操作利用了一个I/O引脚P1.1 。IAR :非法地址复位。当发生非法地址时,80C51的输出端PSEN送出低电平瞬时脉冲,也会引发一次INTO中断;在中断服务程序中检测输入引脚P1.4P1.2的状态。如果P1.4P1.2=111,则置位IAR,表示发生了一次非法地址复位操作;然后进行一次主动的来源:21IC中国电子网I作者

8、:李学海 刘治山复位操作(方法同上)。SHR :软硬件复位。当发生了软件陷阱的捕捉事件,或者软件看门狗的溢出事件时,可以直接置位SHR代表发生了一次软硬件复位操作;然后进行一次主动的复位操作(方法同上)。如果利用 TO作软件 WDT则应该同时设置INTO和TO中断源为高级中断。SWR:软件复位。当发生了软件陷阱的捕捉事件,或者软件看门狗的溢出事件时,也可以直接置位SWR代表发生了一次软件复位操作;然后调用软件复位程序SWRS即可。软件复位程序的编写方法如下:WKST:;走义软件复位程序册实际入口地址CLKE出首先关闭中断源总使能位设a-个软件复位标志位设定通用端口 PO为高阻输入状态 设定通用

9、端口 P1为高阻输入状态 设定通用端口 P2为高阻輸入状态 设定通用端口 P3为高阻输入状态 设定程序状态字寄存器为原始值HOVPO,M0VP1,M0VP2,MQVP3,tfOFPHjWVPSW. SOOH?;C根据需要还可初始化其他SFK)M0VDP1K,为RETI准备弹出地址,而又不改变】执行帧序PUSHDPL;压栈K字节,在先PUSHDPH;压栈高字节,在后KETI;中断返回指令,清除高级中断激活触;发器SWR0;CLRAi准备复位地址PUSHACC;压栈底字节OOHPUSHACC;压栈高字节OOHRETb渚除低级中断慰活触发器,芥跳到J OOOOHPOR:电源上电复位。虽然在用户定义的

10、系统复位标志寄存器(SRFR中,没有直接设置一个POR标志位,但是如果检测以上 6个标志位同时为 0,则表明此前进行的是一次上电复位。理由是,经过实验验证(实验所用的单片机型号为SST89C58,在每次初次加电时,包含RAM的20H单元在内的80C51内部RAM区间(00H7FH,其内容全部自动清零;在每次RST引脚复位(或者软件复位)时,其内容维持不变。而各个SFR无论是上电复位还是RST引脚复位时,均被还原为原始值(又称复位值),如表2所列。ff協«订训黄翌丨电址卜RS1 ;旳塑悝i'f辽押kAM泊?惟n不1曙H车1M忖m划协谁心馭吏叢2片内可改写存储器空间复悅情况对于那

11、些仅增设了一个复位标志位(技术手册中记作POF的较新型单片机(如AT89S51/52、AT89S8252 AT89C53 AT89C55WD AT89C51RC和 P89C51X2/52X2/54X2/58X2等型号),也恰好不再需要这里所设置的POF标志位了。对于没有配备备用电源的单片机应用系统,还可以考虑利用E2P ROME断电之前的瞬间来转存复位标志位,以便在断电之后也不会彻底消失。该情况下既可选用外挂E2PROM数 据存储器(如8脚串行的24C01、93C46或25C040等)的电路方案,也可选用内部本身带有2E2P ROM数据存储器的单片机型号,如AT89S8252等。这样在断电之前

12、的瞬间,利用电源滤波电容C2上的少量残留能量,即可完成对于E2PRO啲烧写操作。2 复位标志位的应用方法般的初始化程序段落的编写方法很简单,不过它仅适用于那些要求不高、功能也很简单的单片机项目。这类项目(如一些小家电之类的单片机应用)几乎不存在很强的“过程性” 或“不间断性”,对于随时可能发生的复位操作以及重新从头运行的用户程序,不会带来太 大的影响或破坏性后果。而对于“过程性”或“不间断性”要求很强的单片机项目,一旦发生偶然性复位操作,例如,单片机控并且重新从头运行用户程序,那么将会带来极大的负面影响或破坏性后果。制的面包机,在一次加工面包的过程中,会经历搅拌、加热等工序;假若其间发生意外复

13、位并且重新从头执行程序, 则会导致成为废品或者烧焦。电脑控制的手术机器人, 在一次手术过程中如果发生意外复位并且返工,将会带来难以想象的严重后果。电脑控制的导弹,在对准目标发射之后的飞行过程中,如果发生意外复位并且重新从头执行程序,那么将会产生难 以预料的结果。综上所述,单片机在工作过程中,受到意外干扰而进行复位操作,如果说是不可避免的,那么复位之后从何处或在何种背景下开始运行程序,则是可以人为安排的。因此,复位标志2所示。位的应用方法实质上就是复位处理程序的编写方法。复位处理程序的处理流程如图I風0000门开始执行檯序t测系轨复电£杯志存器SRFr类似于编写UART串口通信中断服务

14、程序的思路,在进入中断程序之后首先要检测中断 标志位,看是一次接收中断(RI=1 )还是一次发送中断(SI=1),然后再进入不同程序分支PC清进行针对性服务。从图2中可以看出,在从复位矢量0000H开始执行用户程序时, 首先应该 检测复位标志寄存器,判断是电源初始加电还是其他复位源引起的复位或程序计数器 零。 如果是电源初始加电,则进行原始状态的初始化。这种情况最简单。如果属于程序跑飞引起的软件复位、软硬件复位、非法地址复位,或者人工强行复位,则应该依据具体情况尽量恢复数据或修正参数,以便尽最大可能不影响或少影响程序的具体的实现方参考文献:1:2002.:2 :3 :4 :5 :正常运行(恢复和修正数据的具体算法这里不再深入探讨)。如果是欠压复位,则尽量从被打断的程序断点处重新开始执行程序。法和步骤可以是:复位之前一一单片机响应 PFO中断请求而进入其服务程序后,保存堆栈 指针SP当前值到指定RAM单元,把单片机推入停机状态;复位之后一一待电源恢复后,MAX813L得电而从RESET端送出高电平信号,唤醒停机状态下的单片机。若唤醒后的单片机再检测到是欠压复位,则首先复原先前的SP值,再利用一条

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论