#include <reg51.h>
#include <intrins.h>
#define uint unsigned int
#define uchar unsigned char
void yanshi(uint n);
uchar anjian ();
uchar dian ;
#define js P1
#define ld P0
void main(){
ld=0x00;
while (1){
switch (anjian()){
case (0xfe):
ld = 0x01;
break;
case (0xfd):
ld =0x02;
break;
case (0xfb):
ld =0x04;
break;
case (0xf7):
ld =0x08;
break;
case (0xef):
ld =0x10;
break;
case (0xdf):
ld =0x20;
break;
case (0xbf):
ld =0x40;
break;
case (0x7f):
ld =0x80;
break;
default :
break;
}
}
}
void yanshi (uint n){
uint j,i;
for (j=n;j>0;j--)
for (i=110;i>0;i--);
}
uchar anjian ()
{
uchar i,j=5000;
while (j--) //这里想实现当某灯被点亮后,如果一定时间
{ //没有其他灯被点亮,就自动熄灭,为什么我这个循环毫无存在感,有没有它一样
if (js==ld) //大神帮忙看看那里不对了?
{
if (j==0){
ld=0x00;
break;
}
}
else
break;
}
if( js != 0x00 )
{
yanshi(100);
if( js != 0x00 )
{
dian=js;
i=0;
while ((i<50)&&(js!=0x00))
{
yanshi();
i++;
}
}
}
return dian;
}
大哥,您说的这是哪跟哪啊?你用的变量也和我的不一样,您确定没回答错问题?
这样说来,灯亮一下就会马上灭掉,事实上是它一直亮着呢
追答要实现你的功能,这样做是不行的,你可以用一个定时器来做这个一定时间未有其他按键的过程控制,否则是无法捕捉到这个在延时过程中检测按键的。