#includereg52.h#includeintrins.h#defineucharunsignedchar#defineuintunsignedint#defineshumaP1#definewP3sbitwei=P2^2;sbitduan=P2^3;sbitbeep=P2^1;sbitk1=P0^0;sbitk2=P0^1;sbitk3=P0^2;sbitk4=P0^3;sbitk5=P0^4;sbitled=P2^0;ucharcodeduanma[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};ucharcodeweekma[7]={0x80,0xfe,0xfc,0xf8,0xf0,0xe0,0xc0};ucharshi,fen,miao,tt;ucharshi1,fen1,miao1;ucharshi2,fen2,miao2;ucharyue,ri,week;uintnian;ucharset1=1,set2=1;voidchushi();//初始化voiddisplay();//时钟显示voiddisplay0();voiddisplay1();//闹钟1显示voiddisplay2();//闹钟2显示voidnaozhong();//闹钟报时voidbaoshi();//整点报时voidset_shizhong();//时钟设置voidset_naozhong1();//闹钟1设置voidset_naozhong2();//闹钟2设置voidset_riqi();voidkey_change();//选择数码管显示的内容voidkey_set();//选择修改的数码ucharjia(uchar);ucharjian(uchar);voidxingqi();voiddelay1(uintz);voidmain(){chushi();while(1){xingqi();set_shizhong();set_naozhong1();set_naozhong2();set_riqi();key_change();key_set();if(set1==1)display();if(set1==2)display0();if(set1==3)display1();if(set1==4)display2();w=weekma[week%7];baoshi();naozhong();}}voidchushi(){TMOD=0x01;TH0=(65536-50000)/256;TL0=(65536-50000)%256;EA=1;ET0=1;TR0=1;shi=0;fen=0;miao=0;shi1=1;fen1=0;miao1=0;shi2=2;fen2=0;miao2=0;nian=2011;yue=4;ri=12;week=2;tt=0;beep=0;}voidtimer0()interrupt1{TH0=(65536-50000)/256;TL0=(65536-50000)%256;tt++;if(tt=20){tt=0;miao++;if(miao==60){miao=0;fen++;if(fen==60){fen=0;shi++;if(shi==24){shi=0;ri++;week++;if(ri==31){ri=1;yue++;if(yue==13){yue=1;nian++;}}}}}}}voiddisplay(){led=0;duan=1;shuma=duanma[shi/10];duan=0;shuma=0xff;wei=1;shuma=0xfe;wei=0;delay1(3);duan=1;shuma=duanma[shi%10];duan=0;shuma=0xff;wei=1;shuma=0xfd;wei=0;delay1(3);duan=1;shuma=0x40;duan=0;shuma=0xff;wei=1;shuma=0xfb;wei=0;delay1(3);duan=1;shuma=duanma[fen/10];duan=0;shuma=0xff;wei=1;shuma=0xf7;wei=0;delay1(3);duan=1;shuma=duanma[fen%10];duan=0;shuma=0xff;wei=1;shuma=0xef;wei=0;delay1(3);duan=1;shuma=0x40;duan=0;shuma=0xff;wei=1;shuma=0xdf;wei=0;delay1(3);duan=1;shuma=duanma[miao/10];duan=0;shuma=0xff;wei=1;shuma=0xbf;wei=0;delay1(3);duan=1;shuma=duanma[miao%10];duan=0;shuma=0xff;wei=1;shuma=0x7f;wei=0;delay1(3);}voiddisplay0(){ucharnian1,nian2,nian3,nian4;nian1=nian/1000;nian2=nian%1000/100;nian3=nian%1000%100/10;nian4=nian%1000%100%10;led=0;duan=1;shuma=duanma[nian1];duan=0;shuma=0xff;wei=1;shuma=0xfe;wei=0;delay1(3);duan=1;shuma=duanma[nian2];duan=0;shuma=0xff;wei=1;shuma=0xfd;wei=0;delay1(3);duan=1;shuma=duanma[nian3];duan=0;shuma=0xff;wei=1;shuma=0xfb;wei=0;delay1(3);duan=1;shuma=duanma[nian4];duan=0;shuma=0xff;wei=1;shuma=0xf7;wei=0;delay1(3);duan=1;shuma=duanma[yue/10];duan=0;shuma=0xff;wei=1;shuma=0xef;wei=0;delay1(3);duan=1;shuma=duanma[yue%10];duan=0;shuma=0xff;wei=1;shuma=0xdf;wei=0;delay1(3);duan=1;shuma=duanma[ri/10];duan=0;shuma=0xff;wei=1;shuma=0xbf;wei=0;delay1(3);duan=1;shuma=duanma[ri%10];duan=0;shuma=0xff;wei=1;shuma=0x7f;wei=0;delay1(3);}voiddisplay1(){led=1;duan=1;shuma=duanma[shi1/10];duan=0;shuma=0xff;wei=1;shuma=0xfe;wei=0;delay1(3);duan=1;shuma=duanma[shi1%10];duan=0;shuma=0xff;wei=1;shuma=0xfd;wei=0;delay1(3);duan=1;shuma=0x40;duan=0;shuma=0xff;wei=1;shuma=0xfb;wei=0;delay1(3);duan=1;shuma=duanma[fen1/10];duan=0;shuma=0xff;wei=1;shuma=0xf7;wei=0;delay1(3);duan=1;shuma=duanma[fen1%10];duan=0;shuma=0xff;wei=1;shuma=0xef;wei=0;delay1(3);duan=1;shuma=0x40;duan=0;shuma=0xff;wei=1;shuma=0xdf;wei=0;delay1(3);duan=1;shuma=duanma[miao1/10];duan=0;shuma=0xff;wei=1;shuma=0xbf;wei=0;delay1(3);duan=1;shuma=duanma[miao1%10];duan=0;shuma=0xff;wei=1;shuma=0x7f;wei=0;delay1(3);}voiddisplay2(){led=1;duan=1;shuma=duanma[shi2/10];duan=0;shuma=0xff;wei=1;shuma=0xfe;wei=0;delay1(3);duan=1;shuma=duanma[shi2%10];duan=0;shuma=0xff;wei=1;shuma=0xfd;wei=0;delay1(3);duan=1;shuma=0x40;duan=0;shuma=0xff;wei=1;shuma=0xfb;wei=0;delay1(3);duan=1;shuma=duanma[fen2/10];duan=0;shuma=0xff;wei=1;shuma=0xf7;wei=0;delay1(3);duan=1;shuma=duanma[fen2%10];duan=0;shuma=0xff;wei=1;shuma=0xef;wei=0;delay1(3);duan=1;shuma=0x40;duan=0;shuma=0xff;wei=1;shuma=0xdf;wei=0;delay1(3);duan=1;shuma=duanma[miao2/10];duan=0;shuma=0xff;wei=1;shuma=0xbf;wei=0;delay1(3);duan=1;shuma=duanma[miao2%10];duan=0;shuma=0xff;wei=1;shuma=0x7f;wei=0;delay1(3);}voiddelay1(uintz)//ms延时{uintx,y;for(x=z;x0;x--)for(y=110;y0;y--);}ucharjia(ucharn)//加1函数{if(k3==0){delay1(15);if(k3==0){n++;while(!k3);}}return(n);}ucharjian(ucharm)//减1函数{if(k4==0){delay1(15);if(k4==0){m--;while(!k4);if(m0){m=0;}}}return(m);}voidxingqi(){if(k5==0){delay1(15);if(k5==0){week++;while(!k5);}}}voidkey_change()//k1按键扫描{if(k1==0){delay1(15);if(k1==0){set1++;while(!k1);if(set1==5){set1=1;}}}}voidkey_set()//k2按键扫描{if(k2==0){delay1(15);if(k2==0){set2++;while(!k2);if(set2==5){set2=1;}}}}voidbaoshi()//整点报时函数{if(fen==00&&miao==00){beep=1;}if(miao==4){beep=0;}}voidnaozhong()//闹钟函数{uintx;if(shi==shi1&&fen==fen1&&miao==miao1){for(x=0;x800;x++){beep=!beep;delay1(10);}}if(shi==shi2&&fen==fen2&&miao==miao2){for(x=0;x800;x++){beep=!beep;delay1(10);}}}voidset_riqi(){if(set1==2){if(set2==2){nian=jia(nian);nian=jian(nian);}if(set2==3){yue=jia(y