打印
[国产单片机]

单片机掉电检测

[复制链接]
2132|1
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
lin111000713|  楼主 | 2013-7-30 08:18 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
     12C5A单片机低电压检测的P4.6口(31管脚 电压检测入口输入端)的外围是不是要接什么电路?  我的做法:我是把P4.6直接接到外部一个5V的电压源,然后调整电压从5V一直降到1V。但是到了3点多幅的时候会突然外部电压跳到1V。整个过程也没有产生低电压检测中断
/************************测试1  是否有电压输出 是否正常***************************/
//#include "lcd1602.h"
#include "delay.h"
#include "common.h"
#include "STC12C5A60S2.h"//包含单片机寄存器的头文件
#include "usart.h"
//#include "iic.h"




/*测试2:外部掉电中断检测*/
                                                7   6     5    4     3      2    1     0     Reset Value
//sfr PCON   = 0x87;        -   -   LVDF  POF   GF1    GF0   PD   IDL    0001,0000         //Power Control
//LVDF: 低压检测标志,只要电压低于检测门槛电压,该位置1,软件清0。睡眠前禁止低压中断可降低功耗。允许则低压时中断唤醒MCU。
void main()
{       
        USART0_Init();                 //串口初始化
        PCON = PCON & ~(1<<5);        //低压检测标志清0
        PLVD = 1;         //低压中断 优先级高
        EA  = 1;
        ELVD = 1;        //低压监测中断允许

        /*现象:串口调试助手每过2S钟打印出一行"hello,world"。但是无论我如何调试P4.6的电压始终没有进入中断,外部是不是要接什么电路呢*/
        /*说明:#include "STC12C5A60S2.h" 这个头文件就是keil的stc12c5a.h 。里面我有加防重复包含的语句 可以不用管*/
        while(1)
        {
                USART0_SendString("hello,world");//串口调试助手显示“hello,world”
                Delay1ms(2000);                //延时2S
        }
}


void LVD_Routine(void) interrupt 6
{
        uchar        i;

        USART0_SendString("Enter LVD");                //上位机上打印"Enter LVD"
        while(PCON & (1<<5))                        //检测是否仍然低电压
        {
                PCON = PCON & ~(1<<5);                //低压检测标志清0
                for(i=0; i<100; i++)        ;        //延时一下
        }
        USART0_SendString("Quit LVD");
}


相关帖子

沙发
logokfu| | 2013-8-2 09:22 | 只看该作者
要接在电源电容的前端来检测

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

3

主题

4

帖子

0

粉丝