現在我程序實現的是一個按鍵按一下控制燈亮滅長按3秒燈常亮,怎么在長按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--);
}
|