请问delay(20)在这个程序里什么作用?

#include<reg52.h>
sbit Key0=P1^0; //P1^0
sbit Key1=P1^1;// P1^1
sbit PWM=P1^7;
unsigned char num=0,Duty=5;
void Delay(unsigned int time)
{
unsigned int i=0,j=0;
for(i=0;i<time;i++)
for(j=0;j<114;j++);
}
void Key_Scanf(void) 
{
if(Key0==0)
{
Delay(20);
if(Key0==0)
Duty-=1;
while(!Key0);
}
if(Key1==0)
{
Delay(20);
if(Key1==0)
Duty+=1;
while(!Key1);
}
Duty=Duty>1?Duty:1;
Duty=Duty<9?Duty:9;

}
void Timer0_Inits(void)
{
TMOD|=0x01;
TH0=(65535-10000)/256;
TL0=(65535-10000)%256;
TR0=1;
ET0=1;
EA=1;
}
void main(void)
{
Timer0_Inits();
while(1)
{
Key_Scanf();
}
}
void PIT0(void) interrupt 1
{
TH0=(65535-10000)/256;
TL0=(65535-10000)%256;
++num;
if(num<=Duty)
PWM=1;
else
PWM=0;
if(num>9)
num=0; 
}

红糖糍粑
浏览 133回答 1
1回答

牧羊人nacy

去抖动。按键按下的时候,实际上接触点有可能在不停的抖动,导致按键一开一闭,单片机会检测到很多次的按键按下事件,因此延迟一段时间,在延迟这段时间,可以去除由于抖动产生的影响。
打开App,查看更多内容
随时随地看视频慕课网APP