51单片机按键代码运用 求大神指点迷津

#include<reg51.h>
typedef int u16;
sbit k2=P3^0;
unsigned char led[]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};
char i;
void delay(u16 i)
{
while(i–);
}
void key()//定义独立按键控制
{
if(k20)//说明按下去了
{
delay(1000);//消抖
if(k2
0)
{
while(!k2);
while(1)
{
delay(50000);
if(k20)
{
delay(1000);
if(k2
0)
{
while(!k2);
break;
}
}
}

}
}
}
void main()
{
while(1)
{
P0=0x00;
delay(50000);
while(1)
{
for(i=0;i<8;i++)
{
P0=led[i];
delay(50000);
key();
}
}
}
}
求大神帮忙注解按键代码的含义51单片机按键代码运用 求大神指点迷津