#include<reg52.h>
#define uchar unsigned char
sbit start=P3^3;
//sbit stop=P3^4;
sbit gnd=P1^1;
uchar code dulatab[ ]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};//数字编码0-9
uchar code dulatab1[ ]={0x40,0x79,0x24,0x30,0x19,0x12,0x02,0x78,0x00,0x10};
// 0 1 2 3 4 5 6 7 8 9
uchar code welatab[ ]={0xfe,0xfd,0xfb,0xf7};//位控制字
uchar msec,sec,z=0;
void delay(unsigned int time)//延时 1.692ms
{
uchar i,j;
for(i=0;i<time;i++);
{
for(i=0;j<110;j++);
}
}
void writeled(uchar num ,addr)
{
if(addr!=1)
{
P2=welatab[addr];
P0=dulatab[num];
delay(100);
}
else
{
P2=welatab[addr];
P0=dulatab1[num];
delay(100);
}
}
void display(uchar sec,msec)
{
uchar sech,secl,msech,msecl;
msecl=msec%10;
msech=msec/10;
secl=sec%10;
sech=sec/10;
writeled(sech,0);
writeled(secl,1);
writeled(msech,2);
writeled(msecl,3);
}
void init ()
{
TMOD=0x10; //定时器1工作方式1
TH1=0xdc;
TL1=0x00; //延时初始化设置
//TR1=1;
EA=1; //开总开关
ET1=1; //开定时
gnd=0;
start=1;
}
//}
/*if(stop==0&&TR1==0)
{
delay(2); //延时防抖
if(stop==0)
{
sec=0;
msec=0;
while(stop==0)
{
display(sec,msec);
}
}
}*/
void main()
{
//uchar a,b,c;
init();
while(1)
{
while(start==1) {display(sec,msec);}
//{
TR1=1;
// delay(1500);
display(sec,msec);
while(start==1){display(sec,msec);}
TR1=0;
//while(1)
display(sec,msec);
while(start==1){display(sec,msec);}
sec=0;
msec=0;
//display(sec,msec);
//}
}
}
void timer1() interrupt 3
{
TH1=0xdc;
TL1=0x00;
msec++;
if(msec>=100)
{
msec=0;
sec++;
if(sec>=100)
{
sec=0;
}
}
}