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);
}
}
}
写法2
#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() //主函数
{
D1=1;
while(1)
{
if(K==0)
{
delay(10); //去抖动,延时10ms后再判断
if(K==0)
D1=~D1;
while(!K); //松手检测
}
}
}
proteus仿真界面:
版权声明:本文为weixin_44314329原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。