这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 嵌入式开发 » MCU » 今天刚写的按键处理程序

共5条 1/1 1 跳转至

今天刚写的按键处理程序

专家
2009-03-13 02:39:14     打赏
今天刚写的按键处理程序

 

//-------------------------------------------------------------------------
//两按键处理程序,有效解决了长按键,短按键和单双击的问题
//-------------------------------------------------------------------------
struct   GSF_KEY
{
 U08 cyc_short :1;
 U08 cyc_long :1;
 U08 pro_short :1;
 U08 pro_long :1;
 U08 double_key :1;
 U08    :3; 
};
extern struct GSF_KEY gsflag_key;

extern U16 gcount_cyckey;
extern U16 gcount_prokey;

static void time0_int (void) small interrupt TMR0_IV // 10ms中断程序
{

 // 装入初值 10ms
 TL0 = TIMER_TL0;
 TH0 = TIMER_TH0;
 //---------------------------------------------------------------------
 // 按键检测
 //---------------------------------------------------------------------
 if(KEY_CYC_DISP) 
 {
  gcount_cyckey++;
  if(gcount_cyckey>200)
  {
   //长按键
   gsflag_key.cyc_long = 1;
  }
 }
 else
 {
  if((gcount_cyckey>5)&&(gcount_cyckey<200)) //短按键
  {

        if(!gsflag_key.double_key )

        {  
              
              if(gcount_prokey>5)  //双击键
                  gsflag_key.double_key = 1;

               else

                    gsflag_key.cyc_short = 1;

         }
  }
  gcount_cyckey = 0;
 }
 if(KEY_PROG)
 {
  gcount_prokey++;
  if(gcount_prokey>200) //长按键
  {
   gsflag_key.pro_long = 1;
  }
 }
 else
 {
  if((gcount_prokey>5)&&(gcount_prokey<200)) //短按键
  {
   if(!gsflag_key.double_key)  //如果是双击,则不处理单击 

   {
        if(gcount_cyckey>5)  

             gsflag_key.double_key = 1;

        else

             gsflag_key.pro_short = 1;
  }
  gcount_prokey = 0;
 }

}

//按键事件响应程序

void System_event(void)
{

 if(gsflag_key.cyc_short)
 {
      System_event_CYCKEY();
      gsflag_key.cyc_short = 0;
 }
 if(gsflag_key.pro_short)
 {
      System_event_proKEY();
      gsflag_key.pro_short = 0;
 }
 if(gsflag_key.pro_long)
 {
    gsflag_key.pro_long = 0;

 }

}




关键词: 今天     写的     按键     处理     程序     gcount     gsf    

菜鸟
2009-03-18 17:08:53     打赏
2楼

特意上来顶一下


菜鸟
2009-04-19 09:22:44     打赏
3楼
顶一下,正好我这两天在做键盘方面东西,拿去用一下哈

菜鸟
2009-04-24 23:38:40     打赏
4楼

支持


工程师
2009-04-25 23:37:35     打赏
5楼
辛苦了

共5条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]