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

📄 ds1302.lst

📁 用ds18b20+ds1302+89s52做的时钟
💻 LST
📖 第 1 页 / 共 3 页
字号:
 271   1                              
 272   1              P2=0xfd;
 273   1          P0=tab[1];
 274   1              delayms1(1);
 275   1      
 276   1              P2=0xf7;
 277   1              P0=tab[year1/10];
 278   1              delayms1(1);
 279   1      
 280   1              P2=0xef;
 281   1              P0=tab[year1%10];
 282   1              delayms1(1);
 283   1      
 284   1      }
 285          
 286          
 287          void displaymonth(void)
 288          {
 289   1      
 290   1              P2=0xfe;
 291   1          P0=0x8c;
 292   1              delayms1(1);
 293   1                              
 294   1              P2=0xfd;
 295   1          P0=tab[2];
 296   1              delayms1(1);
 297   1      
 298   1              P2=0xf7;
 299   1              P0=tab[month1/10];
 300   1              delayms1(1);
 301   1      
 302   1              P2=0xef;
 303   1              P0=tab[month1%10];
C51 COMPILER V7.06   DS1302                                                                06/27/2008 11:23:52 PAGE 6   

 304   1              delayms1(1);
 305   1      
 306   1      }
 307          
 308          void displayday(void)
 309          {
 310   1      
 311   1      
 312   1              P2=0xfe;
 313   1          P0=0x8c;
 314   1              delayms1(1);
 315   1                              
 316   1              P2=0xfd;
 317   1          P0=tab[3];
 318   1              delayms1(1);
 319   1      
 320   1              P2=0xf7;
 321   1              P0=tab[day1/10];
 322   1              delayms1(1);
 323   1      
 324   1              P2=0xef;
 325   1              P0=tab[day1%10];
 326   1              delayms1(1);
 327   1      
 328   1      }
 329          
 330          void displayweek(void)
 331          {
 332   1      
 333   1              P2=0xfe;
 334   1          P0=0x8c;
 335   1              delayms1(1);
 336   1                              
 337   1              P2=0xfd;
 338   1          P0=tab[4];
 339   1              delayms1(1);
 340   1      
 341   1              P2=0xf7;
 342   1              P0=tab[week1/10];
 343   1              delayms1(1);
 344   1      
 345   1              P2=0xef;
 346   1              P0=tab[week1%10];
 347   1              delayms1(1);
 348   1      
 349   1      }
 350          
 351          
 352          void displaysecond(void)
 353          {
 354   1          
 355   1              P2=0xfe;
 356   1          P0=0x8c;
 357   1              delayms1(1);
 358   1                              
 359   1              P2=0xfd;
 360   1          P0=tab[7];
 361   1              delayms1(1);
 362   1      
 363   1              P2=0xf7;
 364   1              P0=tab[second1/10];
 365   1              delayms1(1);
C51 COMPILER V7.06   DS1302                                                                06/27/2008 11:23:52 PAGE 7   

 366   1      
 367   1              P2=0xef;
 368   1              P0=tab[second1%10];
 369   1              delayms1(1);
 370   1      
 371   1              
 372   1      
 373   1      }
 374          /****************************************************************************
 375          函数功能:数码管显示子程序
 376          入口参数:k
 377          出口参数:
 378          ****************************************************************************/
 379          void display(void)
 380          {   
 381   1              P2=0xfe;                        
 382   1              P0=tab[hour/16];
 383   1              delay1();
 384   1      
 385   1              P2=0xfd;
 386   1              P0=tab[hour%16];
 387   1              delay1();
 388   1      
 389   1      //      P2=0xfb;
 390   1      //      P0=0xbf;                        //显示"-"
 391   1      //      delay1();
 392   1      
 393   1              P2=0xfb;
 394   1              P0=tab[minute/16];
 395   1              delay1();
 396   1      
 397   1              P2=0xf7;
 398   1              P0=tab[minute%16];
 399   1              delay1();
 400   1      
 401   1      //      P2=0xdf;
 402   1      //      P0=0xbf;                        //显示"-"
 403   1      //      delay1();
 404   1      
 405   1              P2=0xef;
 406   1              P0=tab[second/16];
 407   1              delay1();
 408   1      
 409   1              P2=0xdf;
 410   1              P0=tab[second%16];
 411   1              delay1();
 412   1      }
 413          
 414          
 415          /****************************************************************************
 416          函数功能:数码管显示子程年年序
 417          入口参数:k
 418          出口参数:
 419          ***********************年月日*****************************************************/
 420          void display1(void)
 421          {
 422   1              P2=0xfe;                        
 423   1              P0=tab[year/16];
 424   1              delay1();
 425   1      
 426   1              P2=0xfd;
 427   1              P0=tab[year%16];
C51 COMPILER V7.06   DS1302                                                                06/27/2008 11:23:52 PAGE 8   

 428   1              delay1();
 429   1      
 430   1      //      P2=0xfb;
 431   1      //      P0=0xbf;                        //显示"-"
 432   1      //      delay1();
 433   1      
 434   1              P2=0xfb;
 435   1              P0=tab[month/16];
 436   1              delay1();
 437   1      
 438   1              P2=0xf7;
 439   1              P0=tab[month%16];
 440   1              delay1();
 441   1      
 442   1      //      P2=0xdf;
 443   1      //      P0=0xbf;                        //显示"-"
 444   1      //      delay1();
 445   1      
 446   1              P2=0xef;
 447   1              P0=tab[day/16];
 448   1              delay1();
 449   1      
 450   1              P2=0xdf;
 451   1              P0=tab[day%16];
 452   1              delay1();
 453   1      }
 454          
 455          
 456          /*****************************************************************************
 457          函数功能:向DS1302送一字节数据子程序
 458          入口参数:
 459          出口参数:
 460          *****************************************************************************/
 461          void InputByte(unsigned char byte1)
 462          {
 463   1              char i;
 464   1              for(i=8;i>0;i--)
 465   1              {
 466   2                      DS1302_IO=(bit)(byte1&0x01);
 467   2                      DS1302_CLK=1;
 468   2                      _nop_();
 469   2                      DS1302_CLK=0;
 470   2                      byte1>>=1;
 471   2              }
 472   1              return;
 473   1      }
 474          
 475          /*****************************************************************************
 476          函数功能:读DS1302一个字节子程序
 477          入口参数:
 478          出口参数:
 479          *****************************************************************************/
 480          unsigned char outputbyte(void)  
 481          {
 482   1              unsigned char i;
 483   1              unsigned ucdat=0;
 484   1              for(i=8;i>0;i--)
 485   1              {
 486   2                      DS1302_IO=1;
 487   2                      ucdat>>=1;
 488   2                      if(DS1302_IO)ucdat|=0x80;
 489   2                      DS1302_CLK=1;
C51 COMPILER V7.06   DS1302                                                                06/27/2008 11:23:52 PAGE 9   

 490   2                      _nop_();
 491   2                      DS1302_CLK=0;
 492   2               }
 493   1               return(ucdat);
 494   1      }
 495          
 496          /*****************************************************************************
 497          函数功能:向DS1302某地址写一字节数据子程序
 498          入口参数:addr,TDat
 499          出口参数:
 500          *****************************************************************************/
 501          void write_ds1302(unsigned char addr,unsigned char TDat)
 502          {
 503   1              DS1302_RST=0;
 504   1              _nop_();
 505   1              DS1302_CLK=0;
 506   1              _nop_();
 507   1              DS1302_RST=1;
 508   1              InputByte(addr);
 509   1              _nop_();
 510   1              InputByte(TDat);
 511   1              DS1302_CLK=1;
 512   1              _nop_();
 513   1              DS1302_RST=0;
 514   1      }
 515          
 516          /*****************************************************************************
 517          函数功能:读DS1302地址子程序
 518          入口参数:add
 519          出口参数:timedata
 520          *****************************************************************************/
 521          unsigned char read_ds1302(unsigned char addr)
 522          {
 523   1              unsigned char timedata;
 524   1              DS1302_RST=0;
 525   1              _nop_();
 526   1              DS1302_CLK=0;
 527   1              _nop_();
 528   1              DS1302_RST=1;
 529   1              InputByte(addr);
 530   1              timedata=OutputByte();
*** WARNING C206 IN LINE 530 OF DS1302.C: 'OutputByte': missing function-prototype
 531   1              DS1302_CLK=1;
 532   1              _nop_();
 533   1              DS1302_RST=0;
 534   1              return(timedata);
 535   1      }
 536          
 537          /*****************************************************************************
 538          函数功能:初始化DS1302子程序
 539          入口参数:time[](全局变量)
 540          出口参数:
 541          *****************************************************************************/
 542          void initial_ds1302()
 543          {
 544   1              write_ds1302(0x8e,0x00);                //写保护寄存器,在对时钟或RAM写前WP一定要为0
 545   1              write_ds1302(0x8c,time[0]);             //年
 546   1              write_ds1302(0x88,time[1]);             //月
 547   1              write_ds1302(0x86,time[2]);             //日
 548   1              write_ds1302(0x8A,time[3]);             //星期

⌨️ 快捷键说明

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