标题: 在按键计数时,为何我按一次键它计数几次 [打印本页]

作者: 君成    时间: 2016-5-14 19:50
标题: 在按键计数时,为何我按一次键它计数几次
请问我错在哪里,我也有加按键消抖处理
#include<reg52.h>
#define uchar unsigned char
#define uint unsigned int
sbit k0=P2^0;
uint i;
uchar code segcode[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
uchar wei[]={0xef,0xdf,0xbf,0x7f};
void delay(uint z)
{
uint x,y;
        for(x=z;x>0;x--)
        for(y=110;y>0;y--);
}

void main()
{
       
        if(k0==0)
        {
                delay(10);
                while(1)
        {
                        if(k0==0)
                        {
                               
                                P2=wei[0];
                        P0=segcode[i];
                                delay(100);
                       
       
                               
                        }
                        i++;
                                if(i==9)i=0;
        }
       
                               
        }
}




作者: ahshmj    时间: 2016-5-14 20:13
可能,一是按键质量不好。二是消抖延时不够。适当加大延时试一试。
作者: 狂奔的菜鸟    时间: 2016-5-14 20:55
if(k0==0)
                        {
                                
                                P2=wei[0];
                        P0=segcode[i];
                                delay(100);
                         while(k0==0)
                           {}
                        }
作者: sxszpeng    时间: 2016-5-14 23:05
没加松手检测
作者: lgjdqm    时间: 2016-5-15 15:25
把延时加长点
作者: luoluoluo136    时间: 2016-5-16 14:25
抖动啊。。。你看看消抖处理。。。




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1