用proteus做的鐘
它可以顯示年、月、日、小時、分鐘和秒。
可調時間
有圖表嗎
*/
# include & ltreg52.h & gt
# defineuchar?未簽名?茶
#定義?uint?未簽名?(同Internationalorganizations)國際組織
#定義?蒂姆。0xee
#定義?蒂姆爾。0x00
sbit?k1=p1^0;
sbit?k2=p1^1;
sbit?k3=p1^2;
sbit?k4=p1^3;
sbit?k5=p1^4;
sbit?k6=p1^5;
sbit?poit=p0^7;
uint?year=2011,year0 = 0
ucharmon=6,mon0=0,day=26,day0=0,hour=23,hour0=0,min=15,min0=0,sec=0,sec0=10,temp0 = 0
ucharR
烏恰爾?cod1[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x 90 };
烏恰爾?temp[]={0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x 00 };
作廢?延遲(uint?z)
{
uint?x,y;
for(x = 0;x & ltz;x++)
for(y = 0;y & lt100;y++);
}
作廢?exter_init()
{
IT0 = 1;
EX0 = 1;
}
作廢?time_init()
{
TMOD = 0x 01;
TH0 = timh
TL0 = timl
ET0 = 1;
EA = 1;
TR0 = 1;
}
作廢?re_time(uchar?答
{
烏恰爾?I,j;
for(j = 0;j & lta;j++)
{ for(I = 0;我& lt14;i++)
{
P0 = cod 1[temp[I]];
if(I = = 3 | | I = = 5 | | I = = 9 | | I = = 11)poit = 0;
P2 =我;
延時(1);
P2 = 0x0f;
}
}
}
作廢?syn()
{
如果(秒!=sec0)
{ sec0 = sec
temp[12]= sec 0/10;
temp[13]= sec 0% 10;}
如果(年!=year0)
{ year0 = year
temp[0]= year 0/1000;
temp[14]= year 0% 1000;
temp[1]= temp[14]/100;
臨時[14]=臨時[14]% 100;
temp[2]= temp[14]/10;
溫度[3]=溫度[14]% 10;}
如果(mon!=mon0)
{ mon0 = mon
temp[4]= mon 0/10;
temp[5]= mon 0% 10;}
如果(天!=第0天)
{ day0 =天;
temp[6]= day 0/10;
temp[7]= day 0% 10;}
如果(小時!=hour0)
{ hour0 =小時;
temp[8]= hour 0/10;
temp[9]= hour 0% 10;}
如果(min!=min0)
{ min0 = min
temp[10]= min 0/10;
temp[11]= min 0% 10;}
}
主()
{
exter _ init();
time _ init();
while(1)
{
re _ time(10);
}
}
作廢?txter()?打斷?0
{
烏恰爾?f;
f = 1;
EA = 0;
而(!K6);
延時(1);
做
{ re _ time(1);
如果(!K1)
{
min++;
if(min & gt;=60)?min = 0;
而(!k 1);
}
syn();
re _ time(1);
如果(!K2)
{
hour++;
如果(小時& gt=24)?小時= 0;
而(!k2);
}
syn();
re _ time(1);
如果(!K3)
{
day++;
R=(年份% 4 = = 0)amp;& amp(年份%100!=0);
R =(R & amp;& amp(日& gt= 29)& amp;& amp(mon==2))||(!R & amp& amp(日& gt= 30)& amp;& amp(mon==2))||((mon!= 2)& amp;& amp(日& gt=31));
if(R)?日= 1;
而(!k3);
}
syn();
re _ time(1);
如果(!K4)
{
mon++;
if(mon & gt;12)?mon = 1;
而(!K4);
}
syn();
re _ time(1);
如果(!K5)
{
year++;
如果(年份& gt9999)?年份=2000年;
而(!K5);
}
syn();
re _ time(1);
如果(!K6)
{
?F=!f;
?而(!K6);
}
re _ time(1);
syn();
re _ time(1);
} while(F);
sec = 0;
EA = 1;
}
/*****************************************************
* * * * * * * * *定時器0功能
*******************************************************/
作廢?定時器()?打斷?1
{
temp 0++;
if(temp 0 & gt;=200)
{
temp0 = 0
sec++;
if(秒& gt=60)
{
sec = 0;
min++;
if(min & gt;=60)
{
min = 0;
hour++;
如果(小時& gt=24)
{
小時= 0;
day++;
R=(年份% 4 = = 0)amp;& amp(年份%100!=0);
R =(R & amp;& amp(日& gt= 29)& amp;& amp(mon==2))||(!R & amp& amp(日& gt= 30)& amp;& amp(mon==2))||((mon!= 2)& amp;& amp(日& gt=31));
if(R)
{
日= 0;
mon++;
if(mon & gt;=13)
{
mon = 1;
year++;
}
}
}
}
}
}
syn();
TH0 = timh
TL0 = timl
}