1.延迟函数
#include <reg52.h>
#define uchar unsigned char
#define uint unsigned int
void Delay_ms(uint ms)//延迟1ms
{
uchar i;
while(ms--)
for(i=0;i<123;i++);
}
2.独立键盘函数
这里采用静态变量法:在检测按键是否按下的程序段中加入一个静态变量,如果按键没有处理过,将此变量.置为0,按键处理过后则置为1。
(结合上面的延迟函数)
#include <reg52.h>
#define uchar unsigned char
uchar Key_scan(void)
{
static bit kp=0;//定义静态变量
if( (P1&0x01) !=0x01) //先或是:为了只保留与按键相关的位;
{ //再判断是否有键按下
Delay_ms(10); //延迟消抖
if( ( (P1&0x01) !=0x01)&&(kp==0))
{
kp = 1;
return 1; //按下S1就返回键1
}
}
else
{
kp = 0;
return 0;
}
}