位置:51电子网 » 技术资料 » 测试测量

80C51复位标志位的设置与应用研究

发布时间:2008/6/3 0:00:00 访问次数:1048

        

    

    

    作者:李学海 刘治山

    

    引言

    

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

        

    

    

    作者:李学海 刘治山

    

    引言

    

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

相关IC型号

热门点击

 

推荐技术资料

音频变压器DIY
    笔者在本刊今年第六期上着重介绍了“四夹三”音频变压器的... [详细]
版权所有:51dzw.COM
深圳服务热线:13751165337  13692101218
粤ICP备09112631号-6(miitbeian.gov.cn)
公网安备44030402000607
深圳市碧威特网络技术有限公司
付款方式


 复制成功!