51 单片机消斗问题
请过往牛人帮帮忙!学习51单片机过程中看到这样一条语句delay(20),delay()函数是定义的延时函数,就是两个for语句执行循环空操作的那种。通过查找资料知道这是一条消斗语句,但是不知道这条语句有什么功效,把这条语句删除之后发现程序不能正常执行,这是怎么回事呢?还有就是if(s2==20)这条语句不明白是什么意思!请牛人指教一下我的这两个疑问!下边是那个代码,希望能得到牛人的帮助!非常感谢!!#include<reg52.h>
#define uchar unsigned char
uchar num;
sbit beep=P2^3;
sbit led=P1^0;
sbit s2=P3^4;
void delay(uchar i)
{
uchar j,k;
for(j=i;j>0;j--)
for(k=125;k>0;k--);
}
void main()
{
while(1)
{
if(s2==0)
{
delay(20); //消抖
if(s2==20)
{
while(!s2); //等待按键松开
num++;
}
switch(num)
{
case 1: led=0; beep=1; break;
case 2: beep=0; led=1; num=0; break;
}
}
}
}