#include //???? reg51.h ????
#define uchar unsigned char
#define uint unsigned int //????uint?????
void delay(uchar); //??????
uchar KeyScan(void); //??????????????
sbit P1_0 = 0x90^0; //????P1_0,?????????P1.0
P1_1 = 0x90^1; //????P1_1,?????????P1.1 ????
P1_2 = 0x90^2; //????P1_2,?????????P1.2?????
P1_3 = 0x90^3; //????P1_3,?????????P1.3????
P1_4 = 0x90^4; //????P1_4,?????????P1.4?????
P1_5 = 0x90^5; //????P1_5,?????????P1.5?????
P1_6 = 0x90^6; //????P1_6,?????????P1.6????
P1_7 = 0x90^7; //????P1_7,?????????P1.7?????
void main(void)
{
uchar KeyValue; //????KeyValue,????????8 bit????
while(1)
{
KeyValue=KeyScan(); //????????8 bit????
switch(KeyValue) //?????????,??????????
{
case 0x0E: //??0???
P1_4 =0 ; //??D1?????
break;
case 0x0D: //??1???????
P1_5 = 0; //??D2
break;
case 0x0B: //??2????????
P1_6 = 0; //??D3
break;
case 0x07: //??3????????
P1_7 = 0; //??D4
break;
default: //????????,??????
P1_4=1; //??D1????
P1_5=1; //??D2?????
P1_6=1; //??D3?????
P1_7=1; //??D4?????
break;
}
}
}
/********************************************/
uchar KeyScan(void)
{
uchar TempValue ;
TempValue=P1;
TempValue&=0x0f;
if(TempValue!=0x0f)
{
delay(10);
TempValue=P1;
TempValue&=0x0f;
if(TempValue!=0x0f)
{
return TempValue;

}
}
return 0;
}
void delay(uchar x)
{
uchar k;
while(x--)
for(k=0;k<125;k++);
}
