bbssilverkey 发表于 2013-1-28 11:35:43

STC12C5A60S2的低压检测调通,请各位大哥帮我看看


******************************************/
MCU:STC12C5A60S2,LED灯没灭,一直没有进中断函数,请各位大哥帮我看看
#include <reg52.h>

/*************        本地变量声明        **************/
sfr        AUXR = 0x8E;

sbit ELVD = IE^6;        //低压监测中断允许位
sbit PLVD = IP^6;         //低压中断 优先级设定位

//                                                7   6   5    4   3      2    1   0   Reset Value
//sfr PCON   = 0x87;        -   -   LVDFPOF   GF1    GF0   PD   IDL    0001,0000       //Power Control
//LVDF: 低压检测标志,只要电压低于检测门槛电压,该位置1,软件清0。睡眠前禁止低压中断可降低功耗。允许则低压时中断唤醒MCU。



sbit        LED= P0^0;


/********************* 主函数 *************************/
void main(void)
{
        unsigned long i;
        delay_ms(250);

        PCON = PCON & ~(1<<5);        //低压检测标志清0
        ELVD = 1;        //低压监测中断允许
        PLVD = 1;         //低压中断 优先级高
        EA= 1;


while(1)
        {
                LED= LED;
                for(i = 0;i<5000;i++);       
        }
}
/**********************************************/


void LVD_Routine(void) interrupt 6
{

        LED = 0;
        while(1);
}


bbssilverkey 发表于 2013-1-28 17:38:30

难倒是STC吹牛的?

LM1876 发表于 2013-1-28 17:49:35

这个功能正常啊,我用于掉电数据保存,不过用的是查询方式,中断没试过

bbssilverkey 发表于 2013-1-28 17:52:42

LM1876 发表于 2013-1-28 17:49 static/image/common/back.gif
这个功能正常啊,我用于掉电数据保存,不过用的是查询方式,中断没试过

前辈,能不能给个例子,我照你一样,能过就行了

876192514 发表于 2013-1-29 01:08:47

指示灯低电平关闭?

876192514 发表于 2013-1-29 01:18:48

本帖最后由 876192514 于 2013-1-29 01:20 编辑

感觉低压中断这部分是对的
偶喜欢检测外部输入电压然后触发一个中断来保存输出 这样电容里还是满满的 可以做好多事

bbssilverkey 发表于 2013-1-29 08:46:08

876192514 发表于 2013-1-29 01:18 static/image/common/back.gif
感觉低压中断这部分是对的
偶喜欢检测外部输入电压然后触发一个中断来保存输出 这样电容里还是满满的 可以 ...

那前辈能不能给我个例子?

LM1876 发表于 2013-1-29 08:52:22

                                                       
void Input_Init()
{                
        PCON &= 0xDF ;//清LVDF位                             
}

void main()
{
Input_Init();
   while(1)
   {       
      if (PCON & 0x20){PCON &= 0xDF ;SaveInfo()}
   }
}
             
                          
      
               
                       
              

bbssilverkey 发表于 2013-1-29 10:55:00

本帖最后由 bbssilverkey 于 2013-1-29 10:56 编辑

LM1876 发表于 2013-1-29 08:52 static/image/common/back.gif
void Input_Init()
{                
        PCON &= 0xDF ;//清LVDF位                             


前辈还是不行,应该是硬件问题,我接法跟那个官方一样的20K R2 到VCC,10K R1到GND,中间P4.6,难倒是下载要选成YES?

LM1876 发表于 2013-1-29 11:41:41

不关下载的事。应该是你的电阻接错了,电阻 那头应该接到7805的12V那一头,不能接在和CPU一起的那个5V。它的原理是:关电时,当12V降到了一定时候,分压电阻 的电位低过它的门限,而5V因为接有个大电容,电压还没降,这时的CPu就还有这么个时间差来做事,如果就你接对了的话,那只能说那芯片的这个脚挂了,这个功能我用在一个产品上,出过几百台了,掉电功能都是正常的啊

bbssilverkey 发表于 2013-1-29 12:07:36

LM1876 发表于 2013-1-29 11:41 static/image/common/back.gif
不关下载的事。应该是你的电阻接错了,电阻 那头应该接到7805的12V那一头,不能接在和CPU一起的那个5V。它 ...

谢谢前辈,我就是接PL2303那个供电脚(5v),找到原因了,太好了{:lol:} 再请教下前辈,如果5V那就没办法了么?有没有办法5V的时候也能检测呢?

LM1876 发表于 2013-1-29 16:53:25

如果非要 在5V的话,5V的STC最低能到3.3(这是STC官方说法,我没试过)就调整电阻,使掉电检测在4.5或4V时就有效,选4.5V时电阻选择公式为:((R上/R下)+1)*1.33=4.5V,芯片的电源电容要大,最少1000uf以上。这样没电时电源降到4.5V时CPU就检测到断电了,你就还有从4.5V降到3.3V这段时间,长短和电源电容大小与负载大小有关,不过能有个0.5S都能做很多事了。

bbssilverkey 发表于 2013-1-30 13:48:25

本帖最后由 bbssilverkey 于 2013-1-30 14:02 编辑

LM1876 发表于 2013-1-29 16:53 static/image/common/back.gif
如果非要 在5V的话,5V的STC最低能到3.3(这是STC官方说法,我没试过)就调整电阻,使掉电检测在4.5或4V时 ...

前辈,你好{:lol:} ,我马上根据您的公式试了一试:(并上了3300uf电容一个)
下电阻10K,上电阻20K(4V -Save) fail,
下电阻10K,上电阻24K(4.5V -Save) fail,
下电阻10K,上电阻27K(5V -Save) fail, 这个最神奇,我以外会卡在中断里面,没有串口还是照样跑
看来还是要12v才行

renxt1 发表于 2013-2-13 14:19:54

仔细阅读一下手册,看看它的编程电压是否正确,太低电压编程不了

xiaobendan001 发表于 2013-2-13 16:46:01

俺也测试过中断的功能,也是想掉电保存,可是不好使,怎么换电阻也不好使啊,后来还是用了外部的信号送到INT0才好使的
后来用了上10K+下4.7K的参数,打开了低于1.33V复位的选项,也不知道是否灵验,只是用手持镊子碰触这个引脚时会引发复位是真的。因为我用的22.1184的晶振,手册上说必须要打开这个复位选择的,所以就这样做了

dtdzlujian 发表于 2013-2-13 17:57:48

有时间来学习一下

sgzzour 发表于 2013-2-13 20:25:08

学习了。。。。

bbssilverkey 发表于 2013-2-15 17:25:39

xiaobendan001 发表于 2013-2-13 16:46 static/image/common/back.gif
俺也测试过中断的功能,也是想掉电保存,可是不好使,怎么换电阻也不好使啊,后来还是用了外部的信号送到IN ...

按照数据手册接的,还串了LED,应该是自己模电不好,按照数据手册那样接,好像六脉神剑,偶尔挺好使,偶尔就卡在低压那块了
页: [1]
查看完整版本: STC12C5A60S2的低压检测调通,请各位大哥帮我看看