⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 main.lst

📁 单片机51 实现 万年历编程
💻 LST
📖 第 1 页 / 共 2 页
字号:
 220   1              W1302(0x8e,0x00); /* 控制命令,WP=0,写操作*/
 221   1              Nop();
 222   1              T_RST = 0;
 223   1              Nop();
 224   1              T_CLK = 0;
 225   1              Nop();
 226   1              T_RST = 1;
 227   1              Nop();
 228   1              RTInputByte(0xfe); /* 0xbe:时钟多字节写命令 */
 229   1              Nop();
 230   1              for (i=31; i>0; i--) /* 31Byte 寄存器数据 */
 231   1              {
 232   2                      Nop();
 233   2                      RTInputByte(*pWReg); /* 写1Byte数据*/
 234   2                      Nop();
 235   2                      pWReg++;
 236   2                      Nop();
 237   2              }
 238   1              T_CLK = 1;
 239   1              Nop();
 240   1              T_RST = 0;
 241   1      } 
C51 COMPILER V8.05a   MAIN                                                                 04/18/2007 21:34:58 PAGE 5   

 242          /******************************************************************** 
 243          
 244          
 245          ***********************************************************************/
 246          void BurstR1302R(unsigned char *pRReg)
 247          {
 248   1              unsigned char i;
 249   1              T_RST = 0;
 250   1              Nop();
 251   1              T_CLK = 0;
 252   1              Nop();
 253   1              T_RST = 1;
 254   1              Nop();
 255   1              RTInputByte(0xff); /* 0xff:时钟多字节读命令 */
 256   1              Nop();
 257   1              for (i=31; i>0; i--) /*31Byte 寄存器数据 */
 258   1              {
 259   2                      Nop();
 260   2                      *pRReg = RTOutputByte(); /* 读1Byte数据 */
 261   2                      Nop();
 262   2                      pRReg++;
 263   2                      Nop();
 264   2              }
 265   1              T_CLK = 1;
 266   1              Nop();
 267   1              T_RST = 0;
 268   1      }
 269          /******************************************************************** 
 270          
 271          
 272          ***********************************************************************/
 273          void Set1302(unsigned char *pClock) 
 274          {
 275   1              unsigned char i;
 276   1              unsigned char ucAddr = 0x80; 
 277   1              /**转换为bcd码*****/
 278   1              for(i = 0;i <7;i++)
 279   1              {
 280   2                      pClock[i] = (((pClock[i]/10) << 4) | (pClock[i]%10));
 281   2              }
 282   1              W1302(0x8e,0x00); /* 控制命令,WP=0,写操作?*/
 283   1              Nop();
 284   1              for(i =7; i>0; i--)
 285   1              { 
 286   2                      Nop();
 287   2                      W1302(ucAddr,*pClock); /* 秒 分 时 日 月 星期 年 */
 288   2                      Nop(); 
 289   2                      pClock++;
 290   2                      ucAddr +=2;
 291   2              }
 292   1              W1302(0x8e,0x80); /* 控制命令,WP=1,写保护?*/
 293   1      }
 294          /******************************************************************** 
 295          
 296          ***********************************************************************/
 297          void Get1302(unsigned char *ucCurtime) 
 298          {
 299   1              unsigned char i;
 300   1              unsigned char ucAddr = 0x81;
 301   1              for (i=0; i<7; i++)
 302   1              {
 303   2                      ucCurtime[i] = R1302(ucAddr); //*格式为: 秒 分 时 日 月 星期 年 */       
C51 COMPILER V8.05a   MAIN                                                                 04/18/2007 21:34:58 PAGE 6   

 304   2                  ucCurtime[i]=(ucCurtime[i]>>4)*10+(ucCurtime[i]&0x0f); //转换
 305   2                      ucAddr += 2;
 306   2              }
 307   1      }
 308          
 309          /////初始化 DS1302
 310          void initialize_DS1302(void) 
 311          { 
 312   1        T_CLK=0; 
 313   1        T_RST=0; 
 314   1        W1302(0x8e,0x00); 
 315   1        W1302(0x90,0x00); //////////
 316   1      }  
 317          void solution_time(void)
 318            {       
 319   1             Get1302(b) ;
 320   1                 SEC=b[0];       //miao
 321   1                 MIN=b[1];            //fen
 322   1                 HOUR=b[2];           //shi 
 323   1                 DAY=b[3];             //日期
 324   1                MONTH=b[4];
 325   1                 WEEKDAY=b[5];                   //月
 326   1                 YEAR=b[6];              //年
 327   1        }     
 328             /*****************************************************************************
 329          公历年对应的农历数据,每年三字节,
 330          格式第一字节BIT7-4 位表示闰月月份,值为0 为无闰月,BIT3-0 对应农历第1-4 月的大小
 331          第二字节BIT7-0 对应农历第5-12 月大小,第三字节BIT7 表示农历第13 个月大小
 332          月份对应的位为1 表示本农历月大(30 天),为0 表示小(29 天)
 333          第三字节BIT6-5 表示春节的公历月份,BIT4-0 表示春节的公历日期
 334          *****************************************************************************/
 335          unsigned char code year_code[]={
 336                              0x09,0x2e,0x50,    //1999
 337                              0x0C,0x96,0x45,    //2000 
 338                              0x4d,0x4A,0xB8,    //2001
 339                              0x0d,0x4A,0x4C,    //2002
 340                              0x0d,0xA5,0x41,    //2003
 341                              0x25,0xAA,0xB6,    //2004
 342                              0x05,0x6A,0x49,    //2005
 343                              0x7A,0xAd,0xBd,    //2006
 344                              0x02,0x5d,0x52,    //2007
 345                              0x09,0x2d,0x47,    //2008
 346                              0x5C,0x95,0xBA,    //2009
 347                              0x0A,0x95,0x4e,    //2010
 348                              0x0B,0x4A,0x43,    //2011
 349                              0x4B,0x55,0x37,    //2012
 350                              0x0A,0xd5,0x4A,    //2013
 351                              0x95,0x5A,0xBf,    //2014
 352                              0x04,0xBA,0x53,    //2015
 353                              0x0A,0x5B,0x48,    //2016
 354                              0x65,0x2B,0xBC,    //2017
 355                              0x05,0x2B,0x50,    //2018
 356                              0x0A,0x93,0x45,    //2019
 357                              0x47,0x4A,0xB9,    //2020
 358                              0x06,0xAA,0x4C,    //2021
 359                              0x0A,0xd5,0x41,    //2022
 360                              0x24,0xdA,0xB6,    //2023
 361                              0x04,0xB6,0x4A,    //2024
 362                              0x69,0x57,0x3d,    //2025
 363                              0x0A,0x4e,0x51,    //2026
 364                              0x0d,0x26,0x46,    //2027
 365                              0x5e,0x93,0x3A,    //2028
C51 COMPILER V8.05a   MAIN                                                                 04/18/2007 21:34:58 PAGE 7   

 366                              0x0d,0x53,0x4d,    //2029
 367                              0x05,0xAA,0x43,    //2030
 368                              0x36,0xB5,0x37,    //2031
 369                              0x09,0x6d,0x4B,    //2032
 370                              0xB4,0xAe,0xBf,    //2033
 371                              0x04,0xAd,0x53,    //2034
 372                              0x0A,0x4d,0x48,    //2035
 373                              0x6d,0x25,0xBC,    //2036
 374                              0x0d,0x25,0x4f,    //2037
 375                              0x0d,0x52,0x44,    //2038
 376                              0x5d,0xAA,0x38,    //2039
 377                              0x0B,0x5A,0x4C,    //2040
 378                              0x05,0x6d,0x41,    //2041
 379                              0x24,0xAd,0xB6,    //2042
 380                              0x04,0x9B,0x4A,    //2043
 381                              0x7A,0x4B,0xBe,    //2044
 382                              0x0A,0x4B,0x51,    //2045
 383                              0x0A,0xA5,0x46,    //2046
 384                              0x5B,0x52,0xBA,    //2047
 385                              0x06,0xd2,0x4e,    //2048
 386                              0x0A,0xdA,0x42,    //2049
 387                              0x35,0x5B,0x37,    //2050
 388                              0x09,0x37,0x4B,    //2051
 389                              0x84,0x97,0xC1,    //2052
 390                              0x04,0x97,0x53,    //2053
 391                              0x06,0x4B,0x48,    //2054
 392                              0x66,0xA5,0x3C,    //2055
 393                              0x0e,0xA5,0x4f,    //2056
 394                              0x06,0xB2,0x44,    //2057
 395                              0x4A,0xB6,0x38,    //2058
 396                              0x0A,0xAe,0x4C,    //2059
 397                              0x09,0x2e,0x42,    //2060
 398                              0x3C,0x97,0x35,    //2061
 399                              0x0C,0x96,0x49,    //2062
 400                              0x7d,0x4A,0xBd,    //2063
 401                              0x0d,0x4A,0x51,    //2064
 402                              0x0d,0xA5,0x45,    //2065
 403                              0x55,0xAA,0xBA,    //2066
 404                              0x05,0x6A,0x4e,    //2067
 405                              0x0A,0x6d,0x43,    //2068
 406                              0x45,0x2e,0xB7,    //2069
 407                              0x05,0x2d,0x4B,    //2070
 408                              0x8A,0x95,0xBf,    //2071
 409                              0x0A,0x95,0x53,    //2072
 410                              0x0B,0x4A,0x47,    //2073
 411                              0x6B,0x55,0x3B,    //2074
 412                              0x0A,0xd5,0x4f,    //2075
 413                              0x05,0x5A,0x45,    //2076
 414                              0x4A,0x5d,0x38,    //2077
 415                              0x0A,0x5B,0x4C,    //2078
 416                              0x05,0x2B,0x42,    //2079
 417                              0x3A,0x93,0xB6,    //2080
 418                              0x06,0x93,0x49,    //2081
 419                              0x77,0x29,0xBd,    //2082
 420                              0x06,0xAA,0x51,    //2083
 421                              0x0A,0xd5,0x46,    //2084
 422                              0x54,0xdA,0xBA,    //2085
 423                              0x04,0xB6,0x4e,    //2086
 424                              0x0A,0x57,0x43,    //2087
 425                              0x45,0x27,0x38,    //2088
 426                              0x0d,0x26,0x4A,    //2089
 427                              0x8e,0x93,0x3e,    //2090
C51 COMPILER V8.05a   MAIN                                                                 04/18/2007 21:34:58 PAGE 8   

 428                              0x0d,0x52,0x52,    //2091
 429                              0x0d,0xAA,0x47,    //2092
 430                              0x66,0xB5,0x3B,    //2093
 431                              0x05,0x6d,0x4f,    //2094
 432                              0x04,0xAe,0x45,    //2095
 433                              0x4A,0x4e,0xB9,    //2096
 434                              0x0A,0x4d,0x4C,    //2097
 435                              0x0d,0x15,0x41,    //2098
 436                              0x2d,0x92,0xB5     //2099
 437          };
 438          unsigned int code day_code[]={ 
 439                              0x0000,0x001f,0x003b,0x005a,0x0078,0x0097,//月份数据表
 440                              0x00b5,0x00d4,0x00f3,0x0111,0x0130,0x014e
 441                                                    };
 442           /****************************************************************************
 443          返回月大小
 444          ****************************************************************************/
 445            bit get_lunar_day(unsigned char month_p,unsigned int table_addr)//子函数,用于读取数据表中农历月的大月或

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -