📄 key.h
字号:
/*
********************************************************************
** 文件名 : key.H
** 创建人 :qixi.qin
** 创建日期 :2008.11.4
** 说明 :改用其它端口时主意有宏定义, 本驱动使用P2口
** 联系 : 广西民族大学 06自动化 dongxixiaonanbi@163.com
********************************************************************
*/
#ifndef _KEY_H_
#define _KEY_H_
#include <AT89x52.h>
#define uchar unsigned char
#define uint unsigned int
//宏定义
#define KEYPORT P2
//函数声明
uchar KeyScan44( void );
/*
********************************************************************
** 函数名 :4*4按键扫描程序
** 例子 : uchar key; key = KeyScan44();
** 说明 : 内部延时1ms除抖动
** 宏定义按键端口 :KEYPORT
********************************************************************
*/
uchar KeyScan44( void )
{
uchar PL = 0; //低四位作输入时
uchar PH = 0; //高四位
uchar i = 0;
uchar key = 0;
KEYPORT = 0x0f; //初始时, 低四位输入,高四位输出
if( ( KEYPORT & 0x0f ) != 0x0f ) //如果有键按下
{
delay_nms( 1 ); //消抖动
if( ( KEYPORT & 0x0f ) != 0x0f ) //确定有键按下
{
PL = ~( KEYPORT | 0xf0 ); //PL存的是低四位中有键按下的位置位,用1标志。如PL = 0000 0010, 表明位1的口线有键按下
KEYPORT = 0xf0; //反过来,高四位输入,低四位输出
PH = ~( KEYPORT | 0x0f ); //PH存的是高四位中有键按下的位置位, 同以上说明
//初始化i
//查看这是第几位出现按键
i = 4;
while( PL )
{
PL >>= 1;
i--;
}
if( PH == 0x80 )
key = i;
else if( PH == 0x40 )
key = 4 + i;
else if( PH == 0x20 )
key = 8 + i;
else if( PH == 0x10 )
key = 12 + i;
}
return key;
}
}
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -