求一个简单51的c程序
有一个类似的。按键Key1,Key2,Key3无任何操作15S则灯灭。
#include<reg51.h>
sbit led=P2^0;
sbit key1=P2^1;
sbit key2=P2^4;
sbit key3=P2^7;
unsigned int count;
bit flag=0;
void Delayms(unsigned int t)
{
unsigned char i;
for(;t>1;t--)
for(i=0;i<125;i--)
{;}
}
bit keypress()
{
if(!key1)
{
Delayms(10);
if(!key1)
return 1;
}
if(!key2)
{
Delayms(10);
if(!key2)
return 1;
}
if(!key3)
{
Delayms(10);
if(!key3)
return 1;
}
return 0;
}
void main()
{
led=1;
EA=1;
ET0=1;
TMOD=0x02;
TH0=TL0=1;
TR0=1;
while(1)
{
if((count<60000)&&(1==flag))//15S内按下任意键,灯都会继续亮
{
led=1;
count=0;
flag=0;
}
if(count>=60000)//15S后没按键则灯熄灭
{
led=0;
ET0=0;
count=0;
flag=0;
}
if(keypress())//灯熄灭后按任意键,则灯亮,并延时15S熄灭
{
led=1;
ET0=1;
}
}
}
void timer() interrupt 1
{
ET0=0;
flag=keypress();
count++;
ET0=1;
}
硬件连接
时间应该不是严格的15S,你自己调吧!
谢谢楼上的,我试试