#pragma small #include #include #include sfr psw=0xd0; sfr ip=0xb8; sfr p3=0xb0; sfr ie=0xa8; sfr p1=0x90; sfr tmod=0x89; sfr tcon=0x88; sbit it1=tcon^2; sbit p30=p3^0; sbit p31=p3^1; sbit p32=p3^2; sbit p33=p3^3; sbit p34=p3^4; sbit p35=p3^5; sbit p36=p3^6; sbit p37=p3^7; sbit p10=p1^0; sbit p11=p1^1; sbit p12=p1^2; sbit p13=p1^3; sbit p14=p1^4; sbit p15=p1^5; sbit p16=p1^6; sbit p17=p1^7; #define uchar unsigned char #define uint unsigned int uchar i,key,flag,dp,dp1; uchar bf1[4],bf2[4],bf[4]; uchar tab[10] = { 0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f }; uint s; void disp1(); void delay(uint var); void beep(); void lbeep(); void adp(uchar af); void qd34(); void qd33(); void delay(uint var) { while(var!=0)var--; } void disp1() { i=0; while(i<=3) { bf1[i]=~(tab[bf[i]]); i=i+1; } p1=bf1[3]&0x7f; p30=1; delay(150); p30=0; delay(50); p1=bf1[2]&0x7f; p31=1; delay(150); p31=0; delay(50); p1=bf1[1]&0x7f; p32=1; delay(150); p32=0; delay(50); p1=bf1[0]&0x7f; p37=1; delay(150); p37=0; delay(50); } void qd34() {uchar a1,b1; a1=0;b1=0; for(i=0;i<20;i++) { if(p34==0) { if(p34==0)a1++; else b1++; } else { if(p34==1)b1++; else a1++; } } if(a1>5)dp=1;else dp=2; a1=0;b1=0; } void qd33() {uchar a1,b1; a1=0;b1=0; for(i=0;i<20;i++) { if(p33==0) { if(p33==0)a1++; else b1++; } else { if(p33==1)b1++; else a1++; } } if(a1>5)dp1=1;else dp1=2; a1=0;b1=0; } void beep() { p17=1; delay(5); p17=0; } void lbeep() {p17=1; delay(10); p17=0; } void afp(uchar af) { uint e; if(af==1) { s++; if(s>9999) { s=0; lbeep(); } bf[0]=s%10; e=s/10; delay(2); bf[1]=e%10; e=e/10; delay(2); bf[2]=e%10; bf[3]=e/10; } else { if(s==0) { beep(); s=9999; } else s--; bf[0]=s%10; e=s/10; delay(2); bf[1]=e%10; e=e/10; delay(2); bf[2]=e%10; bf[3]=e/10; } } void clear() { for(i=0;i<=3;i++) { bf[i]=0; } } main () { uchar j,y; s=0;key=0;y=0; dp=0;dp1=0;j=0; clear(); disp1(); while(1) { disp1(); if(p35==1)y=1; else y=2; switch(y) {case 1: while(1) { disp1(); if(p34==0) { qd34(); if(dp==1) { while(dp!=2) { disp1(); qd34(); /*disp1; disp1; disp1;*/ } afp(1); } } else if (p33==0) { qd33(); if(dp1==1) { while(dp1!=2) { disp1(); qd33(); /*disp1; disp1; disp1;*/ } afp(0); } } } break; case 2: while(1) { disp1(); if(p34==0) { qd34(); if(dp==1) { while((dp!=2)&&(j!=20)) { disp1(); qd34(); j++; } afp(1); j=0; } } else if (p33==0) { qd33(); if(dp1==1) { while((dp1!=2)&&(j!=20)) { disp1(); qd33(); j++; } afp(0); j=0; } } } break; } } }