#include <REGX52.H>
int x=0,y=0,n=0,m=0;
void Delay1ms(int shijian)
{
while(shijian)
{
unsigned char i, j;
i = 2;
j = 239;
do
{
while (--j);
} while (--i);
shijian--;
}
}
sbit P22 = P2^2;
sbit P23 = P2^3;
sbit P24 = P2^4;
unsigned char nix[]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x07,0x7F,0x6F,0x77,0x7C,0x39,0x5E,0x79,0x71,0x00,0x80} ;
void nixie(unsigned char a,b,c,d,w,x,y,z)
{
switch(a)
{
case 1:
P24=1,P23=1,P22=1;
break;
case 2:
P24=1,P23=1,P22=0;
break;
case 3:
P24=1,P23=0,P22=1;
break;
case 4:
P24=1,P23=0,P22=0;
break;
case 5:
P24=0,P23=1,P22=1;
break;
case 6:
P24=0,P23=1,P22=0;
break;
case 7:
P24=0,P23=0,P22=1;
break;
case 8:
P24=0,P23=0,P22=0;
break;
}
P0=nix[w];
Delay1ms(1);
P0=0x00;
switch(b)
{
case 1:
P24=1,P23=1,P22=1;
break;
case 2:
P24=1,P23=1,P22=0;
break;
case 3:
P24=1,P23=0,P22=1;
break;
case 4:
P24=1,P23=0,P22=0;
break;
case 5:
P24=0,P23=1,P22=1;
break;
case 6:
P24=0,P23=1,P22=0;
break;
case 7:
P24=0,P23=0,P22=1;
break;
case 8:
P24=0,P23=0,P22=0;
break;
}
P0=nix[x];
Delay1ms(1);
P0=0x00;
switch©
{
case 1:
P24=1,P23=1,P22=1;
break;
case 2:
P24=1,P23=1,P22=0;
break;
case 3:
P24=1,P23=0,P22=1;
break;
case 4:
P24=1,P23=0,P22=0;
break;
case 5:
P24=0,P23=1,P22=1;
break;
case 6:
P24=0,P23=1,P22=0;
break;
case 7:
P24=0,P23=0,P22=1;
break;
case 8:
P24=0,P23=0,P22=0;
break;
}
P0=nix[y];
Delay1ms(1);
P0=0x00;
switch(d)
{
case 1:
P24=1,P23=1,P22=1;
break;
case 2:
P24=1,P23=1,P22=0;
break;
case 3:
P24=1,P23=0,P22=1;
break;
case 4:
P24=1,P23=0,P22=0;
break;
case 5:
P24=0,P23=1,P22=1;
break;
case 6:
P24=0,P23=1,P22=0;
break;
case 7:
P24=0,P23=0,P22=1;
break;
case 8:
P24=0,P23=0,P22=0;
break;
}
P0=nix[z];
Delay1ms(1);
P0=0x00;
}
void Timer0Init(void)
{
TMOD &= 0xF0;
TMOD |= 0x01;
TL0 = 0x18;
TH0 = 0xFC;
TF0 = 0;
TR0 = 1;
ET0=1;
EA=1;
}
void timer0_routine() interrupt 1
{
static unsigned int t0count;
TL0 = 0x18;
TH0 = 0xFC;
t0count++;
if(t0count>=500)
m++;
if(m10)
{
m=0;
n=n++;
if(n10)
{
n=0;
y++;
if(y10)
{
y=0;
x++;
if(x10)
{
x=0;
}
}
}
}
nixie(4,3,2,1,m,n,y,x);
t0count=0;
}
void main()
{
Timer0Init();
while(1)
{;}
}