📄 key.c
字号:
//#include <reg52.h>
#include "key.h"
#include "main.h"
#include "mcs51.h"
extern uchar idata KeyVal;//全局变量
extern bit key_time_flag;
extern uchar data key_time;
uchar getkey()
{
static uchar i;
SC_LED=1;
switch(i&0x03){
case 0:{//防抖动
KOUT0=0;KOUT1=0;KOUT2=0;
KIN0=1;KIN1=1;KIN2=1;
if(!KIN0||!KIN1||!KIN2) i=1;
return KeyVal;
}break;
case 1:{//得到KeyVal值
KOUT0=0;KOUT1=0;KOUT2=0;
KIN0=1;KIN1=1;KIN2=1;
if(!KIN0||!KIN1||!KIN2){//若有其中的一个按键按下时
KOUT0=0;KOUT1=1;KOUT2=1;//并且输出为KOUT0时
//if(!KIN0) {i=2;return 1;}
if(!KIN1) {i=2;return 1;}
if(!KIN2) {i=2;return 2;}
KOUT0=1;KOUT1=0;KOUT2=1;
if(!KIN0) {i=2;return 3;}
if(!KIN1) {i=2;return 4;}
if(!KIN2) {i=2;return 5;}
KOUT0=1;KOUT1=1;KOUT2=0;
if(!KIN0) {i=2;return 6;}
if(!KIN1) {i=2;return 7;}
if(!KIN2) {i=2;return 8;}
KOUT0=1;KOUT1=1;KOUT2=1;
if(!KIN0) {i=2;return 0X10;}
if(!KIN1) {i=2;return 0X11;}
if(!KIN2) {i=2;return 0X0B;}
i=0;
return 0;
}
else{
i=0;
return 0;
}
}break;
case 2:{//key8++,key9--
KOUT0=0;KOUT1=0;KOUT2=0;
KIN0=1;KIN1=1;KIN2=1;
if(KIN0&&KIN1&&KIN2) i=3;
KOUT0=1;KOUT1=1;KOUT2=0;
if(!KIN1&&key_time_flag) {KeyVal=8; key_time=2;key_time_flag=0;}
if(!KIN2&&key_time_flag) {KeyVal=9; key_time=2;key_time_flag=0;}
return KeyVal;
}break;
case 3:{//KeyVal复位
KOUT0=0;KOUT1=0;KOUT2=0;
KIN0=1;KIN1=1;KIN2=1;
if(KIN0&&KIN1&&KIN2) {i=0; KeyVal=0;}
return KeyVal;
}break;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -