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

📄 clock.lst

📁 单片机定时器
💻 LST
📖 第 1 页 / 共 3 页
字号:
 464   6                                                                      if(I2cRead24C02(j)==I2cEndByte)break;
 465   6                                                                      RingDataH[i]=I2cRead24C02(j++);
 466   6                                                                      RingDataL[i]=I2cRead24C02(j++);
 467   6                                                                      RingCount++;
 468   6                                                              }
 469   5                                                              EA=1;
 470   5                                                              goto L2;
 471   5                                              case 8://确定
 472   5                                                              j=1;
 473   5                                                      RingDataL[ShowRingCount]=ShowRing[0];
 474   5                                                              RingDataH[ShowRingCount]=ShowRing[1];
 475   5                                                              Taxis();//排序
 476   5                                                              for(i=0;i<RingCount;i++)
 477   5                                                              {
 478   6                                                                      EA=0;
 479   6                                                                      I2cWrite24C02(j++,RingDataH[i]);
 480   6                                                                      EA=1;
 481   6                                                                      Display(ShowRing,FlagBit);
 482   6                                                                      EA=0;
 483   6                                                                      I2cWrite24C02(j++,RingDataL[i]);
 484   6                                                                      EA=1;
 485   6                                                                      Display(ShowRing,FlagBit);
 486   6                                                              }
 487   5                                                              EA=0;
 488   5                                                              I2cWrite24C02(j,I2cEndByte);
 489   5                                                              EA=1;
C51 COMPILER V8.08   CLOCK                                                                 10/11/2007 17:28:37 PAGE 9   

 490   5                                                              if(RingCount==0)
 491   5                                                                      Display(Null,5);
 492   5                                                              else
 493   5                                                                      Display(ShowRing,FlagBit);
 494   5                                                              goto L2;
 495   5                                                                      
 496   5                                      }  
 497   4                              }
 498   3                              BeforKey=NowKey;
 499   3                              count2--;
 500   3                              if(count2==0)
 501   3                              {
 502   4                                      count2=0x40;
 503   4                                      count1--;
 504   4                                      if(count1==0)
 505   4                                              goto L3;
 506   4                              }
 507   3                      }
 508   2                      else KeyCount++;
 509   2              }
 510   1      L2:S_Ray_Flag=0;
 511   1      }
 512          
 513          //-------------时间设置的程序--------------------------------------------
 514          void Control_Time_Set_Key()
 515          {
 516   1              uchar S_Flag=1;
 517   1              uchar M_Flag=1;
 518   1              uchar H_Flag=1;
 519   1              uchar count1=0x40;//无操作时的时间控制
 520   1              uchar count2=0xff;//无操作时的时间控制
 521   1              uchar NowKey=0xff;
 522   1              uchar BeforKey=0xff;
 523   1          uchar KeyCount=0;
 524   1              uchar FlagBit=1;
 525   1              uchar LS_ClockData[3];
 526   1              LS_ClockData[2]=ClockData[2];
 527   1              LS_ClockData[1]=ClockData[1];
 528   1              LS_ClockData[0]=ClockData[0];
 529   1              while(1)
 530   1              {
 531   2                      if(S_Flag)LS_ClockData[0]=ClockData[0];
 532   2                      if(M_Flag)LS_ClockData[1]=ClockData[1];
 533   2                      if(H_Flag)LS_ClockData[2]=ClockData[2];
 534   2                      Display(LS_ClockData,FlagBit);//动态扫描显示
 535   2                      if(KeyCount==2)
 536   2                      {
 537   3                      
 538   3                              KeyCount=0;
 539   3                              NowKey=GetKey();
 540   3                              if(NowKey!=BeforKey)
 541   3                              {
 542   4                                      count1=0x40;
 543   4                                      count2=0xff;
 544   4                                      switch(GetKey())
 545   4                                      {
 546   5                                              case 3://向左移动
 547   5                                                              if(FlagBit==3)FlagBit=1;
 548   5                                                              else FlagBit++;
 549   5                                                              break;
 550   5                                              case 4://增加
 551   5                                                              switch(FlagBit)
C51 COMPILER V8.08   CLOCK                                                                 10/11/2007 17:28:37 PAGE 10  

 552   5                                                              {
 553   6                                                                      case 1://秒增加
 554   6                                                                                      if(LS_ClockData[0]==59)
 555   6                                                                                              LS_ClockData[0]=0;
 556   6                                                                                      else LS_ClockData[0]++; 
 557   6                                                                                      S_Flag=0;
 558   6                                                                                      break;
 559   6                                                                      case 2://分增加
 560   6                                                                                      if(LS_ClockData[1]==59)
 561   6                                                                                              LS_ClockData[1]=0;
 562   6                                                                                      else LS_ClockData[1]++;
 563   6                                                                                      M_Flag=0;
 564   6                                                                                      break;
 565   6                                                                      case 3://时增加
 566   6                                                                                      if(LS_ClockData[2]==23)
 567   6                                                                                              LS_ClockData[2]=0;
 568   6                                                                                      else LS_ClockData[2]++;
 569   6                                                                                      H_Flag=0;
 570   6                                                                                      break;
 571   6                                                              }
 572   5                                                              break;
 573   5                                              case 5://减小
 574   5                                                              switch(FlagBit)
 575   5                                                              {
 576   6                                                                      case 1://秒减小
 577   6                                                                                      if(LS_ClockData[0]==0)
 578   6                                                                                              LS_ClockData[0]=59;
 579   6                                                                                      else LS_ClockData[0]--;
 580   6                                                                                      S_Flag=0;
 581   6                                                                                      break;
 582   6                                                                      case 2://分减小
 583   6                                                                                      if(LS_ClockData[1]==0)
 584   6                                                                                              LS_ClockData[1]=59;
 585   6                                                                                      else LS_ClockData[1]--;
 586   6                                                                                      M_Flag=0;
 587   6                                                                                      break;
 588   6                                                                      case 3://时减小
 589   6                                                                                      if(LS_ClockData[2]==0)
 590   6                                                                                              LS_ClockData[2]=23;
 591   6                                                                                      else LS_ClockData[2]--;
 592   6                                                                                      H_Flag=0;
 593   6                                                                                      break;
 594   6                                                              }
 595   5                                                              break;
 596   5                                              case 6://向右移动
 597   5                                                              if(FlagBit==1)FlagBit=3;
 598   5                                                              else FlagBit--;
 599   5                                                              break;
 600   5                                              case 7://取消
 601   5                                                              goto L1;
 602   5                                              case 8://确定
 603   5                                                              ClockData[2]=LS_ClockData[2];
 604   5                                                              ClockData[1]=LS_ClockData[1];
 605   5                                                              ClockData[0]=LS_ClockData[0];
 606   5                                                              goto L1;
 607   5                                      }
 608   4                              }
 609   3                              BeforKey=NowKey; 
 610   3                              count2--;
 611   3                              if(count2==0)
 612   3                              {
 613   4                                      count2=0x40;
C51 COMPILER V8.08   CLOCK                                                                 10/11/2007 17:28:37 PAGE 11  

 614   4                                      count1--;
 615   4                                      if(count1==0)
 616   4                                              goto L1;
 617   4                              }
 618   3                      }
 619   2                      else KeyCount++;
 620   2              }
 621   1      L1:;
 622   1      }
 623          
 624          //----------------------主程序-----------------------------------------------
 625          void main()
 626          {
 627   1              uchar NowKey;
 628   1              uchar BeforKey=0xff;
 629   1          uchar KeyCount=0;
 630   1              uchar i=1;
 631   1              Alarm=0;
 632   1              S_Ray=1;
 633   1              s_ray=1;
 634   1              Initializtion();//读24C02
 635   1              TMOD=0x10;//设置T1
 636   1              EA=1;
 637   1              ET1=1;
 638   1              PT1=1;
 639   1              TH1=0x3c;
 640   1              TL1=0xb0;
 641   1              TR1=1;
 642   1              while(1)
 643   1              {       
 644   2                      Display(ClockData,0);//动态扫描
 645   2                      //闹铃监视
 646   2                      for(i=0;i<RingCount;i++)
 647   2                      {
 648   3                              if((RingDataH[i]==ClockData[2]) && (RingDataL[i]==ClockData[1]))
 649   3                              {
 650   4                                      Alarm=1;
 651   4                                      break;
 652   4                              }
 653   3                              else Alarm=0;
 654   3                      }
 655   2                      //按键控制
 656   2                      if(KeyCount==2)
 657   2                      {
 658   3                      
 659   3                              KeyCount=0;
 660   3                              NowKey=GetKey();
 661   3                              if(NowKey!=BeforKey)
 662   3                              {
 663   4                                      switch (NowKey)
 664   4                                      {
 665   5                                              case 1:
 666   5                                                              Control_Time_Set_Key();
 667   5                                                              break;
 668   5                                              case 2:
 669   5                                                              Alarm=0;
 670   5                                                              Control_Ring_Set_Key(); 
 671   5                                                              break;
 672   5                                              default:
 673   5                                                              break;
 674   5                                      }
 675   4                              }
C51 COMPILER V8.08   CLOCK                                                                 10/11/2007 17:28:37 PAGE 12  

 676   3                              BeforKey=NowKey;
 677   3                      }
 678   2                      else KeyCount++;
 679   2              }
 680   1      }
 681          
 682          


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =   1983    ----
   CONSTANT SIZE    =      6    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =     88      39
   IDATA SIZE       =   ----    ----
   BIT SIZE         =   ----    ----
END OF MODULE INFORMATION.


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

⌨️ 快捷键说明

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