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 + -
显示快捷键?