|
#include
typedef unsigned char uchar ;
typedef unsigned int uint ;
sbit KEY_3=P3^2;
sbit LED_1=P1^2;
sbit LED_2=P1^3;
void delay_ms(uint);
uchar temp;//用于保存key3未按下时LED的状态,抬起时把这个值给回P1口。
void delay_ms(uint xms)
{
uint i,j;
for(i=xms;i>0;i--)
for(j=110;j>0;j--);
}
void KEY()
{
if( KEY_3 == 0 )
{
delay_ms(20); //20毫秒软件防抖
if(KEY_3 == 0)
{
temp = P1;
LED_1 = 1;
LED_2 = 1;
}
delay_ms(200); //延时0.2秒再进行下次按键的检测
}
if( KEY_3 == 1 )
{
delay_ms(20); //20毫秒软件防抖
if(KEY_3 == 1)
{
P1 = temp;
}
delay_ms(200); //延时0.2秒再进行下次按键的检测
}
}
void main()
{
temp = P1;
while(1)
{
KEY();
}
} |
|