51单片机按键电平读取程序
按键电平的读取通常我们都是通过延时函数或者循环延时来降低抖动时间,来读取正确的按键电平。
示例:
#include "reg52.h"
sbit SysKey P0^0
sbit LED P0^1
#define SET 1
#define RESET 0
void Delay1ms(unsigned int ms)
{
unsigned char a,b,c;
while(ms--)
{
for(c=17;c>0;c--)
for(b=134;b>0;b--)
for(a=2;a>0;a--);
}
}
bit ReadKey(void)
{
if(SysKey == RESET)//有按键被按下
{
Delay1ms(10);//延时10ms
if(SysKey == RESET)// 再次判断按键被按下
return 1;
}
return 0;
}
int main(void)
{
SysKey = SET;//输出高电平
LED = 1;//关闭LED
while(1)
{
if(ReadKey == SET)//读取到按键被按下
LED = 0; //点亮LED小灯