?? key.c
字號:
/****************************************Copyright (c)**************************************************/
/**
;** 西南科技大學計算機科學學院
;**
;** http://www.cs.suswt.edu.cn
;**
;** 日期: 2007/10/08
;** 描述: 西南科技大學計算機學院CS-II型實驗板鍵盤驅動工作程序,實現鍵盤輪轉掃描,并顯示相應
;** 數據
;** 作者:
;**
;**--------------key.c文件
;**------------------------------------------------------------------------------------------------------*/
/**------------------------------------------------------------------------------------------------------
********************************************************************************************************/
#define _KEY_C_
#ifdef _KEY_C_
/************************************************
* Header File *
***********************************************/
#include"config.h"
#include"key.h"
/************************************************
* Globale variable *
***********************************************/
uint8 key_data=0x0f;//鍵盤初始狀態
/*******************************************************************************
Function Name: void KEYShift(uint8 mode) *
Function Description : 進行輪轉掃描時進行數據移位操作 *
*******************************************************************************/
void KEYShift(uint8 mode) //如果mode是0就將KEY_SI置零 如果mode是1就將KEY_SI置1
{
IO0CLR=KEY_RCLK; //RCLK=0x00
IO0CLR=KEY_SRCLK; //SRCLK=0
if((mode&0x01)==0x00) //該位為0
{
IO0CLR = KEY_SI;
}
else
{
IO0SET = KEY_SI;
}
IO0SET=KEY_SRCLK; //SLK=1
IO0SET=KEY_RCLK; //RCK=0x00
}
/*******************************************************************************
Function Name: uint8 KEYScan(void) *
Function Description : 鍵盤掃描函數,進行輪轉掃描 *
*******************************************************************************/
uint8 tmp = 0x00;
uint8 KEYScan(void)
{
//KeyData變化范圍為0x00----0x0f
//掃描過程
//先進行鍵盤判斷上次鍵盤的判斷
if((IO0PIN&KEY_KEY)==0) //有鍵按下(IO0PIN&KEY_KEY)== 0,即key位為0
{
tmp = key_data;
return key_data;
} //如果有鍵盤按下,連續對該鍵進行掃描,返回該鍵鍵值。
else
{
if(key_data==0x0f)
{
key_data=0x00;
KEYShift(0);
}
else
{
key_data++;
KEYShift(1);
}
return tmp;//0x10;
} //沒有鍵盤按下,進行掃描輪轉。
}
/*******************************************************************************
Function Name : void KEYInit(void) *
Function Description : 鍵盤的初始化程序,包括設置引腳鏈接模塊,引腳輸入輸出設置*
*******************************************************************************/
void KEYInit(void)
{
PINSEL0&=KEY_PINSEL; //端口選擇,這里選擇P0.4~P0.7實現GPIO功能
IO0DIR|=KEY_SRCLK; //方向輸出
IO0DIR|=KEY_RCLK; //方向輸出
IO0DIR|=KEY_SI; //方向輸出
IO0DIR&=(KEY_KEY^0XFFFFFFFF); //方向輸入
}
#endif
/*****************************************************************************
* End of Entire File *
****************************************************************************/
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -