430下降沿中断干扰问题(图)
程序使单片机处于休眠状态只有按键有按下的时候进入中断程序唤醒单片机做事但现在发现用金属触碰红色箭头处 就会进入中断程序 如果把上啦电阻去掉用手碰都会进入中断程序怎么办呢?谢谢高手回答http://cache.amobbs.com/bbs_upload782111/files_42/ourdev_658312EGYS06.JPG
金属触碰红色箭头处就会进入中断程序 (原文件名:未命名.JPG)
相应程序如下:
/*I0口初始化*******************************************************************/
void Init_Port(void)
{
// 将中断寄存器清零
P1IE = 0;
P1IES = 0;
P1IFG = 0;
P1IE |= BIT6+BIT0;
P1IES |= BIT6+BIT0;
_EINT();//打开中断
}
/******************************************************************************/
/*处理来自端口 1 的中断********************************************************/
#if __VER__ < 200
interrupt void PORT_ISR(void)
#else
#pragma vector=PORT1_VECTOR
__interrupt void PORT_ISR(void)
#endif
{
if(mode!=1)
{
P3SEL |=0xf0;
fen=0;
jclose=1;
}
// if(P1IFG & BIT6)
// {
P1IFG &= ~(BIT6);// 清除中断标志位
P1IFG &= ~(BIT0);
// }
if(mode!=1)
LPM3_EXIT;
}
/******************************************************************************/ 加了电容问题解决了就是不知道这样设计合理不?会不会使功耗增大?
http://cache.amobbs.com/bbs_upload782111/files_42/ourdev_658317OV8XPL.JPG
(原文件名:未命名.JPG) ddddddddddddddddddddddddddddddddddddddddd 回复【1楼】ms80c51
-----------------------------------------------------------------------
有按键动作时功耗会大点点. 加的多大电容,效果很好么,有没有多试几次呢,分享下 我觉得还是不要用P1IFG设置吧,有时是不准确的,前一段,我就用的明明设置,上升沿或下降沿,结果都会置位
现在改成这样
P1_state=~P1IN & 0xFF;
这样即使中断进去也不会执行,我现在电流大,电流串扰很严重,不过这样写到时很好,只有真正按下键,才触发程序. 回复【4楼】gold2073
加的多大电容,效果很好么,有没有多试几次呢,分享下
-----------------------------------------------------------------------
电容我用的是104的 目前看来效果还不错就是不知道以后到现场了效果好不
回复【5楼】wjackson
我觉得还是不要用p1ifg设置吧,有时是不准确的,前一段,我就用的明明设置,上升沿或下降沿,结果都会置位
现在改成这样
p1_state=~p1in & 0xff;
这样即使中断进去也不会执行,我现在电流大,电流串扰很严重,不过这样写到时很好,只有真正按下键,才触发程序.
-----------------------------------------------------------------------
不是太明白 你可以说的具体点吗 用0.1uf就够了,软件上加消抖程序也行 回复【6楼】ms80c51
-----------------------------------------------------------------------
你可以在watch下看到,P1IFG并不是准确的,尤其是电磁干扰非常大的情况下,但是P1IN只有闭和就复位,通过窗口可以自己看看,可能是我理解错了吧,呵呵 电源退耦~ 有这种干扰是必然的,电容+软件消抖
页:
[1]