#include"reg52.h"
#include<intrins.h>//解决_nop_报错的问题
sbit LED1= P3^7;
sbit key1=P2^1;
void Delay200ms() //@11.0592MHz
{
unsigned char i, j, k;
_nop_();
i = 2;
j = 103;
k = 147;
do
{
do
{
while (--k);
} while (--j);
} while (--i);
}
void main()
{
while(1)
{
if(key1==0)
{
Delay200ms() ;
if(key1==0)
LED1=0;
}
else
LED1=1;
}
}
这时候就需要加入延时函数,当键位发生变化的时候,先不急着下定论而是延迟一会,待平稳之后在看键位是否发生变化,起到消抖作用,另一方面也可以起到防止误触的作用,比如单片机用久了,接触有些松,按键处发生了轻微的抖动,这时候有延时函数的作用,可以避免误触改变键位。