#include<reg52.h>
#define uchar unsigned char
#define uint unsigned int
sbit d1=P2^0;
sbit d2=P2^1;
sbit d3=P2^2;
sbit d4=P2^3;
uchar code table[]={0xcf,0xa4,0xb0,0x88};
void delay(uint z);
uchar temp;
int num;
void main()
{
d1=0;
d2=0;
d3=0;
d4=0;
while(1)
{
P1=0x7f;
temp=P1;
temp=temp&0x0f;
while(temp!=0x0f)
{ delay(5);
temp=P1;
temp=temp&0x0f;
while(temp!=0x0f)
{ temp=P1;
switch(temp)
{
case 0x77: num=0;
break;
case 0x7b: num=1;
break;
case 0x7d: num=2;
break;
case 0x7e: num=3;
break;
}
while(temp!=0x0f) //松手检测
{
temp=P1;
temp=temp&0x0f;
}
P0=table[num];
}
}
P1=0xbf;
temp=P1;
temp=temp&0x0f;
while(temp!=0x0f)
{ delay(5);
temp=P1;
temp=temp&0x0f;
while(temp!=0x0f)
{ temp=P1;
switch(temp)
{
case 0xb7: num=0;
break;
case 0xbb: num=1;
break;
case 0xbd: num=2;
break;
case 0xbe: num=3;
break;
}
while(temp!=0x0f)
{
temp=P1;
temp=temp&0x0f;
}
P0=table[num];
}
}
P1=0xdf;
temp=P1;
temp=temp&0x0f;
while(temp!=0x0f)
{ delay(5);
temp=P1;
temp=temp&0x0f;
while(temp!=0x0f)
{ temp=P1;
switch(temp)
{
case 0xd7: num=0;
break;
case 0xdb: num=1;
break;
case 0xdd: num=2;
break;
case 0xde: num=3;
break;
}
while(temp!=0x0f)
{
temp=P1;
temp=temp&0x0f;
}
P0=table[num];
}
}
P1=0xef;
temp=P1;
temp=temp&0x0f;
while(temp!=0x0f)
{ delay(5);
temp=P1;
temp=temp&0x0f;
while(temp!=0x0f)
{ temp=P1;
switch(temp)
{
case 0xe7: num=0;
break;
case 0xeb: num=1;
break;
case 0xed: num=2;
break;
case 0xee: num=3;
break;
}
while(temp!=0x0f)
{
temp=P1;
temp=temp&0x0f;
}
P0=table[num];
}
}
}
}
void delay(uint z)
{
uint x;
uchar y;
for(x=1000;x>0;x--)
for(y=z;y>0;y--);
}
|