📄 key.c
字号:
#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); //键盘扫描函数
void Delay(void); //延时函数
//=====================================================================
// 语法格式: int main(void)
// 实现功能: 通过点亮不同发光二极管来显示IOA口输入键盘值
// 参数: 无
// 返回值: 无
//=====================================================================
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();
}
}
//========================================================
// 语法格式: unsigned int KeyScan(void)
// 实现功能: 获得键盘值并返回
//========================================================
unsigned int KeyScan(void)
{
unsigned int uiData;
unsigned int uiTemp;
uiData = *P_IOB_Data; //读取IOA端口输入
uiData = uiData&0xf000; //仅取低八位有效值
if(uiData!=0) //非零则表示有键按下
{
Delay(); //延时消抖
uiTemp = *P_IOB_Data;
uiTemp = uiTemp&0xf000; //仅取低八位有效值
if(uiData != uiTemp)
uiData = 0; //两次读数不相等,则置返回值为0
}
return uiData; //返回键值
}
//========================================================
// 语法格式: void Delay(void)
// 实现功能: 延时
// 参数: 无
// 返回值: 无
//========================================================
void Delay(void)
{
unsigned int uiCount;
for(uiCount = 0;uiCount <= 3000;uiCount++)
{
*P_Watchdog_Clear = 0x0001; //清看门狗
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -