#include <reg52.h>
#define uchar unsigned char
#define uint unsigned int
sbit k1=P1^0; // +1
sbit k2=P1^1; // -1
sbit k3=P1^2; // 999999
sbit k4=P1^3; // 000000
sbit k5=P1^4; // +50
uint count=0;
uint a,b,c,d,e,f;
uchar code table[]={~0x3f,~0x06,~0x5b,~0x4f,
~0x66,~0x6d,~0x7d,~0x07,
~0x7f,~0x6f};
void delay(uchar i)
{
uint j;
while(i--);
for(j=110;j>0;j--);
}
void main()
{
while(1)
{
if(!k1)
{
delay(10);
if(!k1)
count++;
while(!k1);
}
if(!k2)
{
delay(10);
if(!k2)
count--;
if(count==-1)
count=999999;
while(!k2);
}
if(!k5)
{
delay(10);
if(!k5)
count=count+50;
while(!k5);
}
if(!k3)
{
delay(10);
if(!k3)
count=999999;
while(!k3);
}
if(!k4)
{
delay(10);
if(!k4)
count=0;
while(!k4);
}
a=count%10;
b=count%1000000/10;
c=count%1000000/100;
d=count%1000000/1000;
e=count%1000000/10000;
f=count%1000000/100000;
P3=0xfe;
P2=table[e];
delay(1);
P3=0xfd;
P2=table[d];
delay(1);
P3=0xfb;
P2=table[c];
delay(1);
P3=0xf7;
P2=table[b];
delay(1);
P3=0xef;
P2=table[a];
delay(1);
P3=0xcf;
P2=table[f];
delay(1);
}
}
程序可编译,但加到100后显示不正常。

#define uchar unsigned char
#define uint unsigned int
sbit k1=P1^0; // +1
sbit k2=P1^1; // -1
sbit k3=P1^2; // 999999
sbit k4=P1^3; // 000000
sbit k5=P1^4; // +50
uint count=0;
uint a,b,c,d,e,f;
uchar code table[]={~0x3f,~0x06,~0x5b,~0x4f,
~0x66,~0x6d,~0x7d,~0x07,
~0x7f,~0x6f};
void delay(uchar i)
{
uint j;
while(i--);
for(j=110;j>0;j--);
}
void main()
{
while(1)
{
if(!k1)
{
delay(10);
if(!k1)
count++;
while(!k1);
}
if(!k2)
{
delay(10);
if(!k2)
count--;
if(count==-1)
count=999999;
while(!k2);
}
if(!k5)
{
delay(10);
if(!k5)
count=count+50;
while(!k5);
}
if(!k3)
{
delay(10);
if(!k3)
count=999999;
while(!k3);
}
if(!k4)
{
delay(10);
if(!k4)
count=0;
while(!k4);
}
a=count%10;
b=count%1000000/10;
c=count%1000000/100;
d=count%1000000/1000;
e=count%1000000/10000;
f=count%1000000/100000;
P3=0xfe;
P2=table[e];
delay(1);
P3=0xfd;
P2=table[d];
delay(1);
P3=0xfb;
P2=table[c];
delay(1);
P3=0xf7;
P2=table[b];
delay(1);
P3=0xef;
P2=table[a];
delay(1);
P3=0xcf;
P2=table[f];
delay(1);
}
}
程序可编译,但加到100后显示不正常。
