|
源程序如下
void timer0() interrupt 1//定時(shí)器0中斷服務(wù)程序
{
TH0=(65536-50000)/256;//再次裝定時(shí)器初值
TL0=(65536-50000)%256;
count++; //中斷次數(shù)累加
if(count==20) //20次50毫秒為1秒
{
count=0;
ssecond++;
if(ssecond==60)//秒加到60則進(jìn)位分鐘
{
ssecond=0;//同時(shí)秒數(shù)清零
mminute++;
if(mminute==60)//分鐘加到60則進(jìn)位小時(shí)
{
mminute=0;//同時(shí)分鐘數(shù)清零
hhour++;
if(hhour==24)//小時(shí)加到24則小時(shí)清零
{
hhour=0;
week++;
if(week==8)
{
week=1;
}
write_week(week);//星期若變化則重新寫入
day++;
if(year%4==0&&month==2)//判斷是否為閏年的2月
{
if(day==30)
{
writeym();
}
write_ymd(9,day);//日若變化則重新寫入
}
if(year%4!=0&&month==2)//判斷是否為平年的2月
{
if(day==29)
{
writeym();
}
write_ymd(9,day);//日若變化則重新寫入
}
if(month!=2&&month!=4&&month!=6&&month!=9&&month!=11)
{
if(day==32)
{
writeym();
}
write_ymd(9,day);//日若變化則重新寫入
}
if(month==4||month==6||month==9||month==11)
{
if(day==31)
{
writeym();
}
write_ymd(9,day);//日若變化則重新寫入
}
}
if(bj==0)
write_sfm(4,hhour);//24小時(shí)制小時(shí)若變化則重新寫入
}
if(bj==0)
write_sfm(7,mminute);//分鐘若變化則重新寫入
}
if(bj==0)
write_sfm(10,ssecond);//秒若變化則重新寫入
}
}
|
|