keil uVision4界面:
写法1
#include<reg51.h> //包含8051单片机寄存器定义的头文件
sbit D1=P0^0;
sbit K=P2^0;
void delay(int x) //延时函数
{
int i,j;
for(i=x;i>0;i--)
for(j=120;j>0;j--);
}
void main() //主函数
{
int a;
a=0; //a是检测按键的次数
D1=1; //当a=0时,灯是灭的
while(1)
{
if(K==0)
{
delay(10);
if(K==0) //消抖处理
{
a++; //当按下1次(a=1),灯亮(D1=0),再次按下(a=0),灯灭
if(a==2) //当按键a次数等于2时,重新返回值为0
a=0; //返回初始值0
if(a==1) //当a等于1
D1=0;
else
D1=1;
}
while(!K);
}
}
}

文章展示了两种在8051单片机上实现按键消抖的C语言程序,主要涉及寄存器定义、延时函数以及按键状态的检测。当按键被按下和释放时,程序控制LED灯的状态变化,同时通过延时函数避免了由于机械抖动引起的误判。此外,代码也在Proteus环境下进行了仿真验证。
最低0.47元/天 解锁文章
2402

被折叠的 条评论
为什么被折叠?



