|
- #include<reg51.h>
- #include<intrins.h>
- #include<absacc.h>
- #define kzz XBYTE[0X7FFF] //控制字
- #define yi XBYTE[0X1FFF]
- #define er XBYTE[0X3FFF]
- #define san XBYTE[0X5fff]
- #define kzz1 XBYTE[0XF7FF] //控制字2
- #define si XBYTE[0XF1FF]
- #define wu XBYTE[0XF3FF]
- #define liu XBYTE[0XF5FF]
- #define uchar unsigned char
- #define uint unsigned int
- uchar code dula[]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90};
- uint s,ss,m,mm,h,hh,aa,bb,cc,t,t2,flag,flag1,flag2,flag3,flag4,flag5,flag6,flag7;
- sbit k1=P1^0;
- sbit k2=P1^1;
- sbit k3=P1^2;
- void displayfen();
- void display();
- void delay(uint z);
- void tiaoshijia();
- void tiaoshijian();
- void jishi();
- void displayshi();
- void displayh();
- void tiaoshihjia();
- void tiaoshihjian();
- void main()
- {
- kzz=0x80;
- kzz1=0x80;
- while(1)
- {
- aa=0 ;
- flag=0;
- flag1=0;
- flag2=0;
- flag3=0;
- flag4=0;
- flag5=0;
- flag6=0;
- flag7=0;
- TMOD=0x01;//計(jì)時(shí)器1 計(jì)時(shí)
- EA=1; //總開
- TH0=(65536-50000)/256;
- TL0=(65536-50000)%256;//50毫秒
- ET0=1;//定時(shí)器0開
- TR0=1; //定時(shí)器啟動(dòng)
-
- flag7=1;
-
- while(flag7)
- {
- jishi();
- display();
-
- if(k1==0)
- { aa=0 ;
- s=0;
- ss=0;
- flag=1;
- delay(400);
-
-
- }
-
-
- while(flag)
- { //總
- if(aa==11&&t==0)
- {
- aa=0 ;
- flag1=~flag1;
- }
- if(flag1!=0)
- {
- display();
- }
- if(flag1==0)
- {
- displayfen();
- }
- tiaoshijia();
- tiaoshijian();
- if(k1==0)
- {
- aa=0 ;
- s=0;
- ss=0;
- flag4=1;
- delay(400);
- }
- while(flag4)
- { //一
- if(aa==9&&t2==0)
- {//1
- aa=0 ;
- flag5=~flag5;
- } //1
- if(flag5!=0)
- {//2
- display();
- }//2
- if(flag5==0)
- {//3
- displayh();
- } //3
- tiaoshihjia();
- tiaoshihjian();
- if(k1==0)
- {//4
- t=0;
- t2=0;
- flag=0;
-
- flag4=0;
- flag7=0;
-
- delay(400);
- }//4
-
- } //一
- }//總
-
- }
- }
- }
- void timer0()interrupt 1
- {
- TH0=(65536-50000)/256;
- TL0=(65536-50000)%256;//50毫秒
- aa++;
-
- }
-
- void delay(uint z)
- {
- uint a,b;
- for(a=50;a>0;a--)
- for(b=z;b>0;b--);
- }
- void display()
- {
-
-
- yi=dula[s];
- er=dula[ss];
- san=dula[m];
- si=dula[mm];
- wu=dula[h];
- liu=dula[hh];
- }
- void jishi()
- {
- if(aa==20)
- {
- aa=0;
- s++;
- if(s==10)
- {
- s=0;
- ss++;
- if(ss==6)
- {
- ss=0;
- m++;
- if(m==10)
- {
- m=0;
- mm++;
- if(mm==6)
- {mm=0;
- h++;}
- if(h==10)
- {h=0;
- hh++;}
- if(hh==2)
- {
- if(h==4)
- {
- h=0;
- hh=0;
- }
- }
- }
- }
- }
- }
- }
-
- void displayfen()
- {
- yi=dula[s];
- er=dula[ss];
- san=0xff;
- si=0xff;
- wu=dula[h];
- liu=dula[hh];
- }
- void tiaoshijia()
- {
- if(k2==0)
- { t=1;
- flag1=1;
- m++;
- if(m==10)
- {
- m=0;
- mm++;
- if(mm==6)
- mm=0;
- }
- }
- while(!k2);
- }
- void tiaoshijian()
- {
- if(k3==0)
- { t=1;
- flag1=1;
-
- if(m==0)
- {
- if(mm==0)
- {m=9;
- mm=5;}
- else
- {m=9;
- mm--;}
- }
- else
- m--;
-
- }
- while(!k3);
- }
- void displayh()
- {
- yi=dula[s];
- er=dula[ss];
- san=dula[m];
- si=dula[mm];
- wu=0xff;
- liu=0xff;
- }
- void tiaoshihjia()
- {
- if(k2==0)
- { t2=1;
- flag5=1;
-
- if(hh==2&&h==4)
- {hh=0;
- h=0;}
- else
- {
-
- h++;
- if(h==10)
- {
- h=0;
- hh++;
- }
- }
- }
- while(!k2);
- }
- void tiaoshihjian()
- {
- if(k3==0)
- { t2=1;
- flag5=1;
- if(h==0)
- {
- if(hh==0)
- {h=3;
- hh=2;}
- else
- {h=9;
- hh--;}
- }
- else
- h--;
- }
-
- while(!k3);
-
- }
復(fù)制代碼 |
-
-
|