×
单片机 > 单片机程序设计 > 详情

通过日期算星期的C51源程序

发布时间:2020-06-05 发布时间:
|
#include

#define uint unsigned int
#define uchar unsigned char

uchar code monthday[]={31,28,31,30,31,30,31,31,30,31,30,31};
 
uchar month_n_day(uint y,uchar m)  //算出某年某月有多少天
{
       if(m==2)
              return(((y%4 == 0) && (y%100 != 0) || (y%400 == 0))? 29: 28);
       else
              return(monthday[m-1]);
}

//************************************************
uchar week(uint y,uchar m,uchar d)    //计算某年某月某日是星期几(1900年开始)
{
    long nday=0;
    uint i;


    for (i=1900;i          nday =nday+(((i%4 == 0) && (i%100 != 0) || (i%400 == 0))? 366: 365);
    for (i=1;i          nday=nday+month_n_day(y,i);
    nday=nday+d;

    return(nday%7);
}

void main()
{
      uchar week1,week2,week3,week4;
      uint    aa1,aa2,aa3,aa4;
      aa1=10;
      aa1=aa1+2000;

      week1=week(aa1,11,2);      //week1为计算出来的星期几。
      while(1)
     {
            ;
     }
}

//说明:

         如计算2010年12月05日是星期几:假设 uchar   year,month,day;

                                                                       year=0x10;     //年份:10年
                                                                    month=0x12;     //月份:12月

                                                                        day=0x05;     //日:    05日 

则星期为:week1=week((year>>4)*10+(year&0x0f)+2000, (month>>4)*10+(month&0x0f),(day>>4)*10+(day&0x0f));                

                  注:此式只能计算2000年到2099年的星期。  




『本文转载自网络,版权归原作者所有,如有侵权请联系删除』

热门文章 更多
8051单片机的函数发生器的设计