PIC16F877A电平变化中断(按键消抖)

[复制链接]
3304|6
 楼主| 冰封小肥牛 发表于 2016-6-4 09:47 | 显示全部楼层 |阅读模式
用单片机电平变化中断来控制数码管变化的程序!我使用了电平变化中断,有按键抖动的现象存在,于是我在中断判断语句中加了(key0 == 0)如程序中。加请问还有什么好的消抖操作!
另:“if((INTCONbits.RBIF == 1)&&(key0 == 0))”这样确实可以消抖,但出现了另外一个问题,按键按下数码管停止,但一松开数码管数字还会加1,之后才停止,如何解决?以下是在下的程序,望大虾帮帮忙。

 楼主| 冰封小肥牛 发表于 2016-6-4 09:52 | 显示全部楼层
void interrupt time0(void)         
{
    if(INTCONbits.T0IF == 1)   
    {
        INTCONbits.T0IF = 0;
        TMR0 = 0x61;
        sec++;
    }
    if((INTCONbits.RBIF == 1)&&(key0 == 0))
        {
                temp = PORTB;
                INTCONbits.RBIF = 0;
                temp = temp&0x30;
                if(temp == 0x20)
                {
                        INTCONbits.T0IE = ~INTCONbits.T0IE;
                }       
        }
}
JY-DX-JY 发表于 2016-6-4 11:36 | 显示全部楼层
为什么非要用电平变化中断呢?可以延时消抖。
datouyuan 发表于 2016-6-4 13:47 | 显示全部楼层
我一般的做法:
电平变化中断只是唤醒mcu.按键还是通过定时扫描的方式.

评论

定时扫描?  发表于 2016-6-4 15:03
北京懿芯 发表于 2016-6-4 22:34 | 显示全部楼层
要购芯片,可以找我喽
zhanzr21 发表于 2016-6-5 16:05 | 显示全部楼层
消抖用的最多的還是延時
您需要登录后才可以回帖 登录 | 注册

本版积分规则

27

主题

201

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部