资源描述:
《C语言实现数字时钟的程序》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、求89c52单片机C语言实现数字时钟程序悬赏分:0-解决时间:2009-8-3016:12希望朋友们帮忙,给一下STC89C52单片机C语言实现数字时钟的程序,初学单片机,请多关照提问者:爱在9黎明1971-一级最佳答案#include#include#defineRESTP3_4#defineSCLKP3_7#defineDATAP3_6unsignedcharcodedisplayCode[]={0xc0,0xf9,0xa4,0xb0,0x99,0x
2、92,0x82,0xf8,0x80,0x90};unsignedcharcodecontroladdress[]={0x80,0x82,0x84,0x86,0x88,0x8a,0x8c,0x8e,0x90,0xbe};unsignedcharhour,minute,second;unsignedcharday,month,week,year;unsignedcharclockhour,clockminute;unsignedintnum;unsignedcharselect,oneminute;b
3、itbdatamodeselect;voiddelay();voidwritetime();voiddisplay(unsignedchartemp,unsignedcharmode);voidsound(){while(num<2000){P3_0=0;}P3_0=1;}voidinitial(){P0=0;TMOD=0x22;IE=0xCF;IT0=1;IT1=1;T2CON=0;RCAP2L=0xf0;RCAP2H=0x1f;TH2=0x1c;TL2=0xf0;IP=0X06;TH0=0x4
4、8;TL0=0x48;TH1=0X48;TR0=1;PCON=0x01;hour=12;minute=0;second=0;num=0;select=0;clockhour=12;clockminute=0;modeselect=0;day=16;month=8;week=7;year=9;}voidinterrupt0()interrupt0using3{TR1=1;select++;if(select==8){select=0;}if(select==1)ET2=1;oneminute=sec
5、ond-1;}voidtimer0()interrupt1using3{num++;if(num==5000){num=0;second++;}if(second>=60){minute++;second=0;}if(minute>=60){hour++;minute=0;}if(hour>=24)hour=0;}voidinterrupt1()interrupt2using3{oneminute=second-1;switch(select){case4:{hour++;if(hour>=24)
6、hour=0;break;}case5:{minute++;if(minute>=60)minute=0;break;}case6:{second++;if(second>=60)second=0;break;}case2:{clockhour++;if(clockhour>=24)clockhour=0;break;}case3:{clockminute++;if(clockminute>=60)clockminute=0;break;}default:{modeselect=0;ET2=!ET
7、2;break;}}}voidtimer1()interrupt3using3{if(select){if(second==oneminute){select=0;TR1=0;}}}voidtimer2()interrupt5using3{sound();TF2=0;if(minute!=clockminute
8、
9、hour!=clockhour)TR2=0;}voiddelay(){unsignedchari=255;while(--i){;}}voiddisplay(unsignedcharte
10、mp,unsignedcharmode){if(temp==4
11、
12、temp==2)P0=0;elseP0=1;if(mode)P1=displayCode[hour/10];elseP1=displayCode[clockhour/10];delay();if(temp==4
13、
14、temp==2)P0=0;elseP0=2;if(mode)P1=displayCode[hour%10];elseP1=displayCode[clockhour%10];delay();if(temp=