打印

有人用单片机内部定时器写过万年历吗?

[复制链接]
2516|12
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
jiyiche|  楼主 | 2009-4-30 21:47 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
沙发
ayb_ice| | 2009-5-1 11:01 | 只看该作者

没有做过真正万年

使用特权

评论回复
板凳
jiyiche|  楼主 | 2009-5-1 11:34 | 只看该作者

。。。

。。。百年就可以了

使用特权

评论回复
地板
atuz| | 2009-5-1 12:24 | 只看该作者

....

有人写过,用了90个字节

使用特权

评论回复
5
jiyiche|  楼主 | 2009-5-1 13:19 | 只看该作者

90个字节。。。

在哪,我瞻仰瞻仰

使用特权

评论回复
6
jiyiche|  楼主 | 2009-5-1 13:38 | 只看该作者

平时所谓的程序有几K是几K(byte)字节还是几K位bit?

顺便弱弱的问一句,平时所谓的程序有几K是几K(byte)字节还是几K位bit?

使用特权

评论回复
7
耕在此行| | 2009-5-1 15:05 | 只看该作者

呵呵 楼上的强啊

当然是几K字节啰

使用特权

评论回复
8
救火车| | 2009-5-1 15:38 | 只看该作者

我做的能被4整除就算润年了。

民用的东西要求不太高。所以我没管2100的的事。

使用特权

评论回复
9
ningling_21| | 2009-5-1 15:55 | 只看该作者

被4整除,或能被100整除的年份是闰年

使用特权

评论回复
10
电脑圆圆| | 2009-5-1 22:09 | 只看该作者

ls牛

  1。能被4整除而不能被100整除。(如2004年就是闰年,1900年不是)
  2。能被400整除。(如2000年是闰年)

使用特权

评论回复
11
jiyiche|  楼主 | 2009-5-1 23:51 | 只看该作者

恩,这个我倒是知道

    就是关于怎么让它存储这么多月份,年份不是很清楚

使用特权

评论回复
12
smileagain| | 2009-5-2 18:53 | 只看该作者

我写过一个

月份是算出来的,包括大小月和2月,其实算法不难的,用查表的方法太占ROM了。
闰年的判断我用的是穷举查表法,因为既然是用单片机做,那有个20年的范围就可以了,没必要用公式算。如果要全部算出来也不难,有现成公式的。
星期的判断是用蔡勒公式或者“菜农公式”,版上菜农大侠专门讨论过,呵呵

使用特权

评论回复
13
电脑圆圆| | 2009-5-4 16:05 | 只看该作者

临时给你写一个

bit bRunnian(year)//year暂时为2字节
{
    if(year%100==0)
    {
        if(year%400==0)
            return 1;
        else
            return 0;
    }
    else
    {
        if(year%4==0)
            return 1;
        else
            return 0;
    }
}
void timerInt() intterrupt X
{
    second++
    if(second==60)
    {
        second=0;
        minite++;
    }

    if(minite==60)
    {
        minite=0;
        hour++;
    }

    if(hour==24)
    {
        hour=0;
        day++;
    }

    switch(month)
    {
    case 1:
    case 3:
    case 5:
    case 7:
    case 8:
    case 10:
        if(day==32)
        {
            day=1;
            month++
        }
        break;
    case 4:
    case 6:
    case 9:
    case 11:
        if(day==31)
        {
            day=1;
            month++
        }
        break;
    case 12:
        if(day==32)
        {
            day=1;
            month=1;
            year++;
        }
        break;
    case 2:
        if(day==29)
        {
            if(!bRunnian(year))
            {
                day=1;
                month++;
            }
        }
        else if(day==30)
        {
            day=1;
            month++;
        }
        break;
    default:    
        break;
    }
}

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

176

主题

484

帖子

0

粉丝