历史上的今天
返回首页

历史上的今天

今天是:2025年06月21日(星期六)

2018年06月21日 | AVR单片机软件按钮消抖与确认

2018-06-21 来源:eefocus

程序过程很简单,就是系统上电后LED0-LED3亮,LED4-LED7灭;当第一次按下SW8后,LED4-LED7亮,LED0-LED3灭 ,再次按下SW8后,LED0-LED3亮,LED4-LED7灭。


按钮在按下与弹起的过程中会出现一定的抖动,这有时会对应用过程产生影响,所以我想了一个办法,用switch来        判断按钮的状态。

       


#include

#include


char B=0,choose1=1;

void SURE_key(int Key_Num);    //定义按键状态判断函数

//=============================

void delay_ms(int k)

{

    int i,j;

    for(i=0;i

    {

       for(j=0;j<850;j++)

       ;

    }

}

//=============================

int main()

{

unsigned char i=0;

DDRA=0xff;    //初始化端口A全为输出

PORTA=~(0xf);    //初始化端口A 0-3输出低电平;4-7输出高电平

DDRD=0x0;                   //初始化端口D全为输入

PORTD|=0xff;                //打开上拉电阻

   while(1)

   {   

   

   SURE_key(~PIND&(1<<4));       //判断按键状态,按下弹起后B++

   if(B%2==1) PORTA=(0xf);

else PORTA=~(0xf);

   

}

   return 0;

}


void SURE_key(int Key_Num)

{

      switch(choose1)

     {

      case 1:

       if(Key_Num!=0) choose1=2;     //按下了么?

  else choose1=1;

       break;  

      case 2:

       if(Key_Num!=0) choose1=3;    //按下了么?

       else choose1=1;

       break;

      case 3:

      if(Key_Num!=0) choose1=3;       //按下了!松开了么?

      else choose1=4;

      break;

      case 4:                          //松开了

       B++;

       choose1=1;

       break;

      }

}



推荐阅读

史海拾趣

E-Switch公司的发展小趣事

E-Switch公司始终坚持以客户为中心的经营理念,致力于为客户提供优质的服务和产品。公司建立了完善的客户服务体系,及时解决客户在使用过程中遇到的问题。同时,E-Switch还积极与客户保持沟通交流,了解市场需求变化,以便及时调整产品策略和生产计划。正是这种以客户至上的经营理念和持续发展的战略眼光,让E-Switch在电子行业中不断发展壮大。

Gulf Semiconductor公司的发展小趣事

在电子行业中,技术创新是企业保持竞争力的关键。E-Switch公司深知这一点,因此不断投入研发力量,寻求技术突破。近年来,公司在开关产品的智能化、小型化、高可靠性等方面取得了显著成果,多项技术处于行业领先地位。这些技术突破不仅提升了产品的性能,也进一步巩固了E-Switch在电子行业中的领先地位。

Hitron公司的发展小趣事

在E-Switch的发展历程中,品质一直是公司最为重视的方面之一。公司始终坚持严格的质量管理体系,从原材料采购到生产流程控制,再到产品出厂检验,每一个环节都严格把关。正是这种对品质的执着追求,让E-Switch的产品在市场上赢得了良好的口碑。

Anytek Technology Corporation Ltd公司的发展小趣事

随着技术实力的不断提升和市场份额的稳步增长,Anytek在2009年获得了“中国国际高新技术企业”的认定。这一荣誉不仅是对公司技术实力和创新能力的肯定,也为公司的未来发展提供了更广阔的空间和机遇。同年,Anytek还成功进入了俄罗斯政府采购项目,进一步扩大了公司的国际影响力。

Helium_Systems__Inc.公司的发展小趣事

随着市场竞争的加剧,海曼电子意识到仅凭自身力量难以快速实现跨越式发展。因此,公司开始积极寻求与行业内外的合作伙伴建立战略合作关系。通过技术共享、市场互补等方式,海曼电子不仅提升了自身的竞争力,还成功进入了多个新的市场领域。此外,公司还通过并购具有核心技术和市场资源的中小企业,进一步巩固了其在电子行业的地位。

Herth+Buss Fahrzeugteile GmbH & Co KG公司的发展小趣事
监控人员进出,确保安全。

问答坊 | AI 解惑

我买的开发板的资料

我买的开发板的资料…

查看全部问答>

面向未来的IC设计方案

面向未来的IC设计方案随着集成电路制造业的飞速发展,传统的设计方法越来越受到严峻的挑战。每年设计技术的进步大约滞后制造技术20%。在器件的特征线宽进入深亚微米以后,这个矛盾显得越发的突出。主要表现在系统的集成度越来越高,使得单个芯片的 ...…

查看全部问答>

ucf from to 约束

FROM....TO....约束关于from to 的约束是一个比较实用,也比较好用的约束。 尤其在跨时钟域处理中的应用,特别有效。 举例: 设计中有两个时钟,一个是PLL的输入,一个是PLL的输出,当设计中有数据在该两个时钟域中传递时, 又没有用到fifo隔离, ...…

查看全部问答>

请问为什么.out文件无法下载到板子上?

在workbench3.0中建立了一个downloadable Kernel Module Project(一个简单的hello world程序),在vxworks6.x simulator里面运行通过了,也显示了hello world。可是连接8548板子后,选择连接vxworks6.x target server却去下载不进去,显示错误:Po ...…

查看全部问答>

【求助】“阻塞(pend)”与“挂起(suspend)”的区别?

这两个词的英文意思差不多,看孔祥营书也没搞明白这两种任务状态的区别。 google的结果不尽相同。有说阻塞是位于主存,挂起位于外存;有说阻塞占用CPU,挂起不占用CPU…… 书上说:挂起(suspend)状态主要用于调试,不会约束状态转换,仅仅约束 ...…

查看全部问答>

由于PPP没搞出来,刚刚被老板训了,心情很不好,散分!

由于PPP没搞出来,刚刚被老板训了,不过还是要感谢CDSN里帮助过的我人,要不然或者我现在都被老板开了!呵呵!…

查看全部问答>

LoadImage返回失败

CString str = \"D:\\\\zxh\\\\111\\\\res\\\\sa.bmp\"; HBITMAP bim = (HBITMAP)LoadImage(AfxGetInstanceHandle(), str, IMAGE_BITMAP, 0,0,0); if(bim == NULL) {    DWORD errno = GetLastError();    return; } 总 ...…

查看全部问答>

新手对C语言控制定时中断的疑问

请问各位大虾们 我是刚接触单片机的 我想问下,如果我想用C语言精确地控制时间(定时中断) 具体用C语言该怎样实现呢?…

查看全部问答>

求《高频电路》

求《高频电路》清华大学通信教研组1980年的…

查看全部问答>

STM32的DFU文件生成方详解

最近好象很多人都在问关于DFU文件的使用问题,正好我们刚研究过,给大家讲讲我们的用法。第一步,准备好要转换的文件,bmp和wav格式,ST原版的DEMO就是这两种格式,后缀改为.bin(也可不改,只是选文件类型过滤选ALL Files(*.*)).第二步 ...…

查看全部问答>