谁能给我一郭天祥按键消抖的C程序

2020-01-13 18:36发布

谁能给我一郭天祥按键消抖的C程序,会用汇编写,但不会用C
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
44条回答
dingppp23
1楼-- · 2020-01-14 05:02
原理我知道就是用C写的没有他的漂亮
mcu131368
2楼-- · 2020-01-14 10:02
while(!s);
  delay(5);//5ms就够了
   while(!s);
zqhdevelopment
3楼-- · 2020-01-14 13:45
#include<reg51.h>
#include<intrins.h>
sbit buzz=P1^0;
unsigned char keyscan(void);
void main(void)
{
        keyscan();

}

unsigned char keyscan(void)
{
        unsigned char k;
        unsigned char c=0;
        P0=0xff;                                //关闭输出驱动场效应管
        buzz=1;                                        //关蜂鸣器
        if(P0!=0xff)                        //判断是否有键按下
        {
                k=P0;                                //读按键值
                _nop_();                        //延时  这里的延时都是用nop()代替的  使用者可以根据你的按键习惯来设置
                if(k==P0)                        //假如判断还有信号,再延时
                {
                        k=P0;                        //重新取值,作为下次判断的依据
                        _nop_();                //延时
                        if(k==P0)                //确认实在有按键信号,蜂鸣器蜂鸣,返回按键值
                        {
                                while(((c++)<200)&&(k==P0))
                                {
                                        _nop_();//延时//此延时是长按键的时间

                                }
                                if(c==200)
                                {
                                        switch(k)//不同按键的长短按功能选择
                                        {
                                                case 0x7f:break;
                                                case 0xbf:break;
                                                case 0xdf:break;
                                                case 0xef:break;
                                                case 0xfe:break;
                                                case 0xfd:break;
                                                case 0xfb:break;
                                                case 0xf7:break;
                                                default:k=0x00;break;

                                        }

                                }

                                buzz=0;        //有真正的按键时,蜂鸣器鸣器

                        }
                        else
                                k=0x00;

                }
                else
                        k=0x00;

        }
        else
                k=0x00;
        return k;

}
luyongganglyg
4楼-- · 2020-01-14 17:25
受教
wodedell
5楼-- · 2020-01-14 23:24
 精彩回答 2  元偷偷看……
D.lovers
6楼-- · 2020-01-15 03:12
推荐用状态机思想坐

一周热门 更多>