?? 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 + -