源程序如下
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);//秒若变化则重新写入
}
}
|