打印

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

[复制链接]
2962|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 回复TA
定时扫描? 
5
北京懿芯| | 2016-6-4 22:34 | 只看该作者
要购芯片,可以找我喽

使用特权

评论回复
6
zhanzr21| | 2016-6-5 16:05 | 只看该作者
消抖用的最多的還是延時

使用特权

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

本版积分规则

27

主题

201

帖子

1

粉丝