/*****************
晶振4MHZ,按键key1为P3.4,P3.5接口
功能:按 key1键三次,P1灯亮,再按一次灭 ,如此重复
******************/
#include<reg51.h>
sbit key1 = P3^4;
/******************
void delay40us(uint time)
输入参数:time
输出参数:无
函数功能:延时程序40us
******************/
void delay40us(unsigned int time)
{
unsigned char ks;
while(time !=0)
{
for(ks=0;ks<10;ks++)
{ }
time--;
}
}
void main()
{
unsigned char num,flag;
flag=0;num=0;
P3=0x10;
while(1)
{
if((key1==0)&&(flag==0))
{
delay40us(250); //延时10ms去抖
if(key1==0) //再次判断key1键是否按下
{
while(!key1); //判断按键key1是否松开
delay40us(250); //延时10ms去抖
while(!key1); //再次判断按键key1是否已松开
num++;
}
}
if(num>2) //按键按下3次,P1口灯亮
{
num = 0;
flag = 1;
P1 = 0; //P1口灯亮,为P1口输出低电平灯亮
}
if((key1==0)&&(flag==1))
{
delay40us(250);
if(key1==0)
{
while(!key1);
delay40us(250);
while(!key1);
flag = 0;
P1 = 0xff; //P1口灯灭,P1口输出高电平灯灭
}
}
}
}
追问用51单片机汇编程序:按下key1键3次后p1口的LED灯全亮,再按一次,LED灯全灭。次此操作可反复执行。