搜索
bottom↓
回复: 9

按键程序的设计

[复制链接]

出0入0汤圆

发表于 2005-8-15 10:19:13 | 显示全部楼层 |阅读模式
欢迎大家来中华工控网www.gkong.com

一个按键程序的设计。

常常看到有些小虾米提问一个键按下加1,多按一会连加怎么写,为什么我的按键不松开别的按键按下会无反应,或数码管总是闪动,而一松开又正常显示。下面是我笨笨的一个按键程序的相关段,此程序只做抛砖引入之用,本程已验证通过,如有不明之处请自行处理能 :)  

芯片 AVR之ATMEGA8515L 编译环境:ICCAVR6.31A



下面这段程序可放入主程序中

//************************上设定1按键(单次)***********************

if( ((PINB&up1) ==0 )&&( (flag2&0x01) == 0) )

{delay_nms(10);

  if( (PINB&up1) ==0 )

  {flag2|=BIT(0);

                                //****此处是我切入的相关程序*******//

  timelat1--;

  if(timelat1<0) timelat1=99;

  consumer_rd[4]=99-timelat1;

  distime0=0;

                                flag3=BIT(1);

                                //*******************//

  }

}

if( ((PINB&up1) ==up1)&&((flag2&0x01)==0x01) )

   {delay_nms(10);

    if((PINB&up1) ==up1)

  {flag2&=~BIT(0);

  }  

    }



下面这段程序请放入时间中断中:

//***************************1号上连调*****************************

if(((PINB&up1)==0)&&((flag4&0x02)==0))   

{count11++;

  if(count11>=500)

   {flag4|=BIT(1);

   }

}

if(((PINB&up1)==0)&&((flag4&0x02)==0x02))

{count12++;

  if(count12>=100)

   {count12=0;

                                //****此处是我切入的相关程序*******//

  timelat1--;

  distime0=0;

  if(timelat1<0) timelat1=99;

  consumer_rd[4]=99-timelat1;

                               //******************************//

   }

}



顺便送一个添头 (单键启停)

//************************启停1开关********************************

if( ((PIND&star1) ==0 )&&( (flag1&0x02) == 0) )

{delay_nms(10);

     if( (PIND&star1) ==0 )

      {flag1|=BIT(1);

                     flag_runstop^=BIT(1);

                     flag3=BIT(1);

      }

}

if(((PIND&star1) ==star1 )&&((flag1&0x02)==0x02) )

     {delay_nms(10);

      if( (PIND&star1) ==star1 )

{flag1&=~BIT(1);

                 }

      }      




-----此内容被sgxluck于2005-08-15,10:22:20编辑过

阿莫论坛20周年了!感谢大家的支持与爱护!!

一只鸟敢站在脆弱的枝条上歇脚,它依仗的不是枝条不会断,而是自己有翅膀,会飞。

出0入0汤圆

发表于 2005-8-15 10:56:45 | 显示全部楼层
谢谢!

先研究研究。

能不能在语句后面加上注释?

出0入0汤圆

 楼主| 发表于 2005-8-15 11:11:47 | 显示全部楼层
不会吧!提供的原程序还要提示?我闪。

出0入0汤圆

发表于 2005-8-15 11:24:38 | 显示全部楼层
呵呵!

牺牲你的一点时间,将给大家节约大大的时间。

看别人的程序真的有点头痛。

出0入4汤圆

发表于 2006-8-29 16:38:56 | 显示全部楼层
这段程序缺乏美感。

出0入0汤圆

发表于 2006-8-30 12:31:28 | 显示全部楼层
同意4楼的说法.

出0入0汤圆

发表于 2012-7-17 23:18:20 | 显示全部楼层
  mark 后再研究!

出0入0汤圆

发表于 2012-7-19 12:56:21 | 显示全部楼层
先看看。。。

出0入0汤圆

发表于 2013-6-16 13:40:57 | 显示全部楼层
按键确实有很多学问,最好还是状态机结合定时器来写。

出0入0汤圆

发表于 2016-12-5 11:02:08 | 显示全部楼层
这个必须mark
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-5-16 17:09

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表