源程序如下
void timer0() interrupt 1//定時器0中斷服務程序
{
TH0=(65536-50000)/256;//再次裝定時器初值
TL0=(65536-50000)%256;
count++; //中斷次數累加
if(count==20) //20次50毫秒為1秒
{
count=0;
ssecond++;
if(ssecond==60)//秒加到60則進位分鐘
{
ssecond=0;//同時秒數清零
mminute++;
if(mminute==60)//分鐘加到60則進位小時
{
mminute=0;//同時分鐘數清零
hhour++;
if(hhour==24)//小時加到24則小時清零
{
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小時制小時若變化則重新寫入
}
if(bj==0)
write_sfm(7,mminute);//分鐘若變化則重新寫入
}
if(bj==0)
write_sfm(10,ssecond);//秒若變化則重新寫入
}
}
|