- #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++);
- }
- }
复制代码 |