STC单片机1个按键封装
//头文件代码
#ifndef _KEY_H
#define _KEY_H
#include <reg52.h>
sbit KEY1=P3^0;//先1再检测
void KeyInit();
void KeyScan();//按键扫描
void KeyDriver();
#endif
//源文件代码
#include"key.h"
unsigned char keySta=1;//按键当前状态
void KeyInit()
{
SetGpioMode(GPIOP3,PIN_0,GPIO_Mode_Out_IN);//设置GPIO模式 GPIO_Mode_Out_IN准双向 GPIO_Mode_Out_PP推挽 GPIO_Mode_AIN高阻GPIO_Mode_Out_OD开漏
IoModeInit();//IO口模式初始化
KEY1=1;
}
void KeyAction()//按键动作处理
{
}
void KeyDriver()
{
static unsigned char backUp=1;
if (backUp!= keySta) //检测按键动作
{
if (backUp==1) //按键按下时执行动作
{
KeyAction();//按键动作处理
}
backUp = keySta; //刷新前一次的备份值
}
}
void KeyScan()//按键扫描
{
static unsigned char keyBuf=0xFF;//按键状态缓存
keyBuf=(keyBuf<<1)|KEY1;
if(keyBuf==0x00)
{
keySta=0;//按下
}
else if(keyBuf==0xFF)
{
keySta=1;//弹起
}
}