keyBoard.h
#ifndef _KEY_BOARD_H
#define _KEY_BOARD_H
sbit KEY_ROW_3 = P2^0;
sbit KEY_ROW_2 = P2^1;
sbit KEY_ROW_1 = P2^2;
sbit KEY_ROW_0 = P2^3;
sbit KEY_COL_0 = P2^4;
sbit KEY_COL_1 = P2^5;
sbit KEY_COL_2 = P2^6;
sbit KEY_COL_3 = P2^7;
extern uint8_t code keyCodeMap[4][4];
extern uint8_t xdata keyState[4][4];
extern void keyAction(uint8_t keyCode);
void keyDriver();
void keyScan();
#endif // _KEY_BOARD_H
keyBoard.c
#include <reg52.h>
#include "stdint.h"
#include "keyBoard.h"
uint8_t code keyCodeMap[4][4] = { //矩阵按键编号到标准键盘键码的映射表
{0x31, 0x32, 0x33, 0x26}, //数字键1、数字键2、数字键3、向上键
{0x34, 0x35, 0x36, 0x25}, //数字键4、数字键5、数字键6、向左键
{0x37, 0x38, 0x39, 0x28}, //数字键7、数字键8、数字键9、向下键
{0x30, 0x1B, 0x0D, 0x27} //数字键0、ESC键、 回车