#include<reg51.h>
#define uchar unsigned char 
#define uint unsigned int
sbit P2_0=P2^0;//
sbit P2_2=P2^2;//˿ؿ
uchar GroupNo;
uchar code Seg7code[9]={0x3f,0x06,0x5b,0x4f,0x66};//04Ĵ

void delay1ms(void)//ӳ 
{uchar i;
 for(i=250;i>0;i--);
}

void ShowG(uchar no)//ʾڼ˰°
{P1=Seg7code[no];}

uchar KeySweep(void)//ɨ,ȡ
{uchar temp,no=0;
 if(P3!=0x00)
  {delay1ms();
   if(P3!=0x00)
    temp=P3;
  }
 while(temp!=0)
  {temp=temp>>1;//ɨ
   no++;
  }
 return no;//صڼ
}

void timer0_isr(void) interrupt 1//t0ж
{TH0=(65536-50000)/256;
 TL0=(65536-50000)%256;
 P2_0=~P2_0;
}
void main()//
{TMOD=0x02;//TMODĹʽ  ڶʱʽ2
 TH0=(65536-50000)/256;//Ԥüֵ
 TL0=(65536-50000)%256;
 ET0=1;
 TR0=1;
 while(1)
 {P3=0x00;
  ShowG(0);//ûаʱʾ0
  while(P3==0x00);
  GroupNo=KeySweep();//üɨ躯
  ShowG(GroupNo);//ʾ
  EA=1;//жϷ
  while(P2_2==1);
  delay1ms();
  while(P2_2==1);//˿
  EA=0;
 }
}