?? key.c
字號(hào):
#define P_IOA_Data (volatile unsigned int *)0x7000
#define P_IOA_Buffer (volatile unsigned int *)0x7001
#define P_IOA_Dir (volatile unsigned int *)0x7002
#define P_IOA_Attrib (volatile unsigned int *)0x7003
#define P_IOB_Data (volatile unsigned int *)0x7005
#define P_IOB_Dir (volatile unsigned int *)0x7007
#define P_IOB_Attrib (volatile unsigned int *)0x7008
#define P_Watchdog_Clear (volatile unsigned int *)0x7012
unsigned int KeyScan(void); //鍵盤掃描函數(shù)
void Delay(void); //延時(shí)函數(shù)
//=====================================================================
// 語(yǔ)法格式: int main(void)
// 實(shí)現(xiàn)功能: 通過點(diǎn)亮不同發(fā)光二極管來顯示IOA口輸入鍵盤值
// 參數(shù): 無(wú)
// 返回值: 無(wú)
//=====================================================================
int Key_Get(void)
{
unsigned int uiKey; //定義保存鍵值變量
*P_IOB_Dir|=0x0fff; //初始化IOB口
*P_IOB_Attrib|=0x0fff;
*P_IOB_Data&=0x0fff; //初始化IOB口輸出
while(1)
{
uiKey = KeyScan(); //取鍵值
if(uiKey != 0) //判斷鍵值是否為0
{
Show_Temp();
return uiKey;
}
*P_Watchdog_Clear = 0x0001; //清看門狗
Show_Temp();
}
}
//========================================================
// 語(yǔ)法格式: unsigned int KeyScan(void)
// 實(shí)現(xiàn)功能: 獲得鍵盤值并返回
//========================================================
unsigned int KeyScan(void)
{
unsigned int uiData;
unsigned int uiTemp;
uiData = *P_IOB_Data; //讀取IOA端口輸入
uiData = uiData&0xf000; //僅取低八位有效值
if(uiData!=0) //非零則表示有鍵按下
{
Delay(); //延時(shí)消抖
uiTemp = *P_IOB_Data;
uiTemp = uiTemp&0xf000; //僅取低八位有效值
if(uiData != uiTemp)
uiData = 0; //兩次讀數(shù)不相等,則置返回值為0
}
return uiData; //返回鍵值
}
//========================================================
// 語(yǔ)法格式: void Delay(void)
// 實(shí)現(xiàn)功能: 延時(shí)
// 參數(shù): 無(wú)
// 返回值: 無(wú)
//========================================================
void Delay(void)
{
unsigned int uiCount;
for(uiCount = 0;uiCount <= 3000;uiCount++)
{
*P_Watchdog_Clear = 0x0001; //清看門狗
}
}
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -