
#include<reg52.h>
#define uint unsigned int
uint S[16]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,
0x80,0x98,0x88,0x83,0xc6,0xa1,0x86,0x8e};
sbit Row1=P1^4;
sbit Row2=P1^5;
sbit Row3=P1^6;
sbit Row4=P1^7;
void delayms(uint);
void Key_Scan(void);
void main(void)
{
P2=0x7f;
while(1)
{
Key_Scan();
}
}
void delayms(uint z)
{
uint x,y;
for(x=z;x>0;x--)
for(y=100;y>0;y--);
}
void Key_Scan(void)
{
uint U,temp1,temp2;
P1=0x0f;
temp1=P1&0x0f;
P1=0xf0;
temp2=P1&0xf0;
U=temp1|temp2;
switch(U)
{
case 0xee:P0=S[0];break;
case 0xde:P0=S[1];break;
case 0xbe:P0=S[2];break;
case 0x7e:P0=S[3];break;
case 0xed:P0=S[4];break;
case 0xdd:P0=S[5];break;
case 0xbd:P0=S[6];break;
case 0x7d:P0=S[7];break;
case 0xeb:P0=S[8];break;
case 0xdb:P0=S[9];break;
case 0xbb:P0=S[10];break;
case 0x7b:P0=S[11];break;
case 0xe7:P0=S[12];break;
case 0xd7:P0=S[13];break;
case 0xb7:P0=S[14];break;
case 0x77:P0=S[15];break;
default:
break;
}
}
|