标题: STC89C52单片机四则运算出错 [打印本页]

作者: lern01    时间: 2018-11-5 18:13
标题: STC89C52单片机四则运算出错
设:bufTime.year = 18, bufTime.mon = 11, bufTime.day = 4算出的w的值等于2,正确值应该是0。不知是什么原因,望大侠们指点,先谢谢了!


void RefreshTimeShow()
{
    unsigned int d, m, y, w;

    ShowBcdByte(16, 0, bufTime.year);          //Year
    ShowBcdByte(48, 0, bufTime.mon);          //Month
    ShowBcdByte(80, 0, bufTime.day);          //Date
    ShowBcdByte(0, 2, bufTime.hour);          //Hour
    ShowBcdByte(32, 2, bufTime.min);          //Minutes
    ShowBcdByte(64, 2, bufTime.sec);          //Seconds

    d = bufTime.day;
    m = bufTime.mon;
    y = 2000 + bufTime.year;

    if(m == 1 || m == 2)
    {
        m += 12;
        y--;
    }
    w = (d + 1 + 2*m + 3*(m+1)/5 + y + y/4 - y/100 + y/400)%7;
    bufTime.week = (unsigned char)w;
    ShowBcdByte(32, 4, bufTime.week);
}




作者: devcang    时间: 2018-11-5 19:14
vc中测试正常,,,,,,好好检查一下各数值。。。。。。。。
作者: lern01    时间: 2018-11-5 23:53
devcang 发表于 2018-11-5 19:14
vc中测试正常,,,,,,好好检查一下各数值。。。。。。。。

我的是STC89单片机,折腾了一个晚上,还是没有找出问题
作者: cjm82    时间: 2018-11-6 09:36
w = (d + 1 + 2*m + 3*(m+1)/5 + y + y/4 - y/100 + y/400)%7;
不要中了谭浩强的遗毒...把这句表达式拆开来写吧...DEBUG的时候也更容易发现问题.
作者: majip117    时间: 2018-11-6 10:54

w = (d + 1 + 2*m + 3*(m+1)/5 + y + y/4 - y/100 + y/400)%7;
不要中了谭浩强的遗毒...把这句表达式拆开来写吧...DEBUG的时候也更容易发现问题.


作者: lern01    时间: 2018-11-6 19:59
终于搞明白了,感谢各位了!!!




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1