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

📄 dzz_thesamea.lst

📁 单片机控制下的电子钟实验程序。适用于初学者。
💻 LST
📖 第 1 页 / 共 3 页
字号:
 484   5                                                              if(s2==0)
 485   5                                                              {
 486   6                                                                      num_minisclock++;
 487   6                                                                      if(num_minisclock==6)
 488   6                                                                              num_minisclock=0;
 489   6                                                              }
C51 COMPILER V8.05a   DZZ_THESAMEA                                                         09/13/2008 20:03:56 PAGE 9   

 490   5                                                              while(!s2);
 491   5                                                              upmost2=50000;
 492   5                                                      }
 493   4                                                      if(s3==0)
 494   4                                                      {
 495   5                                                              delay(10);
 496   5                                                              if(s3==0)
 497   5                                                              yes=1;  
 498   5                                                      }       
 499   4                                                      while(!s3);
 500   4                                                      if(upmost2==0|yes==1)
 501   4                                                      {
 502   5                                                              upmost2=50000;
 503   5                                                              yes=0;
 504   5                                                              break;
 505   5                                                      }
 506   4                                              }
 507   3                              case 3: while(1)
 508   3                                              {
 509   4                                                      upmost2--;
 510   4                                                      //statedisplay(num_hourgclock,0xfd);
 511   4                                                      statedisplay(num_hourgclock,0x04);
 512   4                                                      if(s2==0)
 513   4                                                      {
 514   5                                                              delay(10);
 515   5                                                              if(s2==0)
 516   5                                                              {
 517   6                                                                      num_hourgclock++;
 518   6                                                                      if((num_hourgclock==10)&&(num_hoursclock<2))
 519   6                                                                              num_hourgclock=0;
 520   6                                                                      else if((num_hoursclock==2)&&(num_hourgclock==4))
 521   6                                                                              num_hourgclock=0;
 522   6                                                              }
 523   5                                                              while(!s2);
 524   5                                                              upmost2=50000;
 525   5                                                      }
 526   4                                                      if(s3==0)
 527   4                                                      {
 528   5                                                              delay(10);
 529   5                                                              if(s3==0)
 530   5                                                              yes=1;  
 531   5                                                      }       
 532   4                                                      while(!s3);
 533   4                                                      if(upmost2==0|yes==1)
 534   4                                                      {
 535   5                                                              upmost2=50000;
 536   5                                                              yes=0;
 537   5                                                              break;
 538   5                                                      }
 539   4                                              }
 540   3                              case 4: while(1)
 541   3                                              {
 542   4                                                      upmost2--;
 543   4                                                      //statedisplay(num_hoursclock,0xfe);
 544   4                                                      statedisplay(num_hoursclock,0x01);
 545   4                                                      if(s2==0)
 546   4                                                      {
 547   5                                                              delay(10);
 548   5                                                              if(s2==0)
 549   5                                                              {
 550   6                                                                      num_hoursclock++;
 551   6                                                                      if(num_hoursclock==3)
C51 COMPILER V8.05a   DZZ_THESAMEA                                                         09/13/2008 20:03:56 PAGE 10  

 552   6                                                                              num_hoursclock=0;
 553   6                                                              }
 554   5                                                              while(!s2);
 555   5                                                              upmost2=50000;
 556   5      
 557   5                                                      }
 558   4                                                      if(s3==0)
 559   4                                                      {
 560   5                                                              delay(10);
 561   5                                                              if(s3==0)
 562   5                                                              yes=1;  
 563   5                                                      }       
 564   4                                                      while(!s3);
 565   4                                                      if(upmost2==0|yes==1)
 566   4                                                      {
 567   5                                                              upmost2=50000;
 568   5                                                              yes=0;
 569   5                                                              break;
 570   5                                                      }
 571   4                                              }
 572   3                      }
 573   2              }       
 574   1      }
 575          
 576          void voice()//整点报时子函数  
 577          {
 578   1              if((num_minis*10+num_minig==3)&&(!allow))
 579   1              {
 580   2                      flag_voice=1;
 581   2                      if((num_hours*10+num_hourg)>=13)
 582   2                      num_hourf=num_hours*10+num_hourg-12;
 583   2                      else
 584   2                      num_hourf=num_hours*10+num_hourg;
 585   2                      if(num_voice==20)
 586   2                      {
 587   3                              num_voice=0;
 588   3                              beep_f=~beep_f;
 589   3                              if(beep_f==1)
 590   3                              {
 591   4                                      beep=0;
 592   4                                      times++;
 593   4                              }
 594   3                              else
 595   3                                      beep=1;
 596   3                              if(times-1==num_hourf)//报时次数 
 597   3                              {
 598   4                                      times=0;
 599   4                                      allow=1;
 600   4                                      beep=1;
 601   4                                      flag_voice=0;
 602   4                              }
 603   3                      }                       
 604   2              }
 605   1              if(num_minis*10+num_minig!=3)   
 606   1                      {allow=0;}
 607   1      }
 608          
 609          void voice_clock()//闹钟报时子程序  
 610          {
 611   1              if((num_hours==num_hoursclock)&&(num_hourg==num_hourgclock)&&(num_minis==num_minisclock)&&(num_minig==num
             -_minigclock))
 612   1              {
C51 COMPILER V8.05a   DZZ_THESAMEA                                                         09/13/2008 20:03:56 PAGE 11  

 613   2                      if(num_secflag<=5)
 614   2                      beep=0;
 615   2                      else 
 616   2                      {
 617   3                              num_secflag=6;
 618   3                              beep=1;
 619   3                      }
 620   2              }
 621   1      }
 622          void init_sys()         //系统初始化 
 623          {
 624   1              num_sec=0;
 625   1              num_hours=0;
 626   1              num_hourg=0;
 627   1              num_minis=0;
 628   1              num_minig=0;
 629   1      }
 630          
 631          void init_timer2()      //定时器2初始化 
 632          {
 633   1              RCAP2H=0x4c;
 634   1              RCAP2L=0x00;
 635   1              EA=1;
 636   1              ET2=1;
 637   1              TR2=1;
 638   1      }
 639          
 640          void timer2() interrupt 5 using 0               //定时器2中断函数 
 641          {       
 642   1              TF2=0;
 643   1              num++;
 644   1              if(flag_voice)
 645   1              {       
 646   2                      num_voice++;
 647   2              }       
 648   1              if(num==20)        
 649   1              {
 650   2                      num=0;
 651   2                      P1=~P1;
 652   2                      num_sec++;
 653   2                      num_secflag++;
 654   2                      if(num_sec==60)
 655   2                      {
 656   3                              num_sec=0;
 657   3                              num_secflag=0;
 658   3                              num_minig++;
 659   3                              if(num_minig==10)
 660   3                              {
 661   4                                      num_minig=0;
 662   4                                      num_minis++;
 663   4                                      if(num_minis==6)
 664   4                                      {
 665   5                                              num_minis=0;
 666   5                                              num_hourg++;
 667   5                                              if((num_hours<2)&&(num_hourg==10))
 668   5                                              {
 669   6                                                      num_hourg=0;
 670   6                                                      num_hours++;
 671   6                                              }
 672   5                                              else if((num_hours==2)&&(num_hourg<4))
 673   5                                                      num_hourg=0;
 674   5                                              else if((num_hours==2)&&(num_hourg==4)) 
C51 COMPILER V8.05a   DZZ_THESAMEA                                                         09/13/2008 20:03:56 PAGE 12  

 675   5                                              {
 676   6                                                      num_hours=0;
 677   6                                                      num_hourg=0;
 678   6                                              }       
 679   5                                      }
 680   4                              }       
 681   3                      }
 682   2              }
 683   1      }
 684          
 685          void main()                                     //主函数 
 686          {       
 687   1              init_sys();
 688   1              //delay(3);//0.0013
 689   1              //delay(10);
 690   1              while(1)
 691   1              {
 692   2                      if(!flag)//待机显示P 并闪烁  
 693   2                      {
 694   3                              for(i=0;i<185;i++)
 695   3                                      display_wait1();
 696   3                              for(j=0;j<185;j++)
 697   3                                      display_wait2();
 698   3                              settime();//时间设置 
 699   3                              if(temp)
 700   3                                      init_timer2();
 701   3                      }
 702   2                      else if(flag)//正常显示时间  
 703   2                      {
 704   3                              display_scan();
 705   3                              settime();//时间调整 
 706   3                              setclock();//设置闹钟 
 707   3                              voice_clock();//闹钟报时  
 708   3                              voice();//整点报时              
 709   3                      }
 710   2              }
 711   1      }


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =   1639    ----
   CONSTANT SIZE    =     11    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =     32       4
   IDATA SIZE       =   ----    ----
   BIT SIZE         =      7    ----
END OF MODULE INFORMATION.


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

⌨️ 快捷键说明

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