
sbit start=P3^0;
sbit eoc=P3^1;
sbit oe=P3^2;
sbit L1=P3^3;
sbit L2=P3^4;
sbit L3=P3^5;
sbit L4=P3^6;
sbit Key1=P0^0;
sbit Key2=P0^1;
sbit Key3=P0^2;
sbit A_C=P0^5;
sbit A_B=P0^6;
sbit A_A=P0^7;
unsigned char K=1,vol=0;
unsigned char s[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
void delay(unsigned int n)
{
unsigned int i=0;
for(i=0;i<n*200;i++)
{
;
}
}
void Choose()
{
unsigned char state;
P0=0xff;
state=P0;
state=state&0x03;
K=state;
switch(state)
{
case 0: A_A=0; A_B=0; A_C=0; break ;
case 1: A_A=1; A_B=0; A_C=0; break ;
case 2: A_A=0; A_B=1; A_C=0; break ;
case 3: A_A=1; A_B=1; A_C=0; break ;
case 4: A_A=0; A_B=0; A_C=1; break ;
case 5: A_A=1; A_B=0; A_C=1; break ;
case 6: A_A=0; A_B=1; A_C=1; break ;
case 7: A_A=1; A_B=1; A_C=1; break ;
}
}
void adc()
{
Choose();
start=0;
start=1;
delay(5);
start=0;
while(eoc!=1);
oe=1;
vol=P2;
oe=0;
}
display()
{
while(1)
{ L1=1; L2=0; L3=0; L4=0;
P1=s[0];
delay(1);
L1=0; L2=1; L3=0; L4=0;
P1=s[K+1];
delay(1);
L1=0; L2=0; L3=1; L4=0;
P1=s[vol/51]|0x80;
delay(1);
L1=0; L2=0; L3=0; L4=1;
P1=s[vol*100%510];
delay(1);
if(P2!=vol)
break;
}
}
void main()
{
while(1)
{
adc();
display();
}
}