下面的程序,按一次按鍵(key1)執行case0,再按一次按鍵執行case1。
本人新手,想請高手指點幫忙,實現以下功能:當key1高電平時,執行case0。當key1為低電平時,執行case1。
【即:當key1高電平時,燈2滅,燈1滅;1秒后,保持燈2滅,但燈1亮,然后一直保持,直至key1電平發生變化。】
我曾使用if(!key1)但不能實現所需要的功能。
#include<reg52.h>
#define uint unsigned int
#define uchar unsigned char
void delay_ms(uint);
sbit led2=P1^0;
sbit led1=P1^2;
sbit key1=P3^2;
void main()
{
uchar i=0;
while(1)
{
if(key1==0)//按鍵1
{
delay_ms(10);
if(key1==0)
{
i++;
i=i%2;
switch(i)
{
case 0: led2=1; led1=1; delay_ms(1000); led2=1; led1=0; break;//燈2滅,燈1滅;1秒后,保持燈2滅,但燈1亮。
case 1: led2=0; led1=1; delay_ms(1000); led2=0; led1=0; break;//燈2亮,燈1滅;1秒后,保持燈2亮,但燈1亮。
default: break;
}
}
while(!key1);
}
}
}
void delay_ms(uint z) //延時子程序
{
uint x,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}
|