#include <reg52.h>
#define uchar unsigned char
#define unit unsigned int
#define led P2
uchar i,flag1,flag2,flag3,flag4;
sbit k1=P3^0;
sbit k2=P3^1;
sbit k3=P3^2;
sbit k4=P3^3;
uchar table1[]={0xe7,0xdb,0xbd,0x7e};
uchar table2[]={0x77,0xbb,0xdd,0xee};
uchar table3[]={0x55,0xaa,0x00,0xff};
uchar table4[]={0x3f,0xcf,0xf3,0xfc};
void delay_ms(unsigned int n)
{
unsigned int i=0,j=0;
for(i=0;i<n;i++)
for(j=0;j<123;j++);
}
void flag5()
{
P2=0x00;
}
void key_scan()
{
if(k1==0)
{
delay_ms(10);
if(!k1)
{
flag2=0;
flag3=0;
flag4=0;
flag1=1;
}
}
if(!k2)
{
delay_ms(10);
if(!k2)
{
flag1=0;
flag3=0;
flag4=0;
flag2=1;
}
}
if(!k3)
{
delay_ms(10);
if(!k3)
{
flag1=0;
flag2=0;
flag4=0;
flag3=1;
}
}
if(!k4)
{
delay_ms(10);
if(!k4)
{
flag1=0;
flag2=0;
flag3=0;
flag4=1;
}
}
}
void main()
{
while(1)
{
flag5();
key_scan();
if(flag1==1)
{
for(i=0;i<4;i++)
{
led=table1[i];
delay_ms(400);
key_scan();
}
}
if(flag2==1)
{
for(i=0;i<4;i++)
{
led=table2[i];
delay_ms(400);
key_scan();
}
}
if(flag3==1)
{
for(i=0;i<4;i++)
{
led=table3[i];
delay_ms(400);
key_scan();
}
}
if(flag4==1)
{
for(i=0;i<4;i++)
{
led=table4[i];
delay_ms(400);
key_scan();
}
}
}
}