51单片机制作电子钟

[复制链接]
查看11 | 回复1 | 2016-4-16 08:24:25 | 显示全部楼层 |阅读模式
void timer0 (void) interrupt 1using 1{
TH0 = 0x3C; //16位计数寄存器T0高8位(重新写入初值)50毫秒
TL0 = 0xB0; //16位计数寄存器T0低8位
tt++;
if(tt>9)flag=1;else flag=0;
if(tt>19){tt=0;sec++;}
if(sec>59){sec=0;min++;}//分加加
if(min>59){min=0;hour++;}//时加加
if(hour>23){hour=0;day++;week++;if(week>7)week=1;}//日加加

if((year%4==0)&&mon==2){monmax=29;}//闰年二月
else{
switch(mon){
case 1:monmax=31;break;

case 2:monmax=28;break;
case 3:monmax=31;break;
case 4:monmax=30;break;
case 5:monmax=31;break;
case 6:monmax=30;break;
case 7:monmax=31;break;
case 8:monmax=31;break;
case 9:monmax=30;break;
case 10:monmax=31;break;
case 11:monmax=30;break;
case 12:monmax=31;break;

}
}
if(day>monmax){day=1;mon++;}
if(mon>12){mon=1;year++;}
if(year>99)year=0;

}
我是用这个中断来实现时间及日期的记数的,请问有更好的方案吗?还有怎么实现农历的转换?写个子程序吧,谢谢!

回复

使用道具 举报

千问 | 2016-4-16 08:24:25 | 显示全部楼层
农历转换需要以个数据库,我赠送你一C语言的农历转换#define c_sun 0/********阳历转换阴历********************************************************************/code uchar year_code[597]={
0x04,0xAe,0x53,
//1901 0
0x0A,0x57,0x48,
//1902 3
0x55,0x26,0xBd,
//1903 6
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行