求编程单片机89c51,要求:按key1(P3.4,p3.5)键三次后,P1口的LED灯全部点亮,再按1次key1

用汇编语言

/*****************
晶振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灯全灭。次此操作可反复执行。

温馨提示:答案为网友推荐,仅供参考
第1个回答  2012-04-01
你这个题目??key(3.4 3.5)是怎么回事?两个都可以还是同时要按住两个?追问

按哪个都行

第2个回答  2012-03-31
能不能把题目说完了呢?追问

用51单片机汇编程序:按下key1键3次后p1口的LED灯全亮,再按一次,LED灯全灭。次此操作可反复执行。

相似回答