- #include<reg52.h>
- #include<intrins.h>
- #define uint unsigned int
- #define uchar unsigned char
- uchar aa,bb,c,d,shi1,shi2,fen1,fen2,miao1,miao2;
- sbit set_1=P1^0;
- sbit esc=P1^1;
- sbit up=P1^2;
- sbit dwon=P1^3;
- sbit left=P1^4;
- sbit right=P1^5;
- sbit enter=P1^6;
- uchar code table[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xff};
- bit cc;
- uchar flag=1;
- void init();
- void display(uchar shi1,uchar shi2,uchar fen1,uchar fen2,uchar miao1,uchar miao2);
- void display1(uchar shi1,uchar shi2,uchar fen1,uchar fen2,uchar miao1,uchar miao2);
- void delay_ms(uint z);
- void key_scan();
- void time();
- void key();
- void main()
- {
- init();
- while(1)
- { key();
- if(c>0)
- {key_scan();}
- display1(shi1,shi2,fen1,fen2,miao1,miao2);
- }
- }
- void delay_ms(uint z)
- { uint x,y;
- for(x=z;x>0;x--)
- for(y=110;y>0;y--);
- }
- void init()
- {
- aa=0;
- bb=0;
- c=0;
- d=0;
- shi1=0;
- shi2=0;
- fen1=0;
- fen2=0;
- miao1=0;
- miao2=0;
- TMOD=0x01;
- TH0=(65536-50000)/256;
- TL0=(65536-50000)%256;
- EA=1;
- ET0=1;
- EX0=1;
- ET0=1;
- IT0=1;
- TR0=1;
- cc=0;
- flag=1;
- d=0;
- display1(shi1,shi2,fen1,fen2,miao1,miao2);
- }
- void key()
- {
- //set
- if(set_1==0) {delay_ms(2);}
- if(set_1==0) {
- c++;flag=0;d=1;
- shi1=0;shi2=0;fen1=0;fen2=0;miao1=0;miao2=0;
- display1(shi1,shi2,fen1,fen2,miao1,miao2);
-
- }
- while(!set_1){display1(shi1,shi2,fen1,fen2,miao1,miao2);}
- //ESC
- if(esc==0) {delay_ms(2);}
- if(esc==0) {
- c=0;flag=2;
- display1(shi1,shi2,fen1,fen2,miao1,miao2);
- }
- while(!esc){display1(shi1,shi2,fen1,fen2,miao1,miao2);}
- //enter
- if(enter==0) {delay_ms(2);}
- if(enter==0) {
- flag=1;
- display(shi1,shi2,fen1,fen2,miao1,miao2);
- }
- while(!enter){display(shi1,shi2,fen1,fen2,miao1,miao2);}
-
- }
- //按鍵掃描函數
- void key_scan()
- {
-
- if(left==0) {delay_ms(2);} //左移
- if(left==0) {if(d<6)d=d+1;
- else {d=1;}
- }
- while(!left){display1(shi1,shi2,fen1,fen2,miao1,miao2);}
-
- if(right==0) {delay_ms(2);} //右移
- if(right==0) {if(d>1)d=d-1;
- else {d=6;}
- }
- while(!right){display1(shi1,shi2,fen1,fen2,miao1,miao2);}
-
- //add
- if(d==6){if(up==0){delay_ms(2);}
- if(up==0){if(shi1<2){shi1=shi1+1;display1(shi1,shi2,fen1,fen2,miao1,miao2);}
- else{shi1=0;display1(shi1,shi2,fen1,fen2,miao1,miao2);} }
- while(!up){display1(shi1,shi2,fen1,fen2,miao1,miao2);} }
-
- if(d==5){if(up==0){delay_ms(2);}
- if(up==0){if(shi1<2){if(shi2<9){shi2=shi2+1;display1(shi1,shi2,fen1,fen2,miao1,miao2);}
- else{shi2=0;display1(shi1,shi2,fen1,fen2,miao1,miao2);}}
- if(shi1==2){if(shi2<4){shi2=shi2+1;display1(shi1,shi2,fen1,fen2,miao1,miao2);}
- else{shi2=0;display1(shi1,shi2,fen1,fen2,miao1,miao2);}} }
- while(!up){display1(shi1,shi2,fen1,fen2,miao1,miao2);} }
-
- if(d==4){if(up==0){delay_ms(2);}
- if(up==0){if(fen1<5){fen1=fen1+1;display1(shi1,shi2,fen1,fen2,miao1,miao2);}
- else {fen1=0;display1(shi1,shi2,fen1,fen2,miao1,miao2);} }
- while(!up){display1(shi1,shi2,fen1,fen2,miao1,miao2);} }
-
- if(d==3){if(up==0){delay_ms(2);}
- if(up==0){
- if(fen2<9){fen2=fen2+1;display1(shi1,shi2,fen1,fen2,miao1,miao2);}
- else {fen2=0;display1(shi1,shi2,fen1,fen2,miao1,miao2);} }
- while(!up){display1(shi1,shi2,fen1,fen2,miao1,miao2);} }
-
- if(d==2){ if(up==0){delay_ms(2);}
- if(up==0){if(miao1<5){miao1=miao1+1;display1(shi1,shi2,fen1,fen2,miao1,miao2);}
- else {miao1=0;display1(shi1,shi2,fen1,fen2,miao1,miao2);} }
- while(!up){display1(shi1,shi2,fen1,fen2,miao1,miao2);} }
-
- if(d==1){ if(up==0){delay_ms(2);}
- if(up==0){
- {if(miao2<9){miao2=miao2+1;display1(shi1,shi2,fen1,fen2,miao1,miao2);}
- else {miao2=0;display1(shi1,shi2,fen1,fen2,miao1,miao2);} }
- } while(!up){display1(shi1,shi2,fen1,fen2,miao1,miao2);} }
-
- //dec
- if(d==6){if(dwon==0){delay_ms(2);}
- if(dwon==0){if(shi1>0){shi1=shi1-1;display1(shi1,shi2,fen1,fen2,miao1,miao2);}
- else{shi1=2;display1(shi1,shi2,fen1,fen2,miao1,miao2);} }
- while(!dwon){display1(shi1,shi2,fen1,fen2,miao1,miao2);} }
-
- if(d==5){if(dwon==0){delay_ms(2);}
- if(dwon==0){if(shi1<2){if(shi2>0){shi2=shi2-1;display1(shi1,shi2,fen1,fen2,miao1,miao2);}
- else{shi2=9;display1(shi1,shi2,fen1,fen2,miao1,miao2);}}
- if(shi1==2){if(shi2>0){shi2=shi2-1;display1(shi1,shi2,fen1,fen2,miao1,miao2);}
- else{shi2=3;display1(shi1,shi2,fen1,fen2,miao1,miao2);}} }
- while(!dwon){display1(shi1,shi2,fen1,fen2,miao1,miao2);} }
-
- if(d==4){if(dwon==0){delay_ms(2);}
- if(dwon==0){if(fen1>0){fen1=fen1-1;display1(shi1,shi2,fen1,fen2,miao1,miao2);}
- else {fen1=5;display1(shi1,shi2,fen1,fen2,miao1,miao2);} }
- while(!dwon){display1(shi1,shi2,fen1,fen2,miao1,miao2);} }
-
- if(d==3){if(dwon==0){delay_ms(2);}
- if(dwon==0){
- if(fen2>0){fen2=fen2-1;display1(shi1,shi2,fen1,fen2,miao1,miao2);}
- else {fen2=9;display1(shi1,shi2,fen1,fen2,miao1,miao2);} }
- while(!dwon){display1(shi1,shi2,fen1,fen2,miao1,miao2);} }
-
- if(d==2){ if(dwon==0){delay_ms(2);}
- if(dwon==0){if(miao1>0){miao1=miao1-1;display1(shi1,shi2,fen1,fen2,miao1,miao2);}
- else {miao1=5;display1(shi1,shi2,fen1,fen2,miao1,miao2);} }
- while(!dwon){display1(shi1,shi2,fen1,fen2,miao1,miao2);} }
-
- if(d==1){ if(dwon==0){delay_ms(2);}
- if(dwon==0){
- {if(miao2>0){miao2=miao2-1;display(shi1,shi2,fen1,fen2,miao1,miao2);}
- else {miao2=9;display1(shi1,shi2,fen1,fen2,miao1,miao2);} }
- } while(!dwon){display1(shi1,shi2,fen1,fen2,miao1,miao2);} }
-
-
- }
- void display(uchar shi1,uchar shi2,uchar fen1,uchar fen2,uchar miao1,uchar miao2)
- {
- P2=0x01;
- P0=table[shi1];
- delay_ms(1);
- P2=0x02;
- P0=table[shi2];
- delay_ms(1);
- P2=0x04;
- P0=table[fen1];
- delay_ms(1);
- P2=0x08;
- P0=table[fen2];
- delay_ms(1);
- P2=0x10;
- P0=table[miao1];
- delay_ms(1);
- P2=0x20;
- P0=table[miao2];
- delay_ms(1);
- }
- void display1(uchar shi1,uchar shi2,uchar fen1,uchar fen2,uchar miao1,uchar miao2)
- {
- switch(d)
- { case 0:{display(shi1,shi2,fen1,fen2,miao1,miao2);}break;
- case 6:if(cc==1)
- {P2=0x00;
- P0=table[shi1];
- delay_ms(1);
- P2=0x02;
- P0=table[shi2];
- delay_ms(1);
- P2=0x04;
- P0=table[fen1];
- delay_ms(1);
- P2=0x08;
- P0=table[fen2];
- delay_ms(1);
- P2=0x10;
- P0=table[miao1];
- delay_ms(1);
- P2=0x20;
- P0=table[miao2];
- delay_ms(1);}
- else {display(shi1,shi2,fen1,fen2,miao1,miao2);}
- break;
- case 5:if(cc==1)
- {P2=0x01;
- P0=table[shi1];
- delay_ms(1);
- P2=0x00;
- P0=table[shi2];
- delay_ms(1);
- P2=0x04;
- P0=table[fen1];
- delay_ms(1);
- P2=0x08;
- P0=table[fen2];
- delay_ms(1);
- P2=0x10;
- P0=table[miao1];
- delay_ms(1);
- P2=0x20;
- P0=table[miao2];
- delay_ms(1);}
- else {display(shi1,shi2,fen1,fen2,miao1,miao2);}
- break;
- case 4:if(cc==1)
- {P2=0x01;
- P0=table[shi1];
- delay_ms(1);
- P2=0x02;
- P0=table[shi2];
- delay_ms(1);
- P2=0x00;
- P0=table[fen1];
- delay_ms(1);
- P2=0x08;
- P0=table[fen2];
- delay_ms(1);
- P2=0x10;
- P0=table[miao1];
- delay_ms(1);
- P2=0x20;
- P0=table[miao2];
- delay_ms(1);}
- else {display(shi1,shi2,fen1,fen2,miao1,miao2);}
- break;
- case 3:if(cc==1)
- {P2=0x01;
- P0=table[shi1];
- delay_ms(1);
- P2=0x02;
- P0=table[shi2];
- delay_ms(1);
- P2=0x04;
- P0=table[fen1];
- delay_ms(1);
- P2=0x00;
- P0=table[fen2];
- delay_ms(1);
- P2=0x10;
- P0=table[miao1];
- delay_ms(1);
- P2=0x20;
- P0=table[miao2];
- delay_ms(1);}
- else {display(shi1,shi2,fen1,fen2,miao1,miao2);}
- break;
- case 2:if(cc==1)
- {P2=0x01;
- P0=table[shi1];
- delay_ms(1);
- P2=0x02;
- P0=table[shi2];
- delay_ms(1);
- P2=0x04;
- P0=table[fen1];
- delay_ms(1);
- P2=0x08;
- P0=table[fen2];
- delay_ms(1);
- P2=0x00;
- P0=table[miao1];
- delay_ms(1);
- P2=0x20;
- P0=table[miao2];
- delay_ms(1);}
- else {display(shi1,shi2,fen1,fen2,miao1,miao2);}
- break;
- case 1:if(cc==1)
- {P2=0x01;
- P0=table[shi1];
- delay_ms(1);
- P2=0x02;
- P0=table[shi2];
- delay_ms(1);
- P2=0x04;
- P0=table[fen1];
- delay_ms(1);
- P2=0x08;
- P0=table[fen2];
- delay_ms(1);
- P2=0x10;
- P0=table[miao1];
- delay_ms(1);
- P2=0x00;
- P0=table[miao2];
- delay_ms(1);}
- else {display(shi1,shi2,fen1,fen2,miao1,miao2);}
- break;
- default:break;
- }
-
- }
- void T0_time() interrupt 1
- {
- TH0=(65536-50000)/256;
- TL0=(65536-50000)%256;
- if(flag==1)
- {
- aa++;
-
- if(aa==20)
- {
- aa=0;
- miao2++;
- if(miao2>9)
- {
- miao2=0;
- miao1++;
- if(miao1>5)
- {
- miao1=0;
- fen2++;
- if(fen2>9)
- {
- fen2=0;
- fen1++;
- if(fen1>5)
- {
- fen1=0;
- shi2++;
- if(shi1==2)
- {
- if(shi2==4){shi2=0;shi1=0;}
- }else
- {
- if(shi2>9){shi2=0;shi1++;}}
- }
- }
- }
- }
- }
- }else if(flag==0) {aa++;if(aa==10){aa=0;cc=~cc;}}
- else {cc=0;}
- }
復制代碼 |