//第一种 中间间隔时间可能不太准
code uchar tab[] = { 0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xbf,0xFF};
void allinit(void);
uint tt;
void delayms(uint ms)
{
uint i,j;
for(i=ms;i>0;i--)
for(j=835;j>0;j--);
}
void main(void)
{
allinit();
while(1)
{
tt++;
if(tt<=1000)
{
P2 = (P2&0x1F)|0xc0;
P0 = 0xFF;
P2 = (P2&0x1F)|0xe0;
P0 =tab[1] ;
delayms(1);
}
else if(tt>1000&&tt<=2000)
{
P2 = (P2&0x1F)|0xc0;
P0 = 0xFF;
P2 = (P2&0x1F)|0xe0;
P0 =tab[11] ;
delayms(1);
}
else
tt=0;
}
}
void allinit(void)
{
P2 = (P2&0x1F)|0xa0;
P0 = 0x00;
P2 = (P2&0x1F)|0x80;
P0 = 0xFF;
P2 = (P2&0x1F)|0xc0;
P0 = 0xFF;
P2 =(P2&0x1F)|0xe0;
P0 = 0xFF;
}
//有时要比较准确的时间,就要定时器
code uchar tab[] = { 0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xbf,0xFF};
void allinit(void);
uint tt;
void Timer0Init(void) //5毫秒@11.0592MHz
{
AUXR |= 0x80; //定时器时钟1T模式
TMOD &= 0xF0; //设置定时器模式
TL0 = 0x00; //设置定时初值
TH0 = 0x28; //设置定时初值
TF0 = 0; //清除TF0标志
TR0 = 1; //定时器0开始计时
EA=1;
ET0=1;
}
void timer0_service(void) interrupt 1
{
tt++;
if(tt<=200)
{
P2 = (P2&0x1F)|0xc0;
P0 = 0xFF;
P2 = (P2&0x1F)|0xe0;
P0 =tab[1] ;
}
else if(tt>200&&tt<=400)
{
P2 = (P2&0x1F)|0xc0;
P0 = 0xFF;
P2 = (P2&0x1F)|0xe0;
P0 =tab[11] ;
}
else
tt=0;
}
void main(void)
{
allinit();
Timer0Init();
while(1);
}
void allinit(void)
{
P2 = (P2&0x1F)|0xa0;
P0 = 0x00;
P2 = (P2&0x1F)|0x80;
P0 = 0xFF;
P2 = (P2&0x1F)|0xc0;
P0 = 0xFF;
P2 =(P2&0x1F)|0xe0;
P0 = 0xFF;
}