keyenvent.c

来自「电能表源码」· C语言 代码 · 共 90 行

C
90
字号
/*************************************************************************************

	文件类型:按键操作
	文件作用:
	修改权限:
	文件相关:
	
	创 建 人:chenbo
	创建日期:2007.06.21
	当前版本:Ver0.1
	
	版本信息:Ver0.1					GeminiKQ

**************************************************************************************/
#include "Tiger.h"

//==================================================================
//函数功能:初始化按键状态
//
//==================================================================
void init_keyevent(void)
{
   time_keypag_on=0;                //按键持续时间清零
//   time_keyup_on=0;
   sta_keypag=key_upstation;        //按键处于未按下状态
//   sta_keyup=key_upstation;
   flag_keypag.byte=0xff;         //扫描状态初始化
//   flag_keyup.byte=0xff;
}


//========================================================================
//函数功能:停电时扫描按键事件
//备注:返回1:按键按下,返回0:按键没按下
//========================================================================
unsigned char key_scantindian(void)
{ EXTERN union byte_define temp_keysta;
  uint8 value;  
/*  flag_keypag.byte=flag_keypag.byte<<1;
  if((Key_pag&0x10)==0x10)
        key_pag_1=1;
  else
        key_pag_1=0;
  if((key_pag_1==key_up_2)&&(key_pag_1==key_up_3)&&(key_pag_1==key_on))
       value=1;
  else
       value=0;
*/ 
return value;    
}

//===============================================================================
//函数功能:读按键状态
//
//===============================================================================
void read_keysta(void)
{  DISENOUT_dn;                              //禁止输出
   OPEN_keypag;                              //允许输入	
   flag_keypag.byte=flag_keypag.byte<<1;
    if((Key_pag&0x10)==0x10)
        key_pag_1=1;
    else
        key_pag_1=0;
//    key_pro_1=Key_pro;
//    key_up_1=Key_up;
}
//=================================================================================
//函数功能:按键处理
//备注:10ms扫描一次
//==================================================================================
void keymode(void)
{ read_keysta();                               //读按键状态
  if(key_pag_1==key_pag_2)                    //pro键有事情发生
     { if(key_pag_1==key_on)                   //pro键按下
	      { if(sta_keypag==key_upstation)         //如果是未按状态
      	        { sta_keypag=key_dnstation;           //按键状态变为按下状态
                }
          }
	   else if(key_pag_1==key_off)                     //如果按键松开
	      { if(sta_keypag!=key_upstation)              //如果是在按键按下的情况下松开
		       { sta_keypag=key_upstation;             //置当前状态为松开
                 type_dispevent=keyup_envent;        //pro键按下事件发生
				 sta_meterrun=run_prosta;              //进入编程模式
				 time_runprosta=0;                     //编程维持时间清零
		       }
		  }
	 }   
  
}                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?