求大神帮忙是缩短下程序 谢谢 在线等
void keyscan()
{
uchar temp,key;
P1=0xfe;
temp=P1;
temp=temp&0xf0;
if(temp!=0xf0)
{
delayms(10);
temp=P1;
temp=temp&0xf0;
if(temp!=0xf0)
{
temp=P1;
switch(temp)
{
case 0xee:
key=11;
break;
case 0xde:
key=12;
break;
case 0xbe:
key=13;
break;
case 0x7e:
key=14;
break;
}
while(temp!=0xf0)
{
temp=P1;
temp=temp&0xf0;
}
display(key);
}
}
P1=0xfd;
temp=P1;
temp=temp&0xf0;
if(temp!=0xf0)
{
delayms(10);
temp=P1;
temp=temp&0xf0;
if(temp!=0xf0)
{
temp=P1;
switch(temp)
{
case 0xed:
key=21;
break;
case 0xdd:
key=22;
break;
case 0xbe:
key=23;
break;
case 0x7e:
key=24;
break;
}
while(temp!=0xf0)
{
temp=P1;
temp=temp&0xf0;
}
display(key);
}
}
P1=0xfb;
temp=P1;
temp=temp&0xf0;
if(temp!=0xf0)
{
delayms(10);
temp=P1;
temp=temp&0xf0;
if(temp!=0xf0)
{
temp=P1;
switch(temp)
{
case 0xeb:
key=31;
break;
case 0xdb:
key=32;
break;
case 0xbb:
key=33;
break;
case 0x7b:
key=34;
break;
}
while(temp!=0xf0)
{
temp=P1;
temp=temp&0xf0;
}
display(key);
}
}
P1=0xf7;
temp=P1;
temp=temp&0xf0;
if(temp!=0xf0)
{
delayms(10);
temp=P1;
temp=temp&0xf0;
if(temp!=0xf0)
{
temp=P1;
switch(temp)
{
case 0xe7:
key=41;
break;
case 0xd7:
key=42;
break;
case 0xb7:
key=43;
break;
case 0x77:
key=44;
break;
}
while(temp!=0xf0)
{
temp=P1;
temp=temp&0xf0;
}
display(key);
}
}
}
[解决办法]
uchar trans(uchar t) {
static uchar s[16]={0xee,0xde,0xbe,0x7e,0xed,0xdd,0xbe,0x7e,0xeb,0xdb,0xbb,0x7b,0xe7,0xd7,0xb7,0x77};
static uchar d[16]={ 11, 12, 13, 14, 21, 22, 23, 24, 31, 32, 33, 34, 41, 42, 43, 44};
int i;
for (i=0;i<16;i++) if (s[i]==t) return d[i];
printf("oops!\n");
return 0;
}
void keyscan()
{
uchar temp,key;
uchar p4[4]={0xfe,0xfd,0xfb,0xf7};
int j;
for (j=0;j<4;j++) {
P1=p4[j];
temp=P1;
temp=temp&0xf0;
if(temp!=0xf0) {
delayms(10);
temp=P1;
temp=temp&0xf0;
if(temp!=0xf0) {
temp=P1;
key=trans(temp);
while(temp!=0xf0) {
temp=P1;
temp=temp&0xf0;
}
display(key);
}
}
}
}
[解决办法]