您好,欢迎访问三七文档
#includereg52.h#includeintrins.hsbitP32=P3^2;sbitP23=P2^3;sbitP22=P2^2;sbitP21=P2^1;sbitP20=P2^0;unsignedcharx;unsignedcharDisBuf[8]={0,0,0,0,0,0,0,0};unsignedcharDisBuf1[8]={0,0,0,0,0,0,0,0};codeunsignedcharTab[10]={0x81,0xed,0x43,0x49,0x2d,0x19,0x11,0xcd,0x01,0x09};unsignedchartimer0_count1=0,t1=0;//unsignedchartimer0_count3=0,t3=0;unsignedchartimer0_count2=0;unsignedcharSecond=0,Minute=0;unsignedintYear=17;unsignedintMonth=01;unsignedintDay=02;unsignedintHour=14;unsignedchara1=0;unsignedintmond=1;//显示模式unsignedinta=9;//倒计时初试时间unsignedintb=60;voidmDelay(unsignedintdelay){unsignedchari;for(;delay0;delay--){for(i=0;i124;i++){_nop_();_nop_();_nop_();}}}voidtimer0(void)interrupt1{TH0=0xfc;TL0=0x66;timer0_count2++;if(timer0_count21000){P32=!P32;timer0_count2=0;if(mond==4){b--;if(b1){b=60;a--;}if(a==0&b==0){mond=5;}}Second++;if(Second59){Second=0;Minute++;if(Minute59){Minute=0;Hour++;if(Hour24){Hour=0;Day++;if(Day30){Day=0;Month++;if(Month12){Month=0;Year++;}}}}}DisBuf[0]=Minute/10;DisBuf[1]=Minute%10;DisBuf[2]=Second/10;DisBuf[3]=Second%10;DisBuf[4]=Day/10;DisBuf[5]=Day%10;DisBuf[6]=Hour/10;DisBuf[7]=Hour%10;DisBuf1[0]=Year/10;DisBuf1[1]=Year%10;DisBuf1[2]=Month/10;DisBuf1[3]=Month%10;DisBuf1[4]=a/10;DisBuf1[5]=a%10;DisBuf1[6]=b/10;DisBuf1[7]=b%10;}if(mond==1)//分秒显示{timer0_count1++;if(timer0_count15){timer0_count1=0;t1++;if(t13)t1=0;switch(t1){case0:P0=Tab[DisBuf[0]];P2=P2|0x80;P2=P2&0x8f;break;case1:P0=Tab[DisBuf[1]];P2=P2|0x40;P2=P2&0x4f;break;case2:P0=Tab[DisBuf[2]];P2=P2|0x20;P2=P2&0x2f;break;case3:P0=Tab[DisBuf[3]];P2=P2|0x10;P2=P2&0x1f;break;default:break;}}}else{if(mond==2)//天时显示{timer0_count1++;if(timer0_count15){timer0_count1=0;t1++;if(t13)t1=0;switch(t1){case0:P0=Tab[DisBuf[4]];P2=P2|0x80;P2=P2&0x8f;break;case1:P0=Tab[DisBuf[5]];P2=P2|0x40;P2=P2&0x4f;break;case2:P0=Tab[DisBuf[6]];P2=P2|0x20;P2=P2&0x2f;break;case3:P0=Tab[DisBuf[7]];P2=P2|0x10;P2=P2&0x1f;break;default:break;}}}else{if(mond==3)//年月显示{timer0_count1++;if(timer0_count15){timer0_count1=0;t1++;if(t13)t1=0;switch(t1){case0:P0=Tab[DisBuf1[0]];P2=P2|0x80;P2=P2&0x8f;break;case1:P0=Tab[DisBuf1[1]];P2=P2|0x40;P2=P2&0x4f;break;case2:P0=Tab[DisBuf1[2]];P2=P2|0x20;P2=P2&0x2f;break;case3:P0=Tab[DisBuf1[3]];P2=P2|0x10;P2=P2&0x1f;break;default:break;}}}else{if(mond==4)//倒计时{timer0_count1++;if(timer0_count15){timer0_count1=0;t1++;if(t13)t1=0;switch(t1){case0:P0=Tab[DisBuf1[4]];P2=P2|0x80;P2=P2&0x8f;break;case1:P0=Tab[DisBuf1[5]];P2=P2|0x40;P2=P2&0x4f;break;case2:P0=Tab[DisBuf1[6]];P2=P2|0x20;P2=P2&0x2f;break;case3:P0=Tab[DisBuf1[7]];P2=P2|0x10;P2=P2&0x1f;break;default:break;}}}}}}}voidmain(){unsignedcharKeynumber=0,Keytemp=0;TMOD=0x01;TH0=0xfc;TL0=0x66;TR0=1;IE=0x82;while(1){P1&=0x0f;if((P2&0x0f)!=0x0f)//有键按下{mDelay(5);if(!P23){P1&=0x7f;P1|=0x70;if(!P23)Keynumber=1;else{P1&=0xbf;P1|=0xb0;if(!P23)Keynumber=2;else{P1&=0xdf;P1|=0xd0;if(!P23)Keynumber=3;else{P1&=0xef;P1|=0xe0;if(!P23)Keynumber=4;elseKeynumber=20;}}}}elseif(!P22){P1&=0x7f;P1|=0x70;if(!P22)Keynumber=5;else{P1&=0xbf;P1|=0xb0;if(!P22)Keynumber=6;else{P1&=0xdf;P1|=0xd0;if(!P22)Keynumber=7;else{P1&=0xef;P1|=0xe0;if(!P22)Keynumber=8;elseKeynumber=20;}}}}elseif(!P21){P1&=0x7f;P1|=0x70;if(!P21)Keynumber=9;else{P1&=0xbf;P1|=0xb0;if(!P21)Keynumber=10;else{P1&=0xdf;P1|=0xd0;if(!P21)Keynumber=11;else{P1&=0xef;P1|=0xe0;if(!P21)Keynumber=12;elseKeynumber=20;}}}}elseif(!P20){P1&=0x7f;P1|=0x70;if(!P20)Keynumber=13;else{P1&=0xbf;P1|=0xb0;if(!P20)Keynumber=14;else{P1&=0xdf;P1|=0xd0;if(!P20)Keynumber=15;else{P1&=0xef;P1|=0xe0;if(!P20)Keynumber=16;elseKeynumber=0;}}}}elseKeynumber=0;}else{Keynumber=Keytemp;}//无键按下if(Keynumber!=Keytemp){Keytemp=Keynumber;switch(Keynumber){}}}}
本文标题:51单片机时钟程序
链接地址:https://www.777doc.com/doc-4246070 .html