?? keyboard.c
字號:
/****************************************Copyright (c)**************************************************
**--------------File Info-------------------------------------------------------------------------------
** File name: keyboard.C
** Last modified Date:2007-12-20
** Last Version: 1.0
** Descriptions: 鍵盤驅動程序
**------------------------------------------------------------------------------------------------------
** Created by: Rein Lee
** Created date: 2007-12-20
** Version: 1.0
** Descriptions: The original version
**------------------------------------------------------------------------------------------------------
** Modified by:
** Modified date:
** Version:
** Descriptions:
samples:
|---------col0--col1--col2--co3----|
|rowA------0-----1-----2-----3-----|
|rowB------4-----5-----6-----7-----|
|rowC------8-----9-----a-----b-----|
|rowD------c-----d-----e-----f-----|
|----------------------------------|
********************************************************************************************************/
#include "config.h"
#define COLUMN_START 16
/*
#define KEY1 16 //Column1
#define KEY2 17 //Column2
#define KEY3 18 //Column3
#define KEY4 19 //Column4
*/
#define ROW_START 20
/*
#define KEYA 20 //Row1
#define KEYB 21 //Row2
#define KEYC 22 //Row3
#define KEYD 23 //Row4
*/
//column取值范圍(0~(KEYBOARD_COLUMN-1))
#define Column_Clear(column) IO1CLR = (1<<(COLUMN_START+column)) //列線置低
#define Column_Set(column) IO1SET = (1<<(COLUMN_START+column)) //列線拉高
//row取值范圍(0~(KEYBOARD_ROW-1))
#define Row_Status(row) (IO1PIN&(1<<(ROW_START+row)))
/*********************************************************************************************************
** 函數名稱: Keyboard_Initialize
** 功能描述: 鍵盤輸入輸出定義
** 輸 入: 無
** 輸 出: 無
** 全局變量: 無
** 調用模塊: 無
**------------------------------------------------------------------------------------------------------
** Created by Rein Lee
** Created date: 2007-12-20
**------------------------------------------------------------------------------------------------------
** Modified by:
** Modified date:
**------------------------------------------------------------------------------------------------------
********************************************************************************************************/
void Keyboard_Initialize(void)
{
uint8 i;
uint32 pinselbak;
pinselbak = PINSEL2; //根據文檔,PINSEL2操作使用讀-修改-寫的方式。
pinselbak |= 0x00000000; //PINSEL2.3 = 0時,P1.16~P1.25用于GPIO
PINSEL2 = pinselbak;
for(i=0;i<KEYBOARD_COLUMN;i++)
IO1DIR |= (1<<(COLUMN_START+i)); //KEY1-4輸出,列,column
for(i=0;i<KEYBOARD_ROW;i++)
IO1DIR &= ~(1<<(ROW_START+i)); //KEYA-D輸入,行,row
for(i=0;i<KEYBOARD_COLUMN;i++)
IO1SET |= (1<<(COLUMN_START+i)); //初始化,KEY1-4輸出高電平
}
/*********************************************************************************************************
** 函數名稱: Keyboard_Scan()
** 功能描述: 鍵盤掃描
** 輸 入: 無
** 輸 出: 鍵值,無鍵按下,返回0xFF。
Keyboard_Scan出口的keycode值如keyboard.c的Descriptions所示,是連續的。
因此可以很方便的構建數組,重新映射鍵碼,新建一個如下的數組即可。
uint8 const KEYCODE_TAB[KEYBOARD_COLUMN*KEYBOARD_ROW],偏移為掃描得到的keycode。
** 全局變量: 無
** 調用模塊:
**------------------------------------------------------------------------------------------------------
** Created by Rein Lee
** Created date: 2007-12-20
**------------------------------------------------------------------------------------------------------
** Modified by:
** Modified date:
**------------------------------------------------------------------------------------------------------
********************************************************************************************************/
uint8 Keyboard_Scan(void)
{
uint8 keycode = 0xff;
uint8 row;
uint8 col;
for(col=0;col<KEYBOARD_COLUMN;col++)
{
Column_Clear(col);
for(row=0;row<KEYBOARD_ROW;row++)
{
if(Row_Status(row)==0){
keycode = row*KEYBOARD_ROW+col;
}
}
Column_Set(col);
}
return keycode;
}
/*********************************************************************************************************
** 函數名稱: Keyboard_Process()
** 功能描述: 鍵盤掃描
** 輸 入: 無
** 輸 出: 無
** 全局變量: 無
** 調用模塊:
**------------------------------------------------------------------------------------------------------
** Created by Rein Lee
** Created date: 2007-12-20
**------------------------------------------------------------------------------------------------------
** Modified by:
** Modified date:
**------------------------------------------------------------------------------------------------------
********************************************************************************************************/
void Keyboard_Process(void)
{
}
/*********************************************************************************************************
** End Of File
********************************************************************************************************/
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -