1.
unsigned char KeyScan()
{
unsigned char k=0xff,col=0,row;
P1=0xf0;
if((P1&0xf0)==0xf0)
return k;
Delay(20);
if((P1&0xf0)==0xf0)
return k;
for(row=0;row<4;row++)
{
P1=~(1<<row);
k=P1&0xf0;
if(k!=0xf0)
{
while(k&(1<<(col+4)))
col++;
k=row*4+col;
P1=0xf0;
while(P1!=0xf0);
break;
}
}
return k;
void Keyscan()
{
P1=0x0f;
if(P1!=0x0f)
{
Delay(20);
if(P1!=0x0f)
{
Delay();
P1=0x0f;
switch(P1)
{
case 0x07: KeyValue=0; break;
case 0x0b: KeyValue=4; break;
case 0x0d: KeyValue=8; break;
case 0x0e: KeyValue=12; break;
}
P1=0xf0;
switch(P1)
{
case 0xe0: KeyValue=KeyValue; break;
case 0xd0: KeyValue=KeyValue+1; break;
case 0xb0: KeyValue=KeyValue+2;break;
case 0x70: KeyValue=KeyValue+3;break;
}
while(P1!=0xf0);
}
}
}
unsigned char KeyScan()
{
unsigned char k=0xff,col=0,row;
P1=0xf0;
if((P1&0xf0)==0xf0)
return k;
Delay(20);
if((P1&0xf0)==0xf0)
return k;
for(row=0;row<4;row++)
{
P1=~(1<<row);
k=P1&0xf0;
if(k!=0xf0)
{
while(k&(1<<(col+4)))
col++;
k=row*4+col;
P1=0xf0;
while(P1!=0xf0);
break;
}
}
return k;
}
void Keyscan()
{
P1=0x0f;
if(P1!=0x0f)
{
Delay(20);
if(P1!=0x0f)
{
Delay();
P1=0x0f;
switch(P1)
{
case 0x07: KeyValue=0; break;
case 0x0b: KeyValue=4; break;
case 0x0d: KeyValue=8; break;
case 0x0e: KeyValue=12; break;
}
P1=0xf0;
switch(P1)
{
case 0xe0: KeyValue=KeyValue; break;
case 0xd0: KeyValue=KeyValue+1; break;
case 0xb0: KeyValue=KeyValue+2;break;
case 0x70: KeyValue=KeyValue+3;break;
}
while(P1!=0xf0);
}
}
}