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

📄 ds12c887.lst

📁 DS12C887适时时钟
💻 LST
📖 第 1 页 / 共 2 页
字号:
 247   4                                      di();
 248   4                                      switch(s1num)
 249   4                                      {
 250   5                                              case 1: miao++;
 251   5                                                              if(miao==60)
 252   5                                                                      miao=0;
 253   5                                                              write_sfm(8,miao);
 254   5                                                              write_com(0x80+0x40+8);
 255   5                                                              break;
 256   5                                              case 2: fen++;
 257   5                                                              if(fen==60)
 258   5                                                                      fen=0;
 259   5                                                              write_sfm(5,fen);
 260   5                                                              write_com(0x80+0x40+5);
 261   5                                                              break;
 262   5                                              case 3: shi++;
 263   5                                                              if(shi==24)
 264   5                                                                      shi=0;
 265   5                                                              write_sfm(2,shi);
 266   5                                                              write_com(0x80+0x40+2);
 267   5                                                              break;
 268   5                                              case 4: week++;
 269   5                                                              if(week==8)
 270   5                                                                      week=1;
 271   5                                                              write_week(13,week);
 272   5                                                              write_com(0x80+13);
 273   5                                                              break;
 274   5                                              case 5: day++;
 275   5                                                              if(day==32)
 276   5                                                                      day=1;
 277   5                                                              write_nyr(10,day);
 278   5                                                              write_com(0x80+10);
 279   5                                                              break;
 280   5                                              case 6: month++;
 281   5                                                              if(month==13)
 282   5                                                                      month=1;
 283   5                                                              write_nyr(7,month);
 284   5                                                              write_com(0x80+7);
 285   5                                                              break;
 286   5                                              case 7: year++;
 287   5                                                              if(year==100)
 288   5                                                                      year=0;
 289   5                                                              write_nyr(4,year);
 290   5                                                              write_com(0x80+4);
 291   5                                                              break;
 292   5                                      }
 293   4                              }                       
 294   3                      }
 295   2                      if(s3==0)
 296   2                      {
 297   3                              delay(5);
 298   3                              if(s3==0)
 299   3                              {
 300   4                                      while(!s3);
 301   4                                      di();
 302   4                                      switch(s1num)
 303   4                                      {
C51 COMPILER V7.09   DS12C887                                                              02/11/2009 12:02:16 PAGE 6   

 304   5                                              case 1: miao--;
 305   5                                                              if(miao==-1)
 306   5                                                                      miao=59;
 307   5                                                              write_sfm(8,miao);
 308   5                                                              write_com(0x80+0x40+8);
 309   5                                                              break;
 310   5                                              case 2: fen--;
 311   5                                                              if(fen==-1)
 312   5                                                                      fen=59;
 313   5                                                              write_sfm(5,fen);
 314   5                                                              write_com(0x80+0x40+5);
 315   5                                                              break;
 316   5                                              case 3: shi--;
 317   5                                                              if(shi==-1)
 318   5                                                                      shi=23;
 319   5                                                              write_sfm(2,shi);
 320   5                                                              write_com(0x80+0x40+2);
 321   5                                                              break;
 322   5                                              case 4: week--;
 323   5                                                              if(week==0)
 324   5                                                                      week=7;
 325   5                                                              write_week(13,week);
 326   5                                                              write_com(0x80+13);
 327   5                                                              break;
 328   5                                              case 5: day--;
 329   5                                                              if(day==0)
 330   5                                                                      day=31;
 331   5                                                              write_nyr(10,day);
 332   5                                                              write_com(0x80+10);
 333   5                                                              break;
 334   5                                              case 6: month--;
 335   5                                                              if(month==0)
 336   5                                                                      month=12;
 337   5                                                              write_nyr(7,month);
 338   5                                                              write_com(0x80+7);
 339   5                                                              break;
 340   5                                              case 7: year--;
 341   5                                                              if(year==-1)
 342   5                                                                      year=99;
 343   5                                                              write_nyr(4,year);
 344   5                                                              write_com(0x80+4);
 345   5                                                              break;
 346   5                                      }
 347   4                              }
 348   3                      }
 349   2              }
 350   1              if(s4==0)
 351   1              {
 352   2                      delay(5);
 353   2                      if(s4==0)
 354   2                      {
 355   3                              flag1=~flag1;
 356   3                              while(!s4);
 357   3                              di();
 358   3                              if(flag1==0)
 359   3                              {
 360   4                                      flag=0;//当按键第二次按下时取消查看闹钟,此时flag为1,应置0
 361   4                                      write_com(0x80+0x40);
 362   4                                      write_date(' ');
 363   4                                      write_date(' ');
 364   4                                      write_com(0x0c);
 365   4                                      write_ds(1,miao);
C51 COMPILER V7.09   DS12C887                                                              02/11/2009 12:02:16 PAGE 7   

 366   4                                      write_ds(3,fen);
 367   4                                      write_ds(5,shi);
 368   4                              }
 369   3                              else
 370   3                              {
 371   4                                      read_alarm();
 372   4                                      write_com(0x80+0x40);
 373   4                                      write_date('R');
 374   4                                      write_date('i');
 375   4                                      write_com(0x80+0x40+4);
 376   4                                      write_sfm(2,ashi);
 377   4                                      write_sfm(5,afen);
 378   4                                      write_sfm(8,amiao);
 379   4                                      miao=amiao;
 380   4                                      fen=afen;
 381   4                                      shi=ashi;
 382   4                              }
 383   3                      }
 384   2              }
 385   1      }
 386          void write_ds(uchar add,uchar date)
 387          {
 388   1              dscs=0;
 389   1              dsas=1;
 390   1              dsds=1;
 391   1              dsrw=1;
 392   1              P0=add;
 393   1              dsas=0;
 394   1              dsrw=0;
 395   1              P0=date;
 396   1              dsrw=1;
 397   1              dsas=1;
 398   1              dscs=1;
 399   1      }
 400          uchar read_ds(uchar add)
 401          {
 402   1              uchar ds_date;
 403   1              dscs=0;
 404   1              dsas=1;
 405   1              dsds=1;
 406   1              dsrw=1;
 407   1              P0=add;
 408   1              dsas=0;
 409   1              dsds=0;
 410   1              P0=0xff;
 411   1              ds_date=P0;
 412   1              dsds=1;
 413   1              dsas=1;
 414   1              dscs=1;
 415   1              return ds_date;
 416   1      }
 417          /*void set_time()
 418          {
 419                  write_ds(0,0);
 420                  write_ds(1,0);
 421                  write_ds(2,0);
 422                  write_ds(3,0);
 423                  write_ds(4,0);
 424                  write_ds(5,0);
 425                  write_ds(6,0);
 426                  write_ds(7,0);
 427                  write_ds(8,0);
C51 COMPILER V7.09   DS12C887                                                              02/11/2009 12:02:16 PAGE 8   

 428                  write_ds(9,0);
 429          }*/
 430          void set_alarm(uchar amiao,uchar afen,uchar ashi)
 431          {
 432   1              write_ds(1,amiao);
 433   1              write_ds(3,afen);
 434   1              write_ds(5,ashi);
 435   1      }
 436          void read_alarm()
 437          {
 438   1              amiao=read_ds(1);
 439   1              afen=read_ds(3);
 440   1              ashi=read_ds(5);
 441   1      }
 442          void main()
 443          {       
 444   1              uchar i;
 445   1              init();
 446   1              while(1)
 447   1              {       
 448   2                      keyscan();
 449   2                      if(flag_ri==1)
 450   2                      {
 451   3                              di();
 452   3                              delay(100);
 453   3                              di();
 454   3                              delay(500);
 455   3                      }
 456   2                      if(flag==0&&flag1==0)
 457   2                      {
 458   3                              keyscan();
 459   3                              year=read_ds(9);
 460   3                              month=read_ds(8);
 461   3                              day=read_ds(7);
 462   3                              week=read_ds(6);
 463   3                              shi=read_ds(4);
 464   3                              fen=read_ds(2);
 465   3                              miao=read_ds(0);
 466   3                              write_sfm(8,miao);
 467   3                              write_sfm(5,fen);
 468   3                              write_sfm(2,shi);
 469   3                              write_week(13,week);
 470   3                              write_nyr(10,day);
 471   3                              write_nyr(7,month);
 472   3                              write_nyr(4,year);
 473   3                              tempchange();
 474   3                              for(i=0;i<5;i++)
 475   3                              {
 476   4                                      wendu(get_temp());
 477   4                              }
 478   3                      }       
 479   2              }
 480   1      }
 481          void exter() interrupt 2
 482          {
 483   1              uchar c;
 484   1              flag_ri=1;
 485   1              c=read_ds(0x0c);
 486   1      }


MODULE INFORMATION:   STATIC OVERLAYABLE
C51 COMPILER V7.09   DS12C887                                                              02/11/2009 12:02:16 PAGE 9   

   CODE SIZE        =   1546    ----
   CONSTANT SIZE    =     34    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =     13      11
   IDATA SIZE       =   ----    ----
   BIT SIZE         =      2    ----
END OF MODULE INFORMATION.


C51 COMPILATION COMPLETE.  0 WARNING(S),  0 ERROR(S)

⌨️ 快捷键说明

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