单片机按键去抖动程序如下
#include 《stc12c5a.h》
#define uchar unsigned char
#define uint unsigned int
#define ulong unsigned long
sbit x0=P3^0;
sbit x1=P3^1;
sbit x2=P3^2;
sbit x3=P3^3;
sbit y0=P1^0;
sbit y1=P1^1;
sbit y2=P1^2;
sbit y3=P1^3;
delay(ulong a1)
{
ulong a2;
for(a2=0;a2《a1;a2++);
}
main()
{
P2=0x00;
while(1)
{
if(x0==0)
{
//按下相应的按键,数码管显示相应的码值
delay(1000);
if(x0==0)
{
P0=0x06;//数码管显示“1”
}
}
if(x1==0)
{
//按下相应的按键,数码管显示相应的码值
delay(1000);//去抖动
if(x1==0) //检测按键确实按下,进行按键处理
{
P0=0x5B;//数码管显示“2”
//这里可以添加按键按下所需要的操作,如数据加减乘除,蜂鸣器等设备开关
}
}
if(x2==0)
{ //按下相应的按键,数码管显示相应的码值
delay(1000);
if(x2==0)
{
P0=0x4F;//数码管显示“3”
}
}
if(x3==0)
{ //按下相应的按键,数码管显示相应的码值
delay(1000);
if(x3==0)
{
P0=0x66;//数码管显示“4”
}
}
}
}