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

📄 clock_main.lst

📁 基于单片机设计的数字钟的设计
💻 LST
📖 第 1 页 / 共 2 页
字号:
 282   4                                       if (flag2==4){
 283   5                                        alarm[num][0]=alarm[num][0]+1;
 284   5                                        dispbuf[2]=dispbuf[2]+1;
 285   5                                        }
 286   4                                       if (flag2==8){
 287   5                                        alarm[num][0]=alarm[num][0]+10;
 288   5                                        dispbuf[3]=dispbuf[3]+1;
 289   5                                        }
 290   4                                       if (flag2==16){
 291   5                                        al_state=al_state|state;
 292   5                                        dispbuf[4]= al_state&&flag2+10;
 293   5                                        }
 294   4                                       if (flag2==32){
 295   5                                        num=num+1;
 296   5                                        state=state<<1;
 297   5                                        dispbuf[0]=alarm[num][1]%10; // 刷新数据区  
 298   5                                    dispbuf[1]=alarm[num][1]/10;
 299   5                        dispbuf[2]=alarm[num][0]%10;
 300   5                                dispbuf[3]=alarm[num][0]/10; }
 301   4                            //dispbuf[4]=al_state&&state+10;
 302   4                                dispbuf[5]=num;
 303   4                                        if (al_state&state)
C51 COMPILER V8.02   CLOCK_MAIN                                                            01/05/2008 15:47:41 PAGE 6   

 304   4                                                dispbuf[4]=10;
 305   4                                                else
 306   4                                                dispbuf[4]=11;
 307   4                                        
 308   4                                } //end if (key==key2)  修改闹铃时间操作(+)
 309   3                               if (key==KEY3)
 310   3                               {
 311   4                                       if (flag2==0x01){
 312   5                                               alarm[num][1]=alarm[num][1]-1;
 313   5                                               dispbuf[0]=dispbuf[0]-1;
 314   5                                               }
 315   4                                       if (flag2==0x02){
 316   5                                        alarm[num][1]=alarm[num][1]-10;
 317   5                                        dispbuf[1]=dispbuf[1]-1;
 318   5                                        }
 319   4                                       if (flag2==0x04){
 320   5                                        alarm[num][0]=alarm[num][0]-1;
 321   5                                       dispbuf[2]=dispbuf[2]-1;
 322   5                                       }
 323   4                                       if (flag2==0x08){
 324   5                                        alarm[num][0]=alarm[num][0]-10;
 325   5                                      dispbuf[3]=dispbuf[3]-1;
 326   5                                       }
 327   4                                       if (flag2==0x10){
 328   5                                       state=~state;
 329   5                                        al_state=al_state&(state);
 330   5                                        state=~state;
 331   5                                        dispbuf[4]=al_state&&flag2+10;
 332   5                                        }
 333   4                                       if (flag2==32){
 334   5                                        num=num-1; 
 335   5                                        state=state>>1;                                 
 336   5                                        dispbuf[0]=alarm[num][1]%10; // 刷新数据区  
 337   5                                    dispbuf[1]=alarm[num][1]/10;
 338   5                        dispbuf[2]=alarm[num][0]%10;
 339   5                                dispbuf[3]=alarm[num][0]/10;  }
 340   4                            //dispbuf[4]=al_state&&state+10;
 341   4                                dispbuf[5]=num;
 342   4                                        if (al_state&state)
 343   4                                                dispbuf[4]=10;
 344   4                                                else
 345   4                                                dispbuf[4]=11;
 346   4                                         
 347   4                               } //end if (key==key3)  修改闹铃时间操作(-)
 348   3                       if (key==KEY4)
 349   3                                       if(flag2<32)
 350   3                                          flag2=flag2<<1;   // 进行移位操作 
 351   3                                       else  
 352   3                                               flag2=0x01;
 353   3                           delay_ms(200) ;
 354   3                      }       // end (key!=key1) 完成闹钟设置
 355   2      
 356   2              
 357   2                       key=KeyBord();
 358   2                       while( key==KEY1)
 359   2                              key=KeyBord();         // 等待按间释放
 360   2                  flag2=0;
 361   2                      TR1=0;    
 362   2                      dispbuf[0]=second%10;   // 刷新数据区  
 363   2                      dispbuf[1]=second/10;
 364   2                      dispbuf[2]=minite%10;
 365   2                      dispbuf[3]=minite/10;
C51 COMPILER V8.02   CLOCK_MAIN                                                            01/05/2008 15:47:41 PAGE 7   

 366   2                      dispbuf[4]=hour%10;
 367   2                      dispbuf[5]=hour/10;     
 368   2                      
 369   2                      flag2=1;               //开始时间设置 
 370   2              TR1=1;
 371   2                      flag1=0;
 372   2                      /*
 373   2                      key=KeyBord();
 374   2                      while( key==KEY1)
 375   2                              key=KeyBord();         // 等待按键释放  */
 376   2                      while (key!=KEY1)
 377   2                       {                       
 378   3                              
 379   3                      
 380   3                               if (key==KEY2)
 381   3                               {
 382   4                                       if (flag2==1){                                  
 383   5                                              second=second+1;
 384   5                                          dispbuf[0]=second%10;
 385   5                                              }
 386   4                                       if (flag2==2){
 387   5                                        second=second+10;
 388   5                                       dispbuf[1]=second/10;
 389   5                                       }
 390   4                                       if (flag2==4){
 391   5                                        minite=minite+1;
 392   5                                    dispbuf[2]=minite%10;
 393   5                                      }
 394   4                                       if (flag2==8){
 395   5                                        minite=minite+10;
 396   5                                       dispbuf[3]=minite/10;
 397   5                                       }
 398   4                                       if (flag2==16){
 399   5                                        hour=hour+1;
 400   5                                        dispbuf[4]=hour%10;
 401   5                                        }
 402   4                                       if (flag2==32){
 403   5                                        hour=hour+10;
 404   5                                        dispbuf[5]=hour/10;
 405   5                                         }
 406   4                               } //end if (key==key2)  修改时间操作(+)
 407   3                               if (key==KEY3)
 408   3                               {
 409   4                                       if (flag2==0x01){                                       
 410   5                                              second=second-1;
 411   5                                         dispbuf[0]=second%10;
 412   5                                         }
 413   4                                       if (flag2==0x02){
 414   5                                        second=second-10;
 415   5                                       dispbuf[1]=second/10;
 416   5                              }
 417   4                                       if (flag2==0x04){
 418   5                                        minite=minite-1;
 419   5                                       dispbuf[2]=minite%10;
 420   5                                      }
 421   4                                       if (flag2==0x08){
 422   5                                        minite=minite-10;
 423   5                                       dispbuf[3]=minite/10;
 424   5                                       }
 425   4                                       if (flag2==0x10){
 426   5                                        hour=hour-1;
 427   5                                        dispbuf[4]=hour%10;
C51 COMPILER V8.02   CLOCK_MAIN                                                            01/05/2008 15:47:41 PAGE 8   

 428   5                                        }
 429   4                                       if (flag2==0x20){
 430   5                                        hour=hour-10;
 431   5                                        dispbuf[5]=hour/10; 
 432   5                                        }
 433   4                               } //end if (key==key2)  修改时间操作(-)
 434   3                       if (key==KEY4)
 435   3                                       if(flag2<32)
 436   3                                          flag2=flag2<<1;   // 进行移位操作 
 437   3                                       else
 438   3                                               flag2=0x01;  
 439   3                            delay_ms(300) ;
 440   3                                key=KeyBord();
 441   3                      }// end (key!=key1) 完成时间设置        
 442   2                /*
 443   2                        key=KeyBord();
 444   2                       while( key==KEY1)              // 等待按间释放
 445   2                              key=KeyBord();  */                      
 446   2                      flag2=0;                                //关闭闪烁控制 
 447   2                      TR1=0;
 448   2                      flag1=1;                                //正常时间显示
 449   2                      dispbuf[0]=second%10;   // 刷新数据区  
 450   2                      dispbuf[1]=second/10;
 451   2                      dispbuf[2]=minite%10;
 452   2                      dispbuf[3]=minite/10;
 453   2                      dispbuf[4]=hour%10;
 454   2                      dispbuf[5]=hour/10;     
 455   2              }// end if (key==KEY1) 主功能键设置完 
 456   1      
 457   1      
 458   1               key=KeyBord();
 459   1                       while( key==KEY1)              // 等待按间释放
 460   1                              key=KeyBord();                  
 461   1              
 462   1           //次功能键
 463   1               key=KeyBord();
 464   1               if (key==KEY2)                //查看日期 
 465   1                       
 466   1                       while (key!=0x00)
 467   1               { 
 468   2                       
 469   2                        flag1=0 ;                               // 暂停时间显示
 470   2                        dispbuf[0]=(uchar)(*p_month_day%32)%10;   // 刷新数据区  
 471   2                        dispbuf[1]=(uchar)(*p_month_day%32)/10;
 472   2                        dispbuf[2]=(uchar)(*p_month_day/32)%10;
 473   2                        dispbuf[3]=(uchar)(*p_month_day/32)/10;
 474   2                        dispbuf[4]=7;
 475   2                        dispbuf[5]=0;
 476   2                        key=KeyBord();        
 477   2               }         
 478   1               
 479   1              flag1=1;                                        // 恢复时间显示 
 480   1              key=KeyBord();
 481   1               if (key==KEY3)                         // 省电控制 
 482   1               {       
 483   2                   flag1=0 ;                            // 暂停时间显示
 484   2                       delay_ms(10) ;                         //如果KEY2常按则进入省电模式 
 485   2                       if (key==KEY3)
 486   2                               sleep=!sleep;  //  进入省电模式 
 487   2                       if(sleep==1)
 488   2                               flag1=0;           
 489   2               }
C51 COMPILER V8.02   CLOCK_MAIN                                                            01/05/2008 15:47:41 PAGE 9   

 490   1      
 491   1               key=KeyBord();                         // 查看闹钟设置
 492   1               flag2=0x00 ;
 493   1                          
 494   1               if (key==KEY4)
 495   1               { 
 496   2                      uchar  disp=0x01;
 497   2                  num=0;
 498   2                      flag1=0;        
 499   2                      key=KeyBord() ;    
 500   2                       while (key&KEY4)
 501   2                       {               
 502   3                             
 503   3                               
 504   3                               if (key==(KEY5))       
 505   3                               {
 506   4                                        num=num+1;
 507   4                                        disp=disp<<1;
 508   4                               }
 509   3                               if (key==(KEY6) )      
 510   3                               {
 511   4                                        num=num-1;
 512   4                                       disp=disp>>1;
 513   4                               }
 514   3                              dispbuf[0]=alarm[num][1]%10;
 515   3                              dispbuf[1]=alarm[num][1]/10;
 516   3                              dispbuf[2]=alarm[num][0]%10;
 517   3                              dispbuf[3]=alarm[num][0]/10;            
 518   3                               
 519   3                              dispbuf[5]=num;
 520   3                          delay_ms(200) ;
 521   3                              key=KeyBord();
 522   3                       }
 523   2                       flag2=0x00 ;   
 524   2                }
 525   1                        
 526   1               delay_ms(200) ;        
 527   1      }
 528          void alarm_s(void)
 529          {
 530   1        uchar i ,j=0x01;
 531   1        speak=0;
 532   1         for (i=0;i<8;i++,j=j>>1)
 533   1         if (hour==alarm[i][0])
 534   1                if (minite==alarm[i][1])
 535   1                  if (al_state&j)
 536   1                      sound_al();
 537   1                  else
 538   1                     { speak=0; TR1=0 ;}
 539   1      }
 540          void sound_al(void)
 541          {    speak=1;
 542   1           //delay_ms(1000);
 543   1               }
 544           
 545          void ring (  )     //整点报 
 546          {       flag0=1;
 547   1         if((minite==0)&&(second>=55))   //前五声低音 
 548   1                   { TR1=1;  flag0=0x40;  }   // 启动定时器 发出滴滴声        // 设置定时标志         
 549   1         if( (minite==1)&&(second==0))    //整点高音      
 550   1               {  TR1=1; flag0=0x80;  }   // 启动定时器 发出滴滴声  // 设置定时标志             
 551   1            
C51 COMPILER V8.02   CLOCK_MAIN                                                            01/05/2008 15:47:41 PAGE 10  

 552   1        
 553   1      }


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =   1729    ----
   CONSTANT SIZE    =    766    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =     64       3
   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 + -