|


- #include<reg51.h>
- #define uchar unsigned char
- #define uint unsigned int
- sbit s1=P1^0;
- sbit s2=P1^1;
- sbit s3=P1^2;
- sbit fengmingqi=P3^7;
- sbit smg1=P2^0;
- sbit smg2=P2^1;
- sbit smg3=P2^2;
- sbit smg4=P2^3;
- sbit smg5=P2^4;
- sbit smg6=P2^5;
- sbit smg7=P2^6;
- sbit smg8=P2^7;
- uchar qiehuan=0,qhxs,tiaojie;
- uchar ns=0,nf=0,nm=0;
- uchar shi=23,fen=59,miao=55,jishi=0;
- uchar nian1=20,nian2=15,yue=5,ri=9;
- uchar code smg[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
- void yanshi(uchar s)
- {
- uchar i,j;
- for(i=s;i>0;i--)
- for(j=120;j>0;j--);
- }
- void shijianxianshi()
- {
- smg1=1;
- P0=smg[shi/10];
- yanshi(5);
- smg1=0;
- smg2=1;
- P0=smg[shi%10];
- yanshi(5);
- smg2=0;
- smg3=1;
- P0=0xbf;
- yanshi(5);
- smg3=0;
- smg4=1;
- P0=smg[fen/10];
- yanshi(5);
- smg4=0;
- smg5=1;
- P0=smg[fen%10];
- yanshi(5);
- smg5=0;
- smg6=1;
- P0=0xbf;
- yanshi(5);
- smg6=0;
- smg7=1;
- P0=smg[miao/10];
- yanshi(5);
- smg7=0;
- smg8=1;
- P0=smg[miao%10];
- yanshi(5);
- smg8=0;
- }
- void riqixianshi()
- {
- smg1=1;
- P0=smg[nian1/10];
- yanshi(5);
- smg1=0;
- smg2=1;
- P0=smg[nian1%10];
- yanshi(5);
- smg2=0;
- smg3=1;
- P0=smg[nian2/10];
- yanshi(5);
- smg3=0;
- smg4=1;
- P0=smg[nian2%10];
- yanshi(5);
- smg4=0;
- smg5=1;
- P0=smg[yue/10];
- yanshi(5);
- smg5=0;
- smg6=1;
- P0=smg[yue%10];
- yanshi(5);
- smg6=0;
- smg7=1;
- P0=smg[ri/10];
- yanshi(5);
- smg7=0;
- smg8=1;
- P0=smg[ri%10];
- yanshi(5);
- smg8=0;
- }
- void naozhong()
- {
- smg1=1;
- P0=smg[ns/10];
- yanshi(5);
- smg1=0;
- smg2=1;
- P0=smg[ns%10];
- yanshi(5);
- smg2=0;
- smg3=1;
- P0=0xbf;
- yanshi(5);
- smg3=0;
- smg4=1;
- P0=smg[nf/10];
- yanshi(5);
- smg4=0;
- smg5=1;
- P0=smg[nf%10];
- yanshi(5);
- smg5=0;
- smg6=1;
- P0=0xbf;
- yanshi(5);
- smg6=0;
- smg7=1;
- P0=smg[nm/10];
- yanshi(5);
- smg7=0;
- smg8=1;
- P0=smg[nm%10];
- yanshi(5);
- smg8=0;
- }
- void anjian()
- {
- if(s1==0)
- yanshi(10);
- if(s1==0)
- {
- yanshi(10);
- tiaojie++;
- TR0=0;
- ET0=0;
- if(tiaojie==10)
- {
- tiaojie=0;
- qiehuan=0;
- TR0=1;
- ET0=1;
- }
- while(!s1);
- }
- if(tiaojie==1)
- {
- qiehuan=0;
- if(s2==0)
- {
- miao++;
- if(miao==60)
- {
- miao=0;
- fen++;
- if(fen==60)
- {
- fen=0;
- shi++;
- if(shi==24)
- shi=0;
- }
- }
- while(!s2);
- }
- if(s3==0)
- {
- yanshi(10);
- if(s3==0)
- {
- miao--;
- if(miao==-1)
- {
- miao=59;
- fen--;
- if(fen==-1)
- {
- fen=59;
- shi--;
- if(shi==-1)
- {
- shi=23;
- }
- }
- }
- while(!s3);
- }
- }
- }
- if(tiaojie==2)
- {
- qiehuan=0;
- if(s2==0)
- {
- yanshi(10);
- if(s2==0)
- fen++;
-
- if(fen==60)
- {
- fen=0;
- shi++;
- if(shi==24)
- shi=0;
- }
- while(!s2);
- }
- if(s3==0)
- yanshi(10);
- if(s3==0)
- {
- fen--;
- if(fen==-1)
- {
- fen=59;
- shi--;
- if(shi==-1)
- shi=23;
- }
- while(!s3);
- }
- }
- if(tiaojie==3)
- {
- qiehuan=0;
- if(s2==0)
- {
- yanshi(10);
- if(s2==0)
- {
- shi++;
- if(shi==24)
- shi=0;
- }
- while(!s2);
- }
- if(s3==0)
- {
- yanshi(10);
- if(s3==0)
- {
- shi--;
- if(shi==-1)
- {
- shi=23;
- }
- }
- while(!s3);
- }
- }
- if(tiaojie==4)
- {
- qiehuan=1;
- if(s2==0)
- {
- yanshi(10);
- if(s2==0)
- {
- while(!s2);
- ri++;
- if(yue==2&&((nian2==0&&nian1%4==0)||(nian2!=0&&nian1%4==0))&&ri==30)
- ri=1;
- else if(yue==2&&ri==29)
- ri=1;
- else if((yue==4||yue==6||yue==9||yue==11)&&ri==31)
- ri=1;
- else if(ri==32)
- ri=1;
- }
- }
- if(s3==0)
- {
- yanshi(10);
- if(s3==0)
- {
- ri--;
- if(ri==0)
- ri=31;
- }
- while(!s3);
- }
- }
- if(tiaojie==5)
- {
- qiehuan=1;
- if(s2==0)
- {
- yanshi(10);
- if(s2==0)
- {
- yue++;
- if(yue==13)
- {
- yue=1;
- nian2++;
- if(nian2==100)
- {
- nian2=0;
- nian1++;
- if(nian1==100)
- nian1=0;
- }
- }
- while(!s2);
- }
- }
- if(s3==0)
- {
- yanshi(10);
- if(s3==0)
- {
- yue--;
- if(yue==0)
- yue=12;
- }
- while(!s3);
- }
- }
- if(tiaojie==6)
- {
- qiehuan=1;
- if(s2==0)
- {
- yanshi(10);
- if(s2==0)
- {
- nian2++;
- if(nian2==100)
- {
- nian2=0;
- nian1++;
- if(nian1==100)
- nian1=0;
- }
- }
- while(!s2);
- }
- if(s3==0)
- {
- yanshi(10);
- if(s3==0)
- {
- nian2--;
- if(nian2==-1)
- nian2=99;
- }
- while(!s3);
- }
- }
- if(tiaojie==7)
- {
- qiehuan=1;
- if(s2==0)
- {
- yanshi(10);
- if(s2==0)
- {
- nian1++;
- if(nian1==100)
- nian1=0;
- }
- while(!s2);
- }
- if(s3==0)
- {
- yanshi(10);
- if(s3==0)
- {
- nian1--;
- if(nian1==-1)
- nian1=99;
- }
- while(!s3);
- }
- }
- if(tiaojie==8)
- {
- qiehuan=3;
- if(s2==0)
- {
- yanshi(10);
- if(s2==0)
- {
- nf++;
- if(nf==60)
- nf=0;
- }
- while(!s2);
- }
- if(s3==0)
- {
- yanshi(10);
- if(s3==0)
- {
- nf--;
- if(nf==-1)
- nf=59;
- }
- while(!s3);
- }
- }
- if(tiaojie==9)
- {
- qiehuan=3;
- if(s2==0)
- {
- yanshi(10);
- if(s2==0)
- {
- ns++;
- if(ns==24)
- ns=0;
- }
- while(!s2);
- }
- if(s3==0)
- {
- yanshi(10);
- if(s3==0)
- {
- ns--;
- if(ns==-1)
- ns=23;
- }
- while(!s3);
- }
- }
- }
- void dingshiqi()
- {
- TMOD = 0x01;
- TH0 = 0x4C;
- TL0 = 0x00;
- ET0 = 1;
- TR0 = 1;
- EA = 1;
- }
- void main()
- {
- dingshiqi();
- tiaojie=0;
- qiehuan=0;
- fengmingqi=1;
- while(1)
- {
- anjian();
- if(qiehuan==3)
- naozhong();
- if(qiehuan==2)
- qiehuan=0;
- if(qiehuan==1)
- riqixianshi();
- if(qiehuan==0)
- shijianxianshi();
- if(fen==nf&&shi==ns)
- {
- fengmingqi=0;
- yanshi(shijianxianshi);
- fengmingqi=1;
- }
-
- if((P1&0xff)!=0xff)
- {
- fengmingqi=0;
- yanshi(50);
- fengmingqi=1;
- }
- }
- }
- void jishu()interrupt 1
- {
- TR0 = 0;
- TH0 = (65536 - 50000 ) / 256;
- TL0 = (65536 - 50000 ) % 256;
- TR0 = 1;
- jishi++;
- if(jishi==21)
- {
- jishi=0;
- miao++;
- if(miao==60)
- {
- qiehuan++;
- miao=0;
- fen++ ;
- if(fen==60)
- {
- fen=0;
- shi++;
- if(shi==24)
- {
- shi=0;
- ri++;
- if(yue==2&&((nian2==0&&nian1%4==0)||(nian2!=0&&nian1%4==0))&&yue==30)
- ri=1;
- else if(yue==2&&ri==29)
- ri=1;
- else if((yue==4||yue==6||yue==9||yue==11)&&ri==31)
- ri=1;
- else if(ri==32)ri=1;
- if(ri==1)
- {
- yue++;
- if(yue==13)
- {
- yue=1;
- nian2++;
- if(nian2==100)
- {
- nian2=0;
- nian1++;
- if(nian1==100)
- nian1=0;
- }
- }
- }
- }
- }
- }
- }
- }
復制代碼
|
|