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

发布者:中原读书客最新更新时间:2006-09-27 来源: EDN China关键字:复位  单片机  寄存器 手机看文章 扫描二维码
随时随地手机看文章

引言

设置复位标志位便于区分不同原因引发的复位,作为一种新技术被越来越多的新型单片机所采纳。例如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中,应用了一个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所列。

假设该寄存器定名为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即可。软件复位程序的编写方法如下:

⑦ POR:电源上电复位。虽然在用户定义的系统复位标志寄存器(SRFR)中,没有直接设置一个POR标志位,但是如果检测以上6个标志位同时为0,则表明此前进行的是一次上电复位。理由是,经过实验验证(实验所用的单片机型号为SST89C58),在每次初次加电时,包含RAM的20H单元在内的80C51内部 RAM区间(00H~7FH),其内容全部自动清零;在每次RST引脚复位(或者软件复位)时,其内容维持不变。而各个SFR无论是上电复位还是RST引脚复位时,均被还原为原始值(又称复位值),如表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所示。

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

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

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

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

关键字:复位  单片机  寄存器 引用地址:单片机复位标志位的设置与应用研究

上一篇:基于M—BUS的趣低功耗数据采集系统
下一篇:基于GPS的高精度无误差倒计时牌设计

推荐阅读最新更新时间:2024-05-13 18:14

单片机入门 - 模电、数电与单片机
大家都用过计算器,有没有想过它是怎么实现的呢?这里我不详述计算器的原理,而只对思路进行简单介绍。等我们学会了单片机,也可以亲手制作一个计算器。 用电路进行数学计算 通过电路进行数学计算,应该怎么做呢?为了便于理解,下面我举个很简单的例子。 在这个电路中,电阻R1=R2,我给A、B两点分别接入3V和5V电压,这个时候,C点的电压则为(5+3)/2=4V。这个电路完成了一个求平均值的操作,如果我们用1V表示数字1,它计算出来3和5的平均值是4;如果我们定义1mV表示数字1,这个电路就计算出了3000和5000的平均值是4000。 如果我能通过巧妙的方法,利用电阻电容乃至晶体管等元器件的特性,设计出很多类似这样的电路
[单片机]
<font color='red'>单片机</font>入门 - 模电、数电与<font color='red'>单片机</font>
基于AVR单片机直线开关磁阻电机高精度位置控制
一、项目概述 1.1 引言 电机是工业生产不可缺少的动力设备,电机的品种很多,作用也相当广泛。直线开关磁阻电机时一种新型的牵引电机。其主要有以下优点:结构简单,制作成本不高。工作稳定且能够在恶劣的环境下长时间正常工作,比如高温环境,开关磁阻电机有较好的散热性能,可以在高温下正常工作。随着电力电子技术的发展,开关磁阻电机控制将会变得更加容易并且控制效果更好。这种电机启动转矩大,过载能力强,调速范围广。直线开关磁阻电机除了具有以上优点以外,在一些需要做直线运动的场合,它显示出了强大的优越性:再也不需要像传统的做直线运动的装置那样,通过丝杆等传动装置将旋转的运动转化为直线运动。这样再一次的将中间环节给节省下来了,不仅降低了设备的成本
[电源管理]
基于AVR<font color='red'>单片机</font>直线开关磁阻电机高精度位置控制
SPWM波在单片机上的实现与调节(基于MSP430F5529)
SPWM波的定义和生成方法在这里就不多说了,本文主要说SPWM波在单片机上的实现,以及如何调节滤出后的正弦波的频率及幅度。 先弄清楚SPWM在单片机上如何产生,比如你要输出100HZ的SPWM正弦波,每个周期100个点,则定时器B的中断频率为100*100=10K,用于载波(定时器A)的PWM频率应 =10K(这里我建议载波为1M,因为定时器的配合问题会有+-1的误差,所以载波尽量的大则滤出的正弦波的波形越好)。 通过软件,你先得到100个点的正弦波采样值,你可以用定时器A来产生1MHZ的PWM,然后用定时器B,做定时器中断,10KHZ的频率,每次中断,就把一个采样值赋值给定时器A的输出通道:CCRx。然后不停的循环,每中断一
[单片机]
单片机脉搏测量仪的制作
本文介绍一种用 单片机 制作的脉搏测量仪,只要把手指放在传感器内,很快就可以精确测出每分钟脉搏数,测量的结果用三位数字显示出来。 一、电路工作原理 电路原理见附图。电路由传感器电路、信号放大和整形电路、 单片机 电路、数码显示电路等四部分组成。 传感器由红外线发射二极管和接收二极管组成,测量原理如下:将手指放在红外线发射二极管和接收二极管之间,血管中血液的流量随着心脏的跳动变化,由于手指放在光的传递路径中,血管中血液饱和度的变化将引起光的传递强度变化,此变化和心跳的节拍相对应,因此红外接收二极管的电流也跟着心跳的节拍改变,使得红外接收二极管输出与心跳节拍相对应的脉冲信号。该脉冲信号经F1~F3、R3~R5。C1、C2等组成的低通放
[单片机]
<font color='red'>单片机</font>脉搏测量仪的制作
XMOS锁定需求为80亿美元的汽车微控制器市场
获得AEC-Q100 标准认证的全新系列微控制器可满足汽车业的需求。 英国布里斯托尔市,2014年4月 - XMOS公司日前宣布了一项重大的突破:公司将进军汽车电子市场,并推出一系列获得AEC-Q100标准认证的xCORE多核微控制器产品。 “xCORE架构是诸多车载应用的理想构件,可适用于从车载信息娱乐和驾驶员辅助到动力系统控制等等多种应用,”XMOS产品管理副总裁Paul Neil博士表示。“获得AEC-Q100标准认证对XMOS至关重要的,这表明我们产品的质量及稳定性能够满足这些要求极为严苛的应用;这也更加坚定了我们的承诺,即让范围尽可能广泛的用户能够享用到xCORE技术。” 除了支持诸如先进的驾驶员辅
[汽车电子]
Pebble智能手表采用STM32F205RE MCU
STM32F20x系列是基于工作频率高达120MHz的高性能ARM®Cortex™-M3 32位RISC内核。 该系列整合了高速嵌入式存储器,Flash存储器和系统SRAM的容量分别高达1M字节和128K字节,高达4K字节的后备SRAM,以及大量连至2条 APB总线、2条AHB总线和1个32位多AHB总线矩阵的增强型I/O与外设。 该系列产品还带有自适应实时存储器加速器(ART加速器™),在高达120MHz的CPU频率下,程序在Flash存储器中运行时,可以实现相当于零等待状态的运行性能。 已经利用CoreMark基准测试对该性能进行了验证。 所有产品均带有3个12位ADC模块、2个DAC模块、1个低功耗RTC、12个通用16
[单片机]
Pebble智能手表采用STM32F205RE <font color='red'>MCU</font>
ST最新开发工具为了解基于STM32 ARM Cortex-M3 MCU开方便之门
完整的低成本的评估开发工具通过图形界面探索微控制器的性能和功能 中国,2007年11月6日 — 意法半导体(纽约证券交易所:STM)今天公布了一个价格非常低廉的微控制器开发套件STM32 PerformanceStick,这套开发工具是近日推出的基于ARM Cortex-M3内核的STM32系列微控制器的配套产品。ST设计这套紧凑的开发工具是为了便于用户了解新微控制器的功能和性能,特别值得一提的是,用户可以通过一个图形界面查看微控制器在不同条件下的性能特性。为了鼓励和帮助设计工程师修改和重新编写应用程序源代码,工具包还含有示例应用软件和一套完整的Hitex软件工具。 STM32 PerformanceStick是一套功能完整
[单片机]
基于单片机的磁卡读写机
1 引言 现今社会中,许多中小城市对公交车辆进行考核,大都采用人工考核的方式,该方式存在诸多缺点,例如,对车辆到达每一站的时间以及行驶途中存在的压客、超速、超载等问题,无法进行有效的监督,更重要的是它浪费了大量的人力资源,因此,急需一种系统对公交车辆进行有效的管理。 通过市场调查,现在对公交车辆进行管理,主要有两种方式:一是GPS自动考核系统,另一种是在站牌上设一信号发射装置,供车辆到站时判别。前一种方式虽然比较先进,但其价格昂贵,对中小城市的公交公司来说,只会增加其负担。而且更为重要的是,它需要对原有的站牌进行改造,程序烦琐。虽然属于同步考核方式,但对车辆塞车等情况仍无能为力。候车乘客通过站牌虽可知道车辆与本站的距离,但到达
[单片机]
基于<font color='red'>单片机</font>的磁卡读写机
小广播
最新应用文章
换一换 更多 相关热搜器件

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 安防电子 医疗电子 工业控制

词云: 1 2 3 4 5 6 7 8 9 10

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved