📄 key.c
字号:
#include <macros.h>
#include "stdtypes.h"
#include "port.h"
#include "key.h"
//#include "led.h"
#include "timer.h"
UNS8 down_cnt;
UNS8 up_cnt;
UNS8 key_read_temp;
UNS8 g_ReceiveKeyFlag;
UNS8 g_KeyValue;
UNS8 key_num;
//void delay(UNS16 num)
//{
// while(num--);
//}
void KeyProcess(void)
{
if(g_ReceiveKeyFlag)
{
g_ReceiveKeyFlag = 0;
switch(g_KeyValue)
{
case KEY_NUM0://KEY_NUM
case KEY_NUM1:
case KEY_NUM2:
case KEY_NUM3:
case KEY_NUM4:
case KEY_NUM5:
case KEY_NUM6:
case KEY_NUM7:
case KEY_NUM8:
case KEY_NUM9:
case KEY_NUMA:
case KEY_NUMB:
case KEY_NUMC:
case KEY_NUMD:
case KEY_NUME:
case KEY_NUMF:
if(g_KeyValue<='9'&&g_KeyValue>='0')
{
key_num=g_KeyValue-'0';
}
else
{
key_num=g_KeyValue-'A'+10;
}
break;
}
}
}
/*键盘扫描函数 读取当前键盘的状态 有按键按下返回相应按键值 无按键按下返回"0x00"*/
unsigned char key_read(void)
{
unsigned char i;
//获取列地址
KEYPAD = 0x0F;
KEYPADDec = 0xF0;
delay(5); //延时10ms,否则可能因为低电平时间太短,出现单片机无法识别按键!重要!
i = KEYPADCon;
//获取行地址
KEYPAD = 0xF0;
KEYPADDec = 0x0F;
delay(5);
i |= KEYPADCon;
//输出复位
KEYPADDec = 0x00;
KEYPAD = 0xFF;
switch (i) {
//将按键码转换成键值
case 0xEE: return '1';
case 0xDE: return '2';
case 0xBE: return '3';
case 0x7E: return '4';
case 0xED: return '5';
case 0xDD: return '6';
case 0xBD: return '7';
case 0x7D: return '8';
case 0xEB: return '9';
case 0xDB: return 'A';
case 0xBB: return 'B';
case 0x7B: return 'C';
case 0xE7: return 'D';
case 0xD7: return 'E';
case 0xB7: return 'F';
case 0x77: return '0';
default : return 0x00;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -