标题: 51单片机C语言计算某一天是星期几源程序(菜农星期算法) [打印本页]

作者: datouyuan    时间: 2022-4-18 11:59
标题: 51单片机C语言计算某一天是星期几源程序(菜农星期算法)
算法用C语言实现。
  1. #include <REG52.H>
  2. #include <stdio.h>
  3. /*
  4. 菜农星期算法
  5. 返回值:星期 对7取模得:0-星期日,1-星期一,2-星期二,3-星期三,4-星期四,5-星期五,6-星期六
  6. c:世纪-1,如2022年是21世纪,c取值20
  7. y:年,取后两位数。如2022年,y取值22
  8. m:月
  9. d:日
  10. */
  11. unsigned char getweek(unsigned char c, unsigned char y, unsigned char m, unsigned char d)
  12. {
  13.         if (m <= 2)//1,2月变为去年的13,14月
  14.         {
  15.                 if(0==y)
  16.                 {
  17.                         y = 99;
  18.                         if (0==c)
  19.                                 c = 99;
  20.                         else
  21.                                 c --;
  22.                 }
  23.                 else
  24.                         y --;
  25.                 m |= 4;//1,2月查5,6月表
  26.         }
  27.         /*
  28.         菜农星期算法
  29.         星期=(百年%4*5+年+年/4+(13*月+8)/5+日)%7
  30.         */
  31.         return ((c & 3) * 5 + y + (y >> 2) + (13 * m + 8) / 5 + d) % 7;        
  32. }
  33. void main (void)
  34. {
  35.         //Setup the serial port for 1200 baud at 16MHz.
  36.         SCON  = 0x50;                        /* SCON: mode 1, 8-bit UART, enable rcvr      */
  37.         TMOD |= 0x20;               /* TMOD: timer 1, mode 2, 8-bit reload        */
  38.         TH1   = 221;                /* TH1:  reload value for 1200 baud @ 16MHz   */
  39.         TR1   = 1;                  /* TR1:  timer 1 run                          */
  40.         TI    = 1;                  /* TI:   set TI to send first char of UART    */
  41.     printf("20220418 week=%bd\n",getweek(20, 22, 4, 18));
  42.         while(1){

  43.         }
  44. }
复制代码






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