📄 key.c
字号:
#define _key_
#include "general.h"
//定义标志位
//bit f_KEYOFF;
//bit f_TIMER0;
static uchar code code_key[16]={0x11,0x12,0x14,0x18,//3
0x21,0x22,0x24,0x28,//7
0x41,0x42,0x44,0x48,//11
0x81,0x82,0x84,0x88};//15
/* -- 1 -- 2 -- 3 -- enter --
-- 4 -- 5 -- 6 --
-- 7 -- 8 -- 9 --
-- 0 --
/******************************************
查键值表,特征键值转为顺序键值
******************************************/
uchar get_key(uchar c)
{
uchar i=0;
while(code_key[i]!= c)
i++;
return i;//0x00~0x0f
}
/**************************************************************
名称:kbscan
描述:键盘扫描,有延时
输入:无
输出:返回键值key
其他:P0.4~7扫描输出,P0.0~3输入进来
**************************************************************/
uchar kbscan(void)
{
uchar sccode,recode;
P0=0x0f; //00001111
if((P0&0x0f)!=0x0f) //若有键按下
{
delay(5); //薄膜按键推荐延时,1
if((P0&0x0f)!=0x0f)
{
sccode=0xef;
while((sccode&0x01)!=0)
{
P0=sccode;
if((P0&0x0f)!=0x0f)
{
recode=(P0&0x0f)|0xf0;
while((P0&0x0f)!=0x0f);//空while,等待键抬起再返回键值
return(get_key((~sccode)+(~recode)));//返回特征字节->顺序键码
//C1:10-01,02,04,08 11,12,14,18
//C2:20-01,02,04,08 21,22,24,28
//C3:40-01,02,04,08 41,42,44,48
//C4:80-01,02,04,08 81,82,84,88
}
else
sccode=(sccode<<1)|0x01;
}
}
}
else
while((P0&0x0f)!=0x0f);//
return(0x10);//无键按下,返回16
}
/**************************
参数设置操作
**************************
void paraset( uchar para,
uchar temp,
uchar Index,
uchar index_fa,
uchar index_br1,
uchar index_br2)
{
uchar key;
key=kbscan();//
switch(key)
{
//case NUM1: {temp=1;break;}
//case NUM2: {temp=2;break;}
//case NUM3: {temp=3;break;}
case NUM4: {temp=4;break;}
//case NUM5: {temp=5;break;}
case NUM6: {temp=6;break;}
//case NUM7: {temp=7;break;}
case NUM8: {temp=8;break;}
//case NUM9: {temp=9;break;}
case NUM0: {temp=0;break;}
case BN_ENT: {para=temp;Index=index_fa;break;}
case BN_ESC: {temp=para;Index=index_fa;break;}
case BN_PGUP: {Index=index_br1;break;}
case BN_PGDN: {Index=index_br2;break;}
}
}
*/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -