unsigned char key()
{
unsigned char keyNum;
P1=0xFF;
P1_7=0;
if(P1_3==0){Delay(20);while(P1_3==0);Delay(20);keyNum=1;}
if(P1_2==0){Delay(20);while(P1_2==0);Delay(20);keyNum=2;}
if(P1_1==0){Delay(20);while(P1_1==0);Delay(20);keyNum=3;}
if(P1_0==0){Delay(20);while(P1_0==0);Delay(20);keyNum=4;}
P1_6=0;
if(P1_3==0){Delay(20);while(P1_3==0);Delay(20);keyNum=5;}
if(P1_2==0){Delay(20);while(P1_2==0);Delay(20);keyNum=6;}
if(P1_1==0){Delay(20);while(P1_1==0);Delay(20);keyNum=7;}
if(P1_0==0){Delay(20);while(P1_0==0);Delay(20);keyNum=8;}
P1_5=0;
if(P1_3==0){Delay(20);while(P1_3==0);Delay(20);keyNum=9;}
if(P1_2==0){Delay(20);while(P1_2==0);Delay(20);keyNum=10;}
if(P1_1==0){Delay(20);while(P1_1==0);Delay(20);keyNum=11;}
if(P1_0==0){Delay(20);while(P1_0==0);Delay(20);keyNum=12;}
P1_4=0;
if(P1_3==0){Delay(20);while(P1_3==0);Delay(20);keyNum=13;}
if(P1_2==0){Delay(20);while(P1_2==0);Delay(20);keyNum=14;}
if(P1_1==0){Delay(20);while(P1_1==0);Delay(20);keyNum=15;}
if(P1_0==0){Delay(20);while(P1_0==0);Delay(20);keyNum=16;}
return keyNum;
}