现在我程序实现的是一个按键按一下控制灯亮灭长按3秒灯常亮,怎么在长按3秒常亮之中加入一个延时关闭功能并且加入一个红外感应触发之后还能再次像按3秒一样再次延时
关闭下面是程序;
#include <reg52.h>
#include <intrins.h>
#define uint unsigned int //宏定义:unit=unsigned int
#define uchar unsigned char
sbit led1=P2^1;
sbit led2=P2^3;
sbit s=P3^5;
uchar flag1,flag2;
void delay(uint);
void keyscan();
void main()
{
led2=0;
while(1)
{
keyscan();
}
}
void keyscan()
{
uint j;
j=0;
s=1;
if(flag1==1||flag2==1)
{
if(!s)
{
delay(5);
if(!s)
{
while(!s);
flag1=0;
flag2=0;
led1=1; //黄灯
led2=0; //夜灯
}
}
}
else
{
if(!s)
{
delay(5);
if(!s)
{
while(s==0 && j<30000)
{
// delay(5);
j++;
}
if (j>=30000)
{
flag2=1;
led1=0; //黄灯
led2=1;
while(!s);
}
else
{
flag1=1;
led2=1; //夜灯
}
}
}
}
}
void delay(uint z)
{
//1ms延时
uint i,j;
for(i=z;i>0;i--)
for(j=110;j>0;j--);
}
|