#include<reg51.h>
#include<intrins.h>
#define uint unsigned int
#define uchar unsigned char
void Delayms(uint x);
sbit L=P2^0;
sbit LA=P2^1;
sbit LB=P2^2;
void Display();
sbit key1=P1^5;
sbit key2=P1^6;
sbit key3=P1^7;
/*位碼*/uchar tablew[]={0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07};
/*位選*/uchar shu[8]={0};
/*共陰極*/
uchar table6[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
uint aa,bb,cc,dd;
void main()
{
TMOD=0x01;//設置工作方式
TH0=(65536-1000)/256;//設置定時器高八位
TL0=(65536-1000)%256;//設置定時器低八位
ET0=1;//打開定時器T0的中斷開關
TR0=1;//啟動定時器T0工作
EA=0;//打開總中斷開關
while(1)
{
uchar mshi,mge,fshi,fge,sshi,sge;
if(key1==0)
{
EA=1;
}
else if(key2==0)
{
EA=0;
}
else if(key3==0)
{
bb=0;cc=0;dd=0;
}
else;
mshi=bb/10;
mge=bb%10;
if(bb>59)
{
bb=0;
cc++;
}
fshi=cc/10;
fge=cc%10;
if(cc>59)
{
cc=0;
dd++;
}
sshi=dd/10;
sge=dd%10;
if(dd>23)
{
dd=0;
}
shu[7]=table6[mge];
shu[6]=table6[mshi];
shu[5]=0x40;
shu[4]=table6[fge];
shu[3]=table6[fshi];
shu[2]=0x40;
shu[1]=table6[sge];
shu[0]=table6[sshi];
Display();
}
}
void int0_0() interrupt 1
{
TH0=(65536-1000)/256;
TL0=(65536-1000)%256;
aa++;//1ms加一次
if(aa>1000)
{
aa=0;
bb++;//1S加一次
}
}
void Display()
{
uint i;
for(i=0;i<8;i++)
{
P2=tablew[i];
P0=shu[i];
Delayms(1);
}
}
void Delayms(uint x)
{
uchar j;
while(x--)
{
for(j=0;j<125;j++);
}
}
|