[讨论] 请教一下大家 ,为什么我变得这个程序不需要消抖????

huangyiqian1000   2014-8-25 09:54 楼主
GPIO_setLow(myGpio,GPIO_Number_19);
        GPIO_setHigh(myGpio,GPIO_Number_18);
        GPIO_setHigh(myGpio,GPIO_Number_17);
        GPIO_setHigh(myGpio,GPIO_Number_16);


        key0=GPIO_getData(myGpio,GPIO_Number_29);
        key1=GPIO_getData(myGpio,GPIO_Number_32);
        key2=GPIO_getData(myGpio,GPIO_Number_33);
        key3=GPIO_getData(myGpio,GPIO_Number_34);


//        delay_nop1(2);

        key4=GPIO_getData(myGpio,GPIO_Number_19);
        key5=GPIO_getData(myGpio,GPIO_Number_18);
        key6=GPIO_getData(myGpio,GPIO_Number_17);
        key7=GPIO_getData(myGpio,GPIO_Number_16);





        if(key4==0&&key5==1&&key6==1&&key7==1)
        {
                key0=GPIO_getData(myGpio,GPIO_Number_29);
                key1=GPIO_getData(myGpio,GPIO_Number_32);
                key2=GPIO_getData(myGpio,GPIO_Number_33);
                key3=GPIO_getData(myGpio,GPIO_Number_34);

        if(key0==0&&key1==1&&key2==1&&key3==1)
        {
                key=1;
                bili=bili+0.01;
        }
        if(key0==1&&key1==0&&key2==1&&key3==1)
                {
                        key=2;
                        bili=bili+0.1;
                }
        if(key0==1&&key1==1&&key2==0&&key3==1)
                        {
                                key=3;
                                bili=bili+1;
                        }
        if(key0==1&&key1==1&&key2==1&&key3==0)
                                {
                                        key=4;
                                        bili=bili-0.01;
                                }
        }








        GPIO_setHigh(myGpio,GPIO_Number_19);
                GPIO_setLow(myGpio,GPIO_Number_18);
                GPIO_setHigh(myGpio,GPIO_Number_17);
                GPIO_setHigh(myGpio,GPIO_Number_16);


                key0=GPIO_getData(myGpio,GPIO_Number_29);
                key1=GPIO_getData(myGpio,GPIO_Number_32);
                key2=GPIO_getData(myGpio,GPIO_Number_33);
                key3=GPIO_getData(myGpio,GPIO_Number_34);


//                delay_nop1(2);

                key4=GPIO_getData(myGpio,GPIO_Number_19);
                        key5=GPIO_getData(myGpio,GPIO_Number_18);
                        key6=GPIO_getData(myGpio,GPIO_Number_17);
                        key7=GPIO_getData(myGpio,GPIO_Number_16);

                        if(key4==1&&key5==0&&key6==1&&key7==1)
                        {


                                key0=GPIO_getData(myGpio,GPIO_Number_29);
                                key1=GPIO_getData(myGpio,GPIO_Number_32);
                                key2=GPIO_getData(myGpio,GPIO_Number_33);
                                key3=GPIO_getData(myGpio,GPIO_Number_34);
                                if(key0==0&&key1==1&&key2==1&&key3==1)
                        {
                                key=5;
                                jifen=jifen+0.01;
                        }
                                if(key0==1&&key1==0&&key2==1&&key3==1)
                                        {
                                                key=6;
                                                jifen=jifen+0.1;
                                        }
                                if(key0==1&&key1==1&&key2==0&&key3==1)
                                                        {
                                                                key=7;
                                                                jifen=jifen+1;
                                                        }
                                if(key0==1&&key1==1&&key2==1&&key3==0)
                                                                        {
                                                                                key=8;
                                                                                jifen=jifen-0.01;
                                                                        }
        }








                GPIO_setHigh(myGpio,GPIO_Number_19);
                                GPIO_setHigh(myGpio,GPIO_Number_18);
                                GPIO_setLow(myGpio,GPIO_Number_17);
                                GPIO_setHigh(myGpio,GPIO_Number_16);



                                key0=GPIO_getData(myGpio,GPIO_Number_29);
                                        key1=GPIO_getData(myGpio,GPIO_Number_32);
                                        key2=GPIO_getData(myGpio,GPIO_Number_33);
                                        key3=GPIO_getData(myGpio,GPIO_Number_34);


//                                        delay_nop1(2);


                                key4=GPIO_getData(myGpio,GPIO_Number_19);
                                                key5=GPIO_getData(myGpio,GPIO_Number_18);
                                                key6=GPIO_getData(myGpio,GPIO_Number_17);
                                                key7=GPIO_getData(myGpio,GPIO_Number_16);

                                                if(key4==1&&key5==1&&key6==0&&key7==1)
                                                {


                                                        key0=GPIO_getData(myGpio,GPIO_Number_29);
                                                                key1=GPIO_getData(myGpio,GPIO_Number_32);
                                                                key2=GPIO_getData(myGpio,GPIO_Number_33);
                                                                key3=GPIO_getData(myGpio,GPIO_Number_34);
                                                                if(key0==0&&key1==1&&key2==1&&key3==1)
                                                        {
                                                                key=9;
                                                                weifen=weifen+0.01;
                                                        }
                                                                if(key0==1&&key1==0&&key2==1&&key3==1)
                                                                        {
                                                                                key=10;
                                                                                p=p+1;
                                                                        }
                                                                if(key0==1&&key1==1&&key2==0&&key3==1)
                                                                                        {
                                                                                                key=11;
                                                                                                p=p-1;
                                                                                        }
                                                                if(key0==1&&key1==1&&key2==1&&key3==0)
                                                                                                        {
                                                                                                                key=12;
                                                                                                                weifen=weifen-0.01;
                                                                                                        }
                }







                                GPIO_setHigh(myGpio,GPIO_Number_19);
                                                                GPIO_setHigh(myGpio,GPIO_Number_18);
                                                                GPIO_setHigh(myGpio,GPIO_Number_17);
                                                                GPIO_setLow(myGpio,GPIO_Number_16);



                                                                key0=GPIO_getData(myGpio,GPIO_Number_29);
                                                                        key1=GPIO_getData(myGpio,GPIO_Number_32);
                                                                        key2=GPIO_getData(myGpio,GPIO_Number_33);
                                                                        key3=GPIO_getData(myGpio,GPIO_Number_34);


                                                                key4=GPIO_getData(myGpio,GPIO_Number_19);
                                                                                                key5=GPIO_getData(myGpio,GPIO_Number_18);
                                                                                                key6=GPIO_getData(myGpio,GPIO_Number_17);
                                                                                                key7=GPIO_getData(myGpio,GPIO_Number_16);


//                                                                                                delay_nop1(g);

                                                                if(key4==1&&key5==1&&key6==1&&key7==0)
                                                                                                                {


                                                                        key0=GPIO_getData(myGpio,GPIO_Number_29);
                                                                                key1=GPIO_getData(myGpio,GPIO_Number_32);
                                                                                key2=GPIO_getData(myGpio,GPIO_Number_33);
                                                                                key3=GPIO_getData(myGpio,GPIO_Number_34);
                                                                                if(key0==0&&key1==1&&key2==1&&key3==1)
                                                                                                                        {
                                                                                                                                key=13;
                                                                                                                                bili=bili-0.1;
                                                                                                                        }
                                                                if(key0==1&&key1==0&&key2==1&&key3==1)
                                                                                                                                        {
                                                                                                                                                key=14;
                                                                                                                                                jifen=jifen-0.1;
                                                                                                                                        }
                                                                if(key0==1&&key1==1&&key2==0&&key3==1)
                                                                                                                                                        {
                                                                                                                                                                key=15;
                                                                                                                                                                p=p+0.1;
                                                                                                                                                        }
                                                                if(key0==1&&key1==1&&key2==1&&key3==0)
                                                                                                                                                                        {
                                                                                                                                                                                key=16;
                                                                                                                                                                                p=p-0.1;
                                                                                                                                                                        }
                                }

回复评论 (6)

可以直接使用,不用再加延时了,不会出现都抖动,不知道为什么。我是根据C51的键盘扫描来编写的,用的是句柄和指针的形式。
点赞  2014-8-25 09:56
首先惊讶于这个里出外进的程序是怎样变出来的,这么长……

其次同样惊讶于这个代码为啥就不需要消抖……话说它为啥需要消抖……到底需不需要消抖?

嗯……坐等高手……
点赞  2014-8-25 10:11
你的程序太长,我没看,一是可能你的程序里还有其他东西,可能消抖已经加无意进去了;二是硬件上可能有措施,也就是可能硬件上已经消抖了。
我来到这个世界,就是为了遇见你。在某天我们会相遇,然后在一起,直到最后一起离去。
点赞  2014-8-25 10:38
引用: sjtitr 发表于 2014-8-25 10:11
首先惊讶于这个里出外进的程序是怎样变出来的,这么长……

其次同样惊讶于这个代码为啥就不需要消抖…… ...

老师里出外进啥意思??
点赞  2014-8-25 10:46
引用: 一个小白 发表于 2014-8-25 10:38
你的程序太长,我没看,一是可能你的程序里还有其他东西,可能消抖已经加无意进去了;二是硬件上可能有措施 ...

程序总运行时间是133US左右,最长的延迟是在显示中 ,100US
点赞  2014-8-25 10:49
好长的程序啊
点赞  2014-8-25 10:50
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复