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

📄 main.lst

📁 基于89S52的电子时钟
💻 LST
📖 第 1 页 / 共 3 页
字号:
 413   5                                              }                                             
 414   4                                                      display_time();
 415   4                                                      break;  
 416   4                                      case 4: 
 417   4                                              if(hour<1)
 418   4                                                      hour=23;        
 419   4                                                      else 
 420   4                                                       hour--;        
 421   4                                                      display_time();
 422   4                                                      break;  
 423   4                                      case 5:                                                                 
 424   4                                                      if(minute<1)
 425   4                                                      minute=59;
 426   4                                                      else 
C51 COMPILER V7.06   MAIN                                                                  06/08/2006 23:56:16 PAGE 8   

 427   4                                                  minute--;   
 428   4                                                      display_time();
 429   4                                                      break;  
 430   4                                      case 6:                                 
 431   4                                                      if(second<1)
 432   4                                                      second=59;
 433   4                                                      else 
 434   4                                                      second--;       
 435   4                                                      display_time();
 436   4                                                      break;
 437   4                                      case 7:                                        
 438   4                                                 if(week<2)
 439   4                                                 week=7;
 440   4                                                 else 
 441   4                                                 week--;
 442   4                                                 display_time();
 443   4                                                 break;
 444   4                                  case 8:                                  
 445   4                                                if(alarm_hour1<1)                     
 446   4                                                alarm_hour1=23;
 447   4                            else 
 448   4                            alarm_hour1--;
 449   4                                                display_alarm_time(1);
 450   4                                                break;
 451   4                     case 9:
 452   4                                            
 453   4                                                if(alarm_minute1<1)
 454   4                                                alarm_minute1=59;
 455   4                            else alarm_minute1--;
 456   4                                                display_alarm_time(1);
 457   4                                                break;
 458   4                                 case 10:
 459   4                                        alarm_1_en=0;
 460   4                            display_alarm_time(1);
 461   4                                               break;
 462   4                                      case 11:                                      
 463   4                                                if(alarm_hour2<1)
 464   4                                                alarm_hour2=23;
 465   4                            else 
 466   4                            alarm_hour2--;
 467   4                                                display_alarm_time(2);
 468   4                                                break;
 469   4                                  case 12:                                  
 470   4                                                if(alarm_minute2<1)
 471   4                                                alarm_minute2=59;
 472   4                            else 
 473   4                            alarm_minute2--;
 474   4                                                display_alarm_time(2);
 475   4                                                break;
 476   4                                       case 13:
 477   4                                            alarm_2_en=0;
 478   4                                                display_alarm_time(2);
 479   4                                                break;
 480   4                                                
 481   4                                      default:break;
 482   4                                      }                  
 483   3                           default:  break;
 484   3                        }
 485   2                       Key.Value=0;
 486   2                     } 
 487   1              }
 488          
C51 COMPILER V7.06   MAIN                                                                  06/08/2006 23:56:16 PAGE 9   

 489          void main(void)            //主函数
 490          { 
 491   1        LCMInit();
 492   1        KEYBoardInit();
 493   1       system_initial();         //系统开机初始化
 494   1       while(1)
 495   1        {    
 496   2        key_ctrl();    //键盘扫描  
 497   2        if(key_time>=20)//如果20秒内无任何按键按下,则自动返回
 498   2        {  
 499   3        WriteCommandLCM(0xcb,0);
 500   3        LCD_prints("     ");//清除相关显示
 501   3        menu_status=0;
 502   3        key_time=0;
 503   3        }  
 504   2        //刷新显示时间
 505   2         if(time_1s_ok==1)
 506   2         {
 507   3         time_1s_ok=0;
 508   3         key_time++;   
 509   3         if(menu_status<7)
 510   3         display_time(); 
 511   3         if((alarm_1_ok==1)||(alarm_2_ok==1))//如果触发了闹钟,则对闹铃持续时间进行秒计时
 512   3         ring_time++;
 513   3         //检测闹铃时间
 514   3         if((alarm_1_en)&&(alarm_1_ok==0))
 515   3         {  
 516   4         if(alarm_hour1==hour)
 517   4           {     
 518   5           if(alarm_minute1==minute)
 519   5            {
 520   6                if(second==0)//为了在闹铃被按键取消以后,用户能立即设置,所以强制在秒为0时才匹配/进行检测
 521   6                {
 522   7            alarm_1_ok=1;//置闹铃1标志
 523   7            alarm_1_off=0;      
 524   7                ring_time=0;//清闹铃时间,同时两个闹钟的闹铃时间不叠加
 525   7            }
 526   6                }
 527   5               }
 528   4              }  
 529   3         if((alarm_2_en)&&(alarm_2_ok==0))//如果开了闹钟且闹钟当前没有正在闹铃,则进行检测
 530   3         {  
 531   4         if(alarm_hour2==hour)
 532   4          {
 533   5          if(alarm_minute2==minute)
 534   5           {
 535   6               if(second==0)
 536   6               {
 537   7           alarm_2_ok=1; //置闹铃2标志
 538   7           alarm_2_off=0;     
 539   7               ring_time=0;
 540   7               }
 541   6               }
 542   5              }
 543   4         }
 544   3       
 545   3        //执行闹铃声音提示
 546   3        if(alarm_1_ok==1)
 547   3        {
 548   4        if(alarm_1_off==0)//如果用户没有按下停止键
 549   4          {
 550   5           if(ring_time<120)
C51 COMPILER V7.06   MAIN                                                                  06/08/2006 23:56:16 PAGE 10  

 551   5                    {
 552   6                      WriteCommandLCM(0xc0,0);
 553   6                      LCD_printc('1');
 554   6                       long_bell();
 555   6                       led_on;
 556   6                     }
 557   5             else 
 558   5                     {
 559   6                     ring_time=0;
 560   6                     led_off;
 561   6                             alarm_1_ok=0;
 562   6                     }    
 563   5            
 564   5          }  
 565   4          else 
 566   4                   {
 567   5                     ring_time=0;
 568   5                     led_off;
 569   5                             alarm_1_ok=0;
 570   5                   }  
 571   4        }
 572   3         
 573   3       if(alarm_2_ok==1)
 574   3         {   
 575   4         if(alarm_2_off==0)
 576   4         {   
 577   5         if(++ring_time<120)
 578   5            {
 579   6            WriteCommandLCM(0xc0,0);
 580   6            LCD_printc('2');
 581   6            long_bell();
 582   6            led_on;
 583   6            }
 584   5         else 
 585   5           {
 586   6           ring_time=0;
 587   6           led_off;
 588   6           alarm_2_ok=0;
 589   6           }  
 590   5         }
 591   4         else 
 592   4             {
 593   5             ring_time=0;
 594   5           led_off;
 595   5           alarm_2_ok=0; 
 596   5             }
 597   4      
 598   4        }
 599   3        }
 600   2      
 601   2       }
 602   1      }
 603          
 604           
 605          
 606          


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =   1668    ----
   CONSTANT SIZE    =     86    ----
   XDATA SIZE       =   ----    ----
C51 COMPILER V7.06   MAIN                                                                  06/08/2006 23:56:16 PAGE 11  

   PDATA SIZE       =   ----    ----
   DATA SIZE        =     13    ----
   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 + -