|
50家元
我要的的是(key1==0) 当按键按下LED长亮,(key1==1)按键松开LED亮10秒钟,然后熄灭。
问题来了,(key1==0) 按键按下LED亮,为什么(key1==1)定时器还在计时呢?到底哪里有问题,按道理(key1==1)按键松开才会开始计时啊!
#include <reg52.h>
#define uchar unsigned char
#define uint unsigned int
sbit key1=P3^4;//用P1.0做按键1输入
sbit led1=P3^3;//定义输出1
void delay(uint n) {//
uint aa,bb;
for(aa=0;aa<n;aa++){
for(bb=0;bb<850;bb++)
;
}
}
void main(void)
{
while(1)
{
if(key1==0)
{
delay(0);//如果按键按下就延时30毫秒去抖动再判断
if(key1==0)
{
led1 = 0;//输出取反
while(!key1);//按键不放就死循环
}
}
if(key1==1)
{
delay(0);//如果按键松开就延时30毫秒去抖动再判断
{
if(key1==1)
led1 = 0;//输出取反
delay(9999);
led1 = 1;//输出高电平
while(key1==1);//按键抬起就不循环
}
}
}
}
|
|