📄 keyscan_c.c
字号:
//#include <pic.h>
#include <pic16f5x.h>
#include "define.h"
volatile unsigned char key_delay1S_0,key_delay50ms;
extern volatile unsigned char auto_delay_15s_1,auto_delay_15s_0;
extern volatile unsigned char t1,t2,t3;
void KeyScan();
//----------------------------------------------------------------------
//函数功能:按键延时
//输入参数:
//返回参数:
//创建时期:
//----------------------------------------------------------------------
fastcall unsigned char key_delay()
{
if(have_key_fg)
return(0);
key_delay50ms--;
if(!key_delay50ms)
{
key_delay50ms=10;
have_key_fg=1;//have key
beep_fg=1;
return(1);
}
return(0);
}
//----------------------------------------------------------------------
//函数功能:电源键处理
//输入参数:
//返回参数:
//创建时期:
//----------------------------------------------------------------------
fastcall void power_key_cl( )
{
if(!key_delay())
return;
// if(!have_key_fg)
// return;
power_fg=!power_fg;// flag0^=0x01;
t1=0;
t2=0;
t3=0;
auto_fg0=0;
auto_fg1=0;
status_flag=0;
// have_key_fg=1;
key_delay1S_fg=1;
}
//----------------------------------------------------------------------
//函数功能:自动1键处理
//输入参数:
//返回参数:
//创建时期:
//----------------------------------------------------------------------
fastcall void auto_key1_cl()
{
// key_delay();
if((!key_delay())||auto_fg0)
return;
// if(have_key_fg||auto_fg0)
// return;
auto_fg0=1;
auto_fg1=0;
status_flag=8;
// beep_fg=1;
key_delay1S_fg=1;
// have_key_fg=1;
// auto_delay_15s_0=100;
auto_delay_15s_1=15;
if(!_50_60_fg)
auto_delay_15s_0=100;//10ms*100=1s
else
auto_delay_15s_0=120;//10ms*100=1s
}
//----------------------------------------------------------------------
//函数功能:自动2键处理
//输入参数:
//返回参数:
//创建时期:
//----------------------------------------------------------------------
fastcall void auto_key2_cl()
{
if((!key_delay())||auto_fg1)
return;
// if(have_key_fg||auto_fg1)
// return;
auto_fg0=0;
auto_fg1=1;
status_flag=2;
// beep_fg=1;
key_delay1S_fg=1;
// have_key_fg=1;
// auto_delay_15s_0=100;
auto_delay_15s_1=15;
if(!_50_60_fg)
auto_delay_15s_0=100;//10ms*100=1s
else
auto_delay_15s_0=120;//10ms*100=1s
}
//----------------------------------------------------------------------
//函数功能:高速键处理
//输入参数:
//返回参数:
//创建时期:
//----------------------------------------------------------------------
fastcall void gao_key_cl()
{
if((!key_delay())||(!(auto_fg0||auto_fg1)&&gao_fg))
return;
else
{
status_flag=8;
auto_fg0=0;
auto_fg1=0;
// beep_fg=1;
key_delay1S_fg=1;
// have_key_fg=1;
}
}
//----------------------------------------------------------------------
//函数功能:中速键处理
//输入参数:
//返回参数:
//创建时期:
//----------------------------------------------------------------------
fastcall void zhong_key_cl()
{
if((!key_delay())||(!(auto_fg0||auto_fg1)&&zhong_fg))
return;
else
{
status_flag=4;
auto_fg0=0;
auto_fg1=0;
// beep_fg=1;
key_delay1S_fg=1;
// have_key_fg=1;
}
}
//----------------------------------------------------------------------
//函数功能:低速键处理
//输入参数:
//返回参数:
//创建时期:
//----------------------------------------------------------------------
fastcall void di_key_cl()
{
if((!key_delay())||(!(auto_fg0||auto_fg1)&&di_fg))
return;
else
{
status_flag=2;
auto_fg0=0;
auto_fg1=0;
// beep_fg=1;
key_delay1S_fg=1;
// have_key_fg=1;
}
}
//----------------------------------------------------------------------
//函数功能:按键扫扫描函数
//输入参数:
//返回参数:
//创建时期:
//----------------------------------------------------------------------
void KeyScan()
{
if(!power_key)
power_key_cl();
// if(power_fg)
else {
if(!auto_key1)
auto_key1_cl();
else
{
if(!auto_key2)
auto_key2_cl();
else
{
if(!gao_key )
gao_key_cl();
else
{ if(!zhong_key)
zhong_key_cl();
else
{
if(!di_key)
{di_key_cl();}
else
{ have_key_fg=0; key_delay50ms=10;}
}
}
}
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -