📄 keboard.c
字号:
/****************************************************************************/
/* */
/* Copyright (c) 2005, 老树工作室 */
/* All rights reserved. */
/* */
/* Email:laoshu0902@163.com */
/* www.laoshu0902.bokee.com */
/* */
/****************************************************************************/
/****************************************************************************/
/* 文件名:keyboard.c */
/* 版 本:Version 1.0 */
/* 描 述:按键检测代码 */
/* 作 者:spot */
/* 函 数: */
/* delay_key */
/* system_init */
/* */
/* 历史记录: */
/* spot 2005-06-20 Creat Inital version. (Version 1.0) */
/****************************************************************************/
#include <reg52.h>
#include <absacc.h>
typedef unsigned char u_char;
typedef unsigned int u_int;
/* 键码定义 */
#define BUTTON_1 0xEE
#define BUTTON_2 0xDE
#define BUTTON_3 0xBE
#define BUTTON_4 0x7E
#define BUTTON_5 0xED
#define BUTTON_6 0xDD
#define BUTTON_7 0xBD
#define BUTTON_8 0x7D
#define BUTTON_9 0xEB
#define BUTTON_10 0xDB
#define BUTTON_11 0xBB
#define BUTTON_12 0x7B
#define BUTTON_13 0xE7
#define BUTTON_14 0xD7
#define BUTTON_15 0xB7
#define BUTTON_16 0x77
/* 定义结束 */
void delay_key(void); /* 按键检测延时子程序 */
void system_init(void); /* 系统上电初始化 */
/* 按键检测延时子程序 */
void delay_key(void)
{
u_char i;
for(i=200; i>0; i--);
}
/* 反转法检测按键,行1:P2.0,列1:P2.4*/
u_char scan_key(void)
{
u_char key_code = 0xFF;
P2 = 0xF0;
if ((P2&0xF0) != 0xF0) /* 有键按下 */
{
delay_key();
key_code = P2; /* 读入列值 */
P2 = 0x0F;
key_code |= P2; /* 读入行值,与列值相或得到键码 */
}
return(key_code);
}
/* 系统上电初始化 */
void system_init(void)
{
EA = 0;
P0 = 0xFF;
}
void main(void)
{
u_char key_code = 0xFF;
system_init();
while(1)
{
key_code = scan_key();
switch(key_code)
{
case BUTTON_1:
P1 = 0x00;
key_code = 0xFF;
break;
case BUTTON_2:
P1 = 0xFF;
key_code = 0xFF;
break;
case BUTTON_3:
P1 = 0xFE;
key_code = 0xFF;
break;
case BUTTON_4:
P1 = 0xFD;
key_code = 0xFF;
break;
case BUTTON_5:
P1 = 0xFB;
key_code = 0xFF;
break;
case BUTTON_6:
P1 = 0xF7;
key_code = 0xFF;
break;
case BUTTON_7:
P1 = 0xEF;
key_code = 0xFF;
break;
case BUTTON_8:
P1 = 0xDF;
key_code = 0xFF;
break;
case BUTTON_9:
P1 = 0xBF;
key_code = 0xFF;
break;
case BUTTON_10:
P1 = 0x7F;
key_code = 0xFF;
break;
case BUTTON_11:
P1 = 0xAA;
key_code = 0xFF;
break;
case BUTTON_12:
P1 = 0x55;
key_code = 0xFF;
break;
case BUTTON_13:
P1 = 0x5A;
key_code = 0xFF;
break;
case BUTTON_14:
P1 = 0xA5;
key_code = 0xFF;
break;
case BUTTON_15:
P1 = 0xF0;
key_code = 0xFF;
break;
case BUTTON_16:
P1 = 0x0F;
key_code = 0xFF;
break;
default:
break;
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -