按键程序为什么不能重复执行?可能涉及了硬件细节

2019-07-29 16:56发布

本帖最后由 _cir_ 于 2014-11-14 21:40 编辑

本人在开发一款产品,现在遇到了程序问题,请各位工程师不吝指教啊!
按键程序 按键程序 按键中被调用的程序 按键中被调用的程序
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
13条回答
Unshining
1楼-- · 2019-07-30 05:42
 精彩回答 2  元偷偷看……
_cir_
2楼-- · 2019-07-30 09:31
本帖最后由 _cir_ 于 2014-11-16 15:05 编辑
Unshining 发表于 2014-11-16 13:46
KeyValue是什么?在哪里改变的?这很重要。
你处理过程中禁止了按键中断,但是处理完后你重新开启了按键中 ...

在主程序中根据标志位调用的,一旦有按键中断立马根据确定KeyValue退出低功耗模三执行按键程序。

#pragma vector=PORT2_VECTOR
__interrupt void PORT_2(void)
{

    INT_Flag = 2;
    KeyValue = P2IFG;//读取中断标志,确定按键值,KeyValue是总程序定义的全局变量
     P2IFG &= 0x0f;    //清楚中断标志                          
    LPM3_EXIT;
}

主程序部分程序
while(1){
        _BIS_SR(LPM3_bits+GIE);      
        switch(INT_Flag){

            case 2:     INT_KEY();                     
                       break;

}
_cir_
3楼-- · 2019-07-30 13:58
本帖最后由 _cir_ 于 2014-11-16 15:04 编辑
李冬发 发表于 2014-11-15 21:42
你的KeyValue从哪来的?

总程序里面定义的全局变量。
Unshining
4楼-- · 2019-07-30 17:53
_cir_ 发表于 2014-11-16 14:59
在主程序中根据标志位调用的,一旦有按键中断立马根据确定KeyValue退出低功耗模三执行按键程序。

#pragma ...

1、在INT_KEY()中,关了P2高四位中断后,你是不是忘了再把它打开?
2、建议KeyValue = P2IFG & 0xf0;
3、如果还不行,请进行调试,例如直接将KeyValue的值显示在LCD上并观察现象。
_cir_
5楼-- · 2019-07-30 23:32
本帖最后由 _cir_ 于 2014-11-19 12:35 编辑
Unshining 发表于 2014-11-17 00:07
1、在INT_KEY()中,关了P2高四位中断后,你是不是忘了再把它打开?
2、建议KeyValue = P2IFG & 0xf0;
3、 ...

厉害,我就是这样解决的!不知道为什么P2IFG中P2.2误触发置高了。我的P2.2口用来烧程序了,BSL方式的。但是我的程序在执行时这个引脚相当于悬空的,希望大神还能指导指导。谢谢!!!
QQ图片20141119123145.jpg
Unshining
6楼-- · 2019-07-31 01:21
 精彩回答 2  元偷偷看……

一周热门 更多>